2 回答
TA贡献1805条经验 获得超9个赞
我可以为每个属性导出和所需模块G对象分配局部变量,但是显然,将每个变量手动添加到测试文件以对应G对象是一个繁琐的过程。
不,这就是应该的工作方式。您-并且只有您-负责模块范围中存在哪些局部变量。所包含模块的“导出变量”中的任何更改均不应破坏您的代码。
访问导入的模块上的属性(具有自选名称)是一种方法。这与Python import app或相当import app as g。
如果您希望某些特殊属性作为局部变量,通常会像在Python中一样手动选择它们from app import DATA, F1。在JS中,您将需要一个多条var语句,就像您在问题中显示的那样。但是,有一个语法功能称为解构分配,这将使此操作更加流畅。您可以在JavaScript 1.7+(Gecko),CoffeeScript或EcmaScript 6中使用它:
var {DATA, F1} = require("app.js");
有什么办法可以自动执行此操作?
是的,不是。您不应该这样做,但是可以-就像Python的皱眉一样from app import *。引用他们说的话,对于JavaScript同样如此:
[它]在解释器中引入了一组未知的名称,可能隐藏了您已经定义的某些内容。
请注意,通常不赞成*从模块或包进行导入,因为这通常会导致可读性差的代码。但是,可以使用它来保存交互式会话中的键入。
在JavaScript中,您可以[1] 使用with-statement:
with (require("app.js")) {
…
}
[1]:并非处于ES5.1 严格模式下 -建议进行优化
TA贡献1828条经验 获得超13个赞
好吧,我的项目基本上是在JS,像顶部的解释coffee-script
,我想有一个变量DATA
如DATA
不G.DATA
在测试过程中。到目前为止,我在同一app.js
文件中有一个测试代码,但是如果可能的话,我想将对象(在这种情况下G
)中的变量导出到单独的文件-中test.js
。
添加回答
举报