[英]In Node.js, how can I load my modules once and then use them throughout the app?
我想創建一個全局模塊文件,然后讓我的所有文件都需要該全局模塊文件。 在該文件中,我將加載所有模塊一次並導出已加載模塊的字典。
我怎樣才能做到這一點?
我實際上嘗試創建此文件...每次我require('global_modules')
,所有模塊都不斷重新加載。 這是O(n)。
我希望文件是這樣的(但它不起作用):
//global_modules.js - only load these one time
var modules = {
account_controller: '/account/controller.js',
account_middleware: '/account/middleware.js',
products_controller: '/products/controller.js',
...
}
exports.modules = modules;
var
) 使用魔法全局變量,不使用var
。
例:
fs = require("fs");
代替
var fs = require("fs");
如果在聲明變量時沒有放置var
,那么變量將是一個神奇的全局變量。
我不推薦這個。 特別是,如果你處於嚴格模式( "use strict"
),那根本不會起作用。
global.yourVariable = ...
附加到global
對象的字段將成為可從應用程序中的任何位置訪問的全局變量。
所以,你可以這樣做:
global.fs = require("fs");
這並不像1. ,但在可能的情況下仍然可以避免。
對於你的例子:
假設您有兩個文件: server.js
(主文件)和global_modules.js
文件。
在server.js
您將執行以下操作:
require("./global_modules");
在global_modules.js
你將擁有:
_modules = {
account_controller: require('/account/controller.js'),
account_middleware: require('/account/middleware.js'),
products_controller: require('/products/controller.js'),
...
}
要么
global._modules = {...}
在server.js
您將能夠:
_modules.account_controller // returns require('/account/controller.js'),
require
已經做到了。 嘗試加載模塊,修改它,然后在另一個地方或文件中再加載一次:
var fs = require('fs'):
console.log(fs.hey);
fs.hey = 'HEY TIMEX, WHATS UP?';
//another place of the same process
var fs = require('fs');
console.log(fs.hey);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.