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

understanding require() with module.exports with javascript and 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 吗?似乎它会变得有点令人费解。有一个更好的方法吗?还假设 c.js 在 d.js 之前是 运行 断言将通过还是会导致创建 myClass 的副本,以便 C 和 D 之间的对象不同?

感谢您的帮助。

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();
}