需要对commonJS模块进行一些澄清

时间:2014-04-14 07:20:49

标签: javascript node.js gruntjs commonjs browserify

我正在使用nodeJS,通常,我会执行模块声明,并且要求:

controller.js
    exports.getApp = {value : "value", funct: function(){}}
OR
    module.exports = {value : "value", funct: function(){}}

app.js
    var controller = require('./controller')

这很有效。

现在我想在客户端使用CommonJS,所以在将JS提供给客户端之前,我开始使用grunt-browserify来处理我的需求。

目前我在客户端JS上这样做:

controller.js
    controller = {value : "value", funct: function(){}}
    module.exports = controller;

app.js
    var controller = require('./controller');

这也有效,但前提是控制器是一个全局变量。

如果我在controller.js中声明“controller”之前使用了关键字“var”,那么“控制器”将在app.js中未定义

为什么?导出对象不应该在导出对象中可用,它是否来自模块内的本地或全局变量?

另一个问题:如果模块B需要模块A ,我不能要求模块A中的模块B.模块A中模块B的要求导致空对象。也许我没有正确地做到这一点。

0 个答案:

没有答案