我只是无法理解它应该如何工作:据我了解,在 CoffeeScript 中定义类/模块的一种非常常见的方法是module.exports = class MyClass
在文件顶部使用。我也猜想咖啡编译器会促进这种模式。举这个极简主义的例子:
# src/Foo.coffee
module.exports = class Foo
# src/Bar.coffee
module.exports = class Bar
然后编译并加入两者:
coffee -cj all.js src
结果是 all.js,其中 module.exports 为每个模块重新定义/覆盖:
// Generated by CoffeeScript 1.4.0
(function() {
var Bar, Foo;
module.exports = Bar = (function() {
function Bar() {}
return Bar;
})();
module.exports = Foo = (function() {
function Foo() {}
return Foo;
})();
}).call(this);
如果我现在尝试这样做,结果将是一个错误,指出找不到 Foo 模块,这是正确的,因为最后一个模块(此处:Bar)已将 module.exports 重新定义为仅包含它自己。
Foo = require('foo');
我想这是一个相当菜鸟的问题,但我似乎无法在任何地方得到一个好的答案。