簡體   English   中英

在Node.js中,如何加載我的模塊一次,然后在整個應用程序中使用它們?

[英]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;

1.使用魔術變量(聲明沒有var

使用魔法全局變量,不使用var

例:

fs = require("fs");

代替

var fs = require("fs");

如果在聲明變量時沒有放置var ,那么變量將是一個神奇的全局變量。

推薦這個。 特別是,如果你處於嚴格模式( "use strict" ),那根本不會起作用。

2.使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM