Nodejs. En iyi yol ayrı modüller halinde ortak değişkenleri geçmek için
Ana uygulama ve Kimlik Doğrulama uygulaması için modül olarak ayrı yönlendirici dosyaları kullanıyorum. En iyi yolu yönlendiriciler içine değişkenleri(db istemci) geçmek alamıyorum. Bu koda veya geçiş yapmak istemiyorum:
module.exports = function(app, db) {
Belki de en iyi singleton kayıt kullanın veya küresel db değişken kullanmanın yolu var mı?
Tasarım desenleri ile experiense nedir? Hangi yol en iyisi ve neden?
CEVAP
Bağımlılık enjeksiyon kullanarak, şey, iyi bir üslup olarak geçmek bulduk. Aslında var gibi bir şey olurdu:
// App.js
module.exports = function App() {
};
// Database.js
module.exports = function Database(configuration) {
};
// Routes.js
module.exports = function Routes(app, database) {
};
// server.js: composition root
var App = require("./App");
var Database = require("./Database");
var Routes = require("./Routes");
var dbConfig = require("./dbconfig.json");
var app = new App();
var database = new Database(dbConfig);
var routes = new Routes(app, database);
// Use routes.
Bu faydaları bir numarası vardır:
require("databaseSingleton")
ya da kötü diyorlar,global.database
* * * * seni bir yere bağımlılıkları dosyasını ortasında saklamak yerine açık bağımlılıkları ile bileşenlerine sistem ayrı, zorlar.- Bunu yapan birim testi çok kolay: istersem test
Routes
yalıtım, ben enjekte ile sahteapp
database
parametreler ve testRoutes
kod kendisi. - -Grafik nesne kablolama birlikte tek bir yer, kompozisyon kök bu durumda
server.js
, app giriş noktası olan) yani tüm koyar. Bu, her şeyi birlikte sistemde nasıl uyduğunu görmek için bakmak için tek bir yer verir.
Gördüğüm bunun için iyi örneklerden biri an interview with Mark Seeman mükemmel kitabın yazarıdır . ben^>Bağımlılık Enjeksiyon .NET. O kadar JavaScript için de geçerlidir, ve özellikle Node.js için: require
genellikle klasik konumlandırıcı hizmeti, sadece bir modül sistemi yerine kullanılır.
Raylar Komisyon: bir görev için bağıms...
Nasıl PHP için JavaScript değişkenleri...
Nasıl Düzenli İfade, JavaScript için b...
Nasıl C kaynak dosyaları arasında pay ...
Standart bir fonksiyon JavaScript null...