理解需要()与module.exports与JavaScript和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我必须把需求调用? 似乎会变得有点复杂。 有一个更好的方法吗? 另外假设c.js是在d.js之前运行的,断言是否通过,或者是否会导致myClass创build副本,因此C和D之间的对象是不同的?

谢谢你的帮助。

require函数的结果被caching,所以它只会在一个进程中相同。

顺便说一句,我不明白为什么你require两次。 为什么不这样做

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