Joh*_*son 8 javascript global global-variables require node.js
我怎么能全局要求一个模块,所以我可以在不同的模块中使用它而不必再次需要它?或者我每次都必须这样做?这有什么最好的做法吗?
以下是我所谈论的一个例子.假设我有一个像这样的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);
Run Code Online (Sandbox Code Playgroud)
a.js
var utils = require('utils.js');
exports.change = function(str) {
str = str.replace('test', 'example');
utils.return('i changed test to example!');
return str;
}
Run Code Online (Sandbox Code Playgroud)
utils.js
exports.return = function (msg) {
console.log(msg);
}
Run Code Online (Sandbox Code Playgroud)
你看我必须要求('utils.js')两次,但我宁愿在index.js中要求它一次,并将它作为utils在index.js和a.js中使用.有什么好办法可以实现吗?
jfr*_*d00 15
nodejs开发中的常规做法是require()在每个模块中只需要一个模块.模块本身由nodejs缓存,因此每次都返回相同的模块,并且实际上不会反复加载它.这样做而不是创建全局变量通常会使代码更加模块化和可重用,因为每个模块都唯一地指定(带有require()语句)它需要什么,而不是拥有一堆依赖于某些预先存在的全局配置的模块,这会创建更多的依赖项,加载订单问题等...
可以require()在一堆其他模块上创建单个模块,然后将结果组合到新的主模块中(如果相关或有用),以便其他模块只需要新的主模块.
不建议使用全局变量来代替仅使用require()语句.请记住,在nodejs编程中,大多数require()语句只是在服务器初始化时运行,并且它们被缓存,因此几乎没有理由避免使用require()而不是使用全局变量提供的优点和模块性.
我不会亲自推荐这个,因为它模糊不清,但在您的具体示例中,您还可以将utils模块传递给a.js构造函数:
var utils = require('utils.js');
var a = require('a.js')(utils);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4587 次 |
| 最近记录: |