使用javascript和browserify理解require()与module.exports

时间:2015-04-20 09:51:38

标签: javascript node.js browserify

我是一名c ++程序员,我目前正在使用javascript进入深层,并要求快速游泳。我正在使用browserify,所以我能够使用node.js用来访问其他文件中的代码的require函数。现在我所做的一切似乎都很好,我只是不确定我是否正确地做到了。

//a.js
module.exports = function(){
    alert("hello world");
}

//b.js
var myClass = new MyClass();
module.exports = myClass;

//c.js
var a = require("./a.js");
a();
var b = require(./b.js");
b.prototype.test = 555;

//d.js
function () {
    var a = require("./a.js");
    a();
    var b = require(./b.js");
    assert(b.test === 555);
}
function () { // duplicated require called inside same file but different function
    var a = require("./a.js");
    a();
}

所以在我要使用a.js的每个函数和每个文件中,我是否必须调用require函数?似乎它会有点复杂。有一个更好的方法吗?还假设在d.js之前运行c.js会断言传递或者是否会导致创建myClass的副本,因此C和D之间的对象是不同的?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

require功能的结果已缓存,因此仅在单个流程中

顺便说一句,我无法理解为什么你require a.js两次。为什么不做呢

//d.js
var a = require("./a.js");
function () {
    a();
    var b = require("./b.js");
    assert(b.test === 555); // success!
}
function () { // no dupes!
    a();
}