首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >node.js标准模块的全局变量?

node.js标准模块的全局变量?
EN

Stack Overflow用户
提问于 2010-11-10 10:14:01
回答 5查看 66.8K关注 0票数 57

我知道全局变量是不好的。

但是,如果我在框架中的40个文件中使用node的模块"util“,将其声明为全局变量不是更好吗?如下所示:

util = require('util');

在index.js文件中而不是在40个文件中编写该行?

因为我经常在每个文件中使用相同的5-10个模块,这将节省大量的时间,而不是一直复制粘贴。

在这种情况下干酒不是很好吗?

EN

回答 5

Stack Overflow用户

发布于 2010-11-24 18:37:45

你可以只有一个通用的模块。

common.js:

Common = {
  util: require('util'),
  fs:   require('fs'),
  path: require('path')
};

module.exports = Common;

app.js:

var Common = require('./common.js');
console.log(Common.util.inspect(Common));
票数 103
EN

Stack Overflow用户

发布于 2010-11-28 09:15:50

global.util = require('util');

node documentation中有一个关于全局对象的部分。

但是,应该小心使用全局变量。通过向全局空间添加模块,可以降低可测试性和封装性。但在某些情况下,使用此方法是可以接受的。例如,我将函数和对象添加到全局名称空间,以便在单元测试脚本中使用。

票数 25
EN

Stack Overflow用户

发布于 2012-02-01 06:17:06

我被这个帖子里的答案搞糊涂了。

我能做到这一点。

文件: test.js

global.mytest = {
    x: 3,
    y: function() { console.log('Works.'); }
};

文件: test2.js

console.log('Does this work?');
mytest.y();

文件: server.js

require('test.js');
require('test2.js');

而且它看起来像是所需要的问题。第一个请求将mytest对象放入全局作用域,然后第二个请求可以在没有任何其他限定符的情况下访问该对象。

我试图弄清楚这一点(这让我从谷歌搜索中找到了这个帖子),现在我想发布对我来说似乎有效的帖子。也许与最初的答案相比,情况已经发生了变化。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4140661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档