Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript coffee-cj覆盖每个类的module.exports_Javascript_Coffeescript_Commonjs - Fatal编程技术网

Javascript coffee-cj覆盖每个类的module.exports

Javascript coffee-cj覆盖每个类的module.exports,javascript,coffeescript,commonjs,Javascript,Coffeescript,Commonjs,我只是不知道这应该如何工作:据我所知,在CoffeeScript中定义类/模块的一种非常常见的方法是在文件顶部使用module.exports=class MyClass。我还猜想,coffee编译器将促进这种模式。以这个极简主义者为例: #src/Foo.coffee module.exports=类Foo #src/酒吧咖啡 module.exports=类栏 然后编译并使用以下命令将两者连接起来: coffee -cj all.js src 结果是all.js,其中module.exp

我只是不知道这应该如何工作:据我所知,在CoffeeScript中定义类/模块的一种非常常见的方法是在文件顶部使用
module.exports=class MyClass
。我还猜想,coffee编译器将促进这种模式。以这个极简主义者为例:

#src/Foo.coffee
module.exports=类Foo
#src/酒吧咖啡
module.exports=类栏
然后编译并使用以下命令将两者连接起来:

coffee -cj all.js src
结果是all.js,其中module.exports为每个模块重新定义/覆盖:

//由CoffeeScript 1.4.0生成
(功能(){
var-Bar,Foo;
module.exports=Bar=(函数(){
函数栏(){}
返回杆;
})();
module.exports=Foo=(函数(){
函数Foo(){}
返回Foo;
})();
}).打电话(这个);
如果我现在尝试这样做,结果将是一个错误,指出找不到Foo模块cound,这是正确的,因为最后一个模块(此处:Bar)已重新定义module.exports以仅包含其自身

Foo=require('Foo');

我想这是一个很难回答的问题,但我似乎在任何地方都找不到一个好答案。

这几乎是我想要的行为。。。你将两个模块合并为一个模块,他们都希望处于顶级水平,因此其中一个模块必须获胜

一种可能的解决办法如下:

# src/Foo.coffee
module.exports.Foo = class Foo

# src/Bar.coffee
module.exports.Bar = class Bar
这将产生:

# all.js
(function() {
  var Bar, Foo;

  module.exports.Bar = Bar = (function() {
    function Bar() {}
    return Bar;
  })();

  module.exports.Foo = Foo = (function() {
    function Foo() {}
    return Foo;
  })();

}).call(this);
然后你可以使用(在CoffeeScript中)


要获取其中包含的类

是的,您不能真正为此使用
--join
选项。如果您需要使用
--join
,我建议您以不同的方式构造代码。
{Foo, Bar} = require "all"