目前我正在做这件事:
foo.js
const FOO = 5;
module.exports = {
FOO: FOO
};
并在bar.js
中使用它
var foo = require('foo');
foo.FOO; // 5
有没有更好的方法来做这件事?在exports对象中声明常量感觉很笨拙。
发布于 2011-12-22 03:59:16
您可以使用global.FOO = 5
显式地将其导出到全局范围。然后,您只需要请求该文件,甚至不保存返回值。
但说真的,你不应该这么做。保持适当的封装是一件好事。你已经有了正确的想法,所以继续做你正在做的事情。
发布于 2014-01-21 09:32:42
在我看来,利用Object.freeze
允许使用DRYer和更具声明性的风格。我更喜欢的模式是:
./lib/constants.js
module.exports = Object.freeze({
MY_CONSTANT: 'some value',
ANOTHER_CONSTANT: 'another value'
});
./lib/some-module.js
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=1858和http://jsperf.com/performance-frozen-object中产生巨大的性能损失
发布于 2016-09-09 03:41:43
ES6方式。
以foo.js格式导出
const FOO = 'bar';
module.exports = {
FOO
}
在bar.js中导入
const {FOO} = require('foo');
https://stackoverflow.com/questions/8595509
复制相似问题