Bạn có thể tiết kiệm cho mình tất cả các mã soạn sẵn của dây lên các module của bạn nếu bạn sử dụng một khuôn khổ dependency injection
This answer danh sách một vài trong số họ. Tôi cũng đã xây dựng một simpler DI framework here.
EDIT: dưới đây là một bản sao hình thành câu trả lời trong trường hợp trang đó thay đổi
require
là cách quản lý phụ thuộc vào Node.js và chắc chắn nó là trực quan và hiệu quả, nhưng nó cũng có những hạn chế của nó.
Lời khuyên của tôi là hãy xem xét một số thùng chứa Dependency Injection hiện có cho Node.js để có ý tưởng về ưu điểm/nhược điểm của chúng. Một số trong số đó là:
Chỉ cần đến tên một vài.
Bây giờ câu hỏi thực sự là, bạn có thể đạt được điều gì với vùng chứa DI Node.js, so với đơn giản require
?
Ưu điểm: testability
- tốt hơn: module chấp nhận phụ thuộc của họ như là đầu vào
- Inversion of Control: quyết định làm thế nào để dây module của bạn mà không cần chạm vào mã chính của ứng dụng.
- thuật toán tùy chỉnh để giải quyết các mô-đun: phụ thuộc có số nhận dạng "ảo", thường chúng không bị ràng buộc vào đường dẫn trên hệ thống tệp.
- Khả năng mở rộng tốt hơn: được bật bởi số nhận dạng IoC và "ảo".
- khác công cụ ưa thích nhất:
- Async khởi
- quản lý vòng đời Mô-đun
- Khả năng mở rộng của các container DI tự
- có thể dễ dàng thực hiện trừu tượng mức độ cao hơn (ví dụ AOP)
Nhược điểm:
- Khác với trải nghiệm "Node.js": không sử dụng
require
chắc chắn có cảm giác như bạn đang lệch khỏi cách suy nghĩ của nút.
- Mối quan hệ giữa sự phụ thuộc và triển khai của nó không phải lúc nào cũng rõ ràng. Một phụ thuộc có thể được giải quyết trong thời gian chạy và bị ảnh hưởng bởi các thông số khác nhau. Mã này trở nên khó khăn hơn để hiểu và gỡ lỗi
- chậm thời gian khởi động
- đáo hạn (tại thời điểm này): không ai trong số các giải pháp hiện nay là thực sự phổ biến tại thời điểm này, vì vậy không quá nhiều hướng dẫn, không có hệ sinh thái, không chiến thử nghiệm.
- Một số vùng chứa DI sẽ không hoạt động tốt với các trình bao gói mô-đun như Browserify và Webpack.
có thể trùng lặp http://stackoverflow.com/questions/8931239/how-to-access-variables-declared-in-main-app-js-in-seperate-route-files-in-node/8931366 # 8931366 –