簡體   English   中英

Node.js 全球需求

[英]Node.js global require

我怎樣才能在全球范圍內要求一個模塊,以便我可以在不同的模塊中使用它而不必再次要求它? 還是我每次都必須這樣做? 有什么最佳做法嗎?

這是我正在談論的一個例子。 假設我有一個這樣的index.js

var a = require('a.js'),
utils = require('utils.js');

var str = 'hello this is a test';
str = a.change(str);

utils.return(str);

一個.js

var utils = require('utils.js');

exports.change = function(str) {
    str = str.replace('test', 'example');
    utils.return('i changed test to example!');
    return str;
}

工具.js

exports.return = function (msg) {
    console.log(msg);
}

你看我必須 require('utils.js') 兩次,但我寧願在 index.js 中要求它一次,並讓它在 index.js 和 a.js 中作為 utils 可用。 有什么好方法可以做到這一點?

nodejs開發的通常做法是在每個模塊中只require()一個模塊就可以了。 模塊本身由nodejs緩存,因此每次都返回相同的模塊,並且實際上不會反復加載它。 這樣做而不是創建全局變量通常會使代碼更加模塊化和可重用,因為每個模塊都唯一地指定(使用require()語句)它需要什么,而不是擁有一堆依賴於某些預先存在的全局配置的模塊,這些模塊會創建很多更多依賴項,加載順序問題等...

可以在一堆其他模塊上創建一個require()的單個模塊,然后將結果組合到一個新的主模塊中,如果它相關或有用,那么其他模塊只需要新的主模塊。

建議不要使用全局變量來代替使用require()語句。 請記住,在nodejs編程中,大多數require()語句只是在服務器初始化時運行,並且它們被緩存,因此沒有理由避免使用require()而不是globals提供的好處和模塊性。


我不會親自推薦這個,因為它模糊不清,但在您的具體示例中,您還可以將utils模塊傳遞給a.js構造函數:

var utils = require('utils.js');
var a = require('a.js')(utils);

對於將來搜索此問題的人,您可以使用global變量。 僅在真正特定的情況下執行此操作(例如:在每個文件中復制代碼)

global.mymodule = require("mymodule");
mymodule.abc // works in any file in the same process

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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