javascript - 你如何在 NodeJS 模块中共享常量?

标签 javascript node.js

目前我正在这样做:

foo.js

const FOO = 5;

module.exports = {
    FOO: FOO
};

并在 bar.js 中使用它:

var foo = require('foo');
foo.FOO; // 5

有没有更好的方法来做到这一点?在导出对象中声明常量感觉很尴尬。

最佳答案

在我看来,使用 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 中都会产生巨大的性能损失。和 https://jsben.ch/AhAVa

关于javascript - 你如何在 NodeJS 模块中共享常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595509/

相关文章:

javascript - 将包含 HTML 实体的 JSON 序列化字符串转换为对象

Javascript 数组未定义的值

javascript - 我如何获取一个对象的所有属性并将它们插入到它自己的对象数组属性中?

javascript - 以不会导致浏览器因低速连接而回流的方式定义响应式图像(首选 HTML)

javascript - Mongoose QueryStream.pause() 不暂停?

javascript - float : right is messing up the order

javascript - body-parser 实际上对 Express 做了什么?

node.js - 全局值(value)观 - 反模式?

javascript - 无法将 winston 放入 nodejs 模块中

node.js - 在 Hyperledger Fabric v1 上通过 Postman 连接 Node.js Express API 时出现 UnauthorizedError