私はこれがどのように機能するかについて頭を悩ませることができません.CoffeeScriptでクラス/モジュールを定義するかなり一般的な方法module.exports = class MyClass
は、ファイルの先頭で使用することです。また、コーヒー コンパイラがこのパターンを容易にするだろうと推測します。このミニマリストの例を見てみましょう:
# src/Foo.coffee
module.exports = class Foo
# src/Bar.coffee
module.exports = class Bar
次に、2 つをコンパイルして結合します。
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');
これは非常に初歩的な質問だと思いますが、どこにも良い答えが得られないようです。