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"
CẬP NHẬT: Bạn cũng cần chạy các tệp .coffee
với coffee
, trừ khi bạn biên dịch chúng trước.
CẬP NHẬT 2: Cách bạn cấu trúc các mô hình của mình tùy thuộc vào bạn. Tôi thích mô hình ở trên (nơi mô-đun đơn giản chỉ xuất cho một hàm - đó là khi bạn cần chỉ định cho module.exports
vì bạn không thể chỉ định cho exports
) nhưng những người khác thích cấu trúc như sau:
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
Trong đó mỗi mô-đun xuất một đối tượng với một hoặc nhiều thuộc tính.
Nguồn
2012-02-27 13:11:24
tôi muốn kêu vang trong và nói rằng tôi đồng ý với Linus và làm thế nào một module nên xuất khẩu chỉ lớp. Tất nhiên, có một số ngoại lệ, nhưng tổng thể đó là thực hành tốt. –
(Lời xin lỗi cho OT!) - @Linus: Bạn có thể giới thiệu phương pháp sử dụng kỹ thuật tương tự ở phía khách hàng không? RequireJS (có vẻ như rất nhiều chi phí)? – polarblau
@polarblau: Chắc chắn, tôi sử dụng [stitch] (https://github.com/sstephenson/stitch) hoạt động rất tốt cho tôi. Nhỏ, nhẹ và cung cấp cho bạn 'yêu cầu' trên máy khách. –