我有2類文件:節點CoffeeScript的類文件和繼承
foo.coffee:class Foo
bar.coffee:class Bar extends Foo
如何定義這些類,使他們在全球範圍內提供?我在Bar
中得到Foo
未定義的錯誤。
我有一個index.js文件,我打電話node
來運行腳本。這裏是index.js的內容,我很可能這樣做是錯的也:
exports.Foo = require("./foo")
exports.Bar = require("/bar")
我有2類文件:節點CoffeeScript的類文件和繼承
foo.coffee:class Foo
bar.coffee:class Bar extends Foo
如何定義這些類,使他們在全球範圍內提供?我在Bar
中得到Foo
未定義的錯誤。
我有一個index.js文件,我打電話node
來運行腳本。這裏是index.js的內容,我很可能這樣做是錯的也:
exports.Foo = require("./foo")
exports.Bar = require("/bar")
foo.coffee:
class Foo
// ...
module.exports = Foo
bar.coffee:
Foo = require "./foo"
class Bar extends Foo
// ...
module.exports = Bar
index.coffee:
exports.Foo = require "./foo"
exports.Bar = require "./bar"
更新:除非先編譯它們,否則還需要使用coffee
運行.coffee
文件。
更新2:您如何構建模型取決於您。我喜歡上面的圖案(其中簡單的模塊只導出的函數 - 這時候你需要分配給module.exports
因爲你不能簡單地分配給exports
)但也有人在這樣的結構:
foo.coffee:
class Foo
// ...
exports.Foo = Foo
bar.coffee:
Foo = require("./foo").Foo
class Bar extends Foo
// ...
exports.Bar = Bar
index.coffee:
exports.Foo = require("./foo").Foo
exports.Bar = require("./bar").Bar
其中每個模塊導出包含一個或多個屬性的對象。
你也可以這樣寫:
class @MyClass
[...]
{MyClassName} = require './myclassFile'
myClass = new MyClassName
我想幫腔,說我和Linus以及如何模塊應該只導出類的同意。當然,也有一些例外,但總的來說這是很好的做法。 – 2012-03-02 16:15:19
(道歉OT!) - @Linus:你能推薦一種在客戶端使用相同技術的方法嗎? RequireJS(似乎喜歡很多開銷)? – polarblau 2012-11-23 08:26:14
@polarblau:當然,我使用[stitch](https://github.com/sstephenson/stitch),這對我來說效果很好。體積小,重量輕,可以在客戶端提供「需求」。 – 2012-11-23 10:09:07