【发布时间】:2015-09-07 11:08:52
【问题描述】:
我在一个项目中使用 browserify 并且正在运行以下内容:
我有一个文件 test.js。在 test.js 中只有以下内容:
var test = 'test';
现在,在同一个目录中,我有我的主文件“app.js”。我需要 test.js 并尝试像这样访问“测试”:
var testing = require(./test.js);
alert(test);
这失败了,控制台返回'test is undefined'。
现在,我确实尝试将其放入“test.js”中:
module.exports = {
test: 'test'
}
以及在 app.js 中:
var testing = require(./test.js);
alert(testing.test);
这确实有效,但这不是我想要的。我不想在对象中定义每个变量、函数等。我希望在 app.js 中的代码之前由 gulp 写入 test.js 代码的整个文件,就好像它是一个服务器包含一样,或者好像两个文件都在“head”元素中并且 test.js 被写入首先。
这种行为甚至可能吗?
【问题讨论】:
-
“这种行为甚至可能吗?” 可能会使用一些自定义预处理脚本,但这会使您的代码更难维护。例如。在每个包含
test.js的文件中,您必须记住在该文件中声明了哪些变量,以免意外覆盖它们。您基本上需要全局变量,但是应该避免使用全局变量是有原因的。如果您只是想“自动导出”所有定义的变量,那是不可能的。也许您应该查看 ES6 模块定义,这将允许您编写export var test = 'test';。 -
但这就是 CommonJS 模块应该如何工作的......你可以使用全局变量(不好的做法)。 Google -> Node.js 全局变量
标签: javascript gulp require browserify