Tôi có một dự án nodejs đang nhận được khá lớn khá nhanh. Do sự hiểu biết hạn chế của tôi về các mô-đun và yêu cầu tôi chắc chắn rằng tôi có thể làm một số việc để làm sạch mã và cấu trúc.Cấu trúc của dự án nodejs lớn - Cách xử lý các phụ thuộc lẫn nhau
<app dir>
-app.js
- <modules>
-module1.js
-module2.js
- <routes>
-route1.js
-route2.js
- <utilties>
-utility1.js
-utility2.js
- <authentication>
-local.js
-basic.js
-index.js
Ứng dụng của tôi khá lộn xộn vì tôi có sự phụ thuộc giữa các tệp của mình. IE Tôi muốn truyền các mô hình và xác thực của mình đến các tuyến đường của mình, các tiện ích có thể được sử dụng bởi một loạt các thứ.
var app = express();
... // do express setup
var authenticationStrategy = // get auth strategy from config
var auth = require('./auth)(authenticationStrategy);
var utility1 = require('./utilities/utility1.js');
var utility2 = require('./utilities/utility2.js');
var utilities = {
utility1: utility1,
utility2: utility2
}
var Model1 = require('./models/model1')(utilities);
var Model2 = require('./models/model2')(utility1);
var models = {
Model1: Model1,
Model2: Model2
}
// Dynamically import all routes
fs.readdirSync('routes').forEach(function(file) {
if (file[0] == '.') return;
var route = file.substr(0, file.indexOf('.'));
require('./routes/' + route)(app, models, utilities);
});
...
etc
bây giờ tôi biết rằng tôi có thể đặt một index.js trong mỗi thư mục để làm sạch mọi thứ lên nhưng vẫn để lại trong tôi với việc phải tiết kiệm tắt những thứ như các tiện ích và thông qua đó vào khác đòi hỏi các cuộc gọi.
tôi có thể đưa từng yêu cầu trong module thấp chỉ nơi cần thiết của nó nhưng sau đó tôi kết thúc leo cấu trúc thư mục với tôi yêu cầu mà cũng có vẻ lộn xộn, ví dụ:
model1.js: var utility1 = require (' ../utilities/utility1.js ');
Về cơ bản, tôi nghĩ rằng sự cố của tôi là các mô-đun trong thư mục cấp thấp hơn phụ thuộc vào các mô-đun khác trong các thư mục khác. Với tôi cảm thấy như tôi nên kéo tất cả các phụ thuộc trong app.js và chuyển chúng vào các mô-đun yêu cầu cần chúng.
Bất kỳ lời khuyên nào. Tôi đã cố gắng để tái cơ cấu này trong một vài ngày và tôi chỉ giữ đập đầu của tôi chống lại bức tường như không có gì tôi làm là thực sự làm cho nó bất kỳ tốt hơn.
Tốt nhất sẽ là bố cục nút dự án tốt sử dụng những thứ như mongoose, express, w/mô-đun tùy chỉnh. và hiển thị một cách tốt để xử lý các phụ thuộc lẫn nhau giữa các mô-đun.
Nó giúp trong thực tế là không có 'hoàn hảo' hoặc xây dựng trong dung dịch. Về cơ bản, tôi bị mắc kẹt với yêu cầu ('../../ utilities/util1.js') trong các mô-đun chứa trong các thư mục. Hoặc là hoặc sử dụng một chức năng tùy chỉnh để ẩn mà bạn phải sử dụng đường dẫn tương đối. – lostintranslation