首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在NodeJS模块中共享常量?

如何在NodeJS模块中共享常量?
EN

Stack Overflow用户
提问于 2011-12-22 03:54:22
回答 10查看 249.1K关注 0票数 290

目前我正在做这件事:

foo.js

代码语言:javascript
复制
const FOO = 5;

module.exports = {
    FOO: FOO
};

并在bar.js中使用它

代码语言:javascript
复制
var foo = require('foo');
foo.FOO; // 5

有没有更好的方法来做这件事?在exports对象中声明常量感觉很笨拙。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-12-22 03:59:16

您可以使用global.FOO = 5显式地将其导出到全局范围。然后,您只需要请求该文件,甚至不保存返回值。

但说真的,你不应该这么做。保持适当的封装是一件好事。你已经有了正确的想法,所以继续做你正在做的事情。

票数 108
EN

Stack Overflow用户

发布于 2014-01-21 09:32:42

在我看来,利用Object.freeze允许使用DRYer和更具声明性的风格。我更喜欢的模式是:

./lib/constants.js

代码语言:javascript
复制
module.exports = Object.freeze({
    MY_CONSTANT: 'some value',
    ANOTHER_CONSTANT: 'another value'
});

./lib/some-module.js

代码语言:javascript
复制
var constants = require('./constants');

console.log(constants.MY_CONSTANT); // 'some value'

constants.MY_CONSTANT = 'some other value';

console.log(constants.MY_CONSTANT); // 'some value'

过时的性能警告

以下问题已于2014年1月在v8中修复,不再与大多数开发人员相关:

请注意,将writable设置为false和使用Object.freeze都会在v8 - https://bugs.chromium.org/p/v8/issues/detail?id=1858http://jsperf.com/performance-frozen-object中产生巨大的性能损失

票数 390
EN

Stack Overflow用户

发布于 2016-09-09 03:41:43

ES6方式。

以foo.js格式导出

代码语言:javascript
复制
const FOO = 'bar';
module.exports = {
  FOO
}

在bar.js中导入

代码语言:javascript
复制
const {FOO} = require('foo');
票数 131
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8595509

复制
相关文章

相似问题

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