1

你们如何看待在 Javascript 中制作常量。我想以最好的方式做到这一点。我知道常量并不真正存在,但我写了这个并且我无法在导出后更改值。

是否需要常量?

有解决办法吗?

我们如何在全局范围内使用它们(无需 require('const'));?

// Const
var constants = {
    'PATH1' : __dirname + '/path..../',
    'PATH2' : __dirname + '/path/..../'
};
module.exports = function(key) {
    return constants[key];
};
//console.log(constants('PATH1'));

如果我能得到一些反馈,比如你对这些问题的想法,我会很高兴。

祝你美好的一天。

4

2 回答 2

3

在节点中使用全局变量很难看/很难,这是有充分理由的:全局变量不好。

做你想做的很简单:

// config.json
module.exports = {
  somePath:    "/foo",
  anotherPath: "/foo/bar"
};

在文件中使用

// a.js
var config = require("./config");
config.somePath; //=> "/foo"

在另一个文件中使用

// b.js
var config = require("./config");
config.anotherPath; //=> "/foo/bar"

就在最近,在另一个问题中,我深入探讨了如何完全没有必要在 node.js 中使用全局变量

于 2013-08-18T16:58:29.113 回答
0

这是一个坏主意,但可以做到。我只在 Node.js 中测试过这个。它可能在浏览器中工作,也可能不工作。如果您替换它globalwindow它可能会在浏览器中可靠地工作。

干得好:

应用程序.js:

Object.defineProperty(global, 'myConst', {
  get: function() {
    return 5;
  }
})

myConst = 6

console.log(myConst) //5

像这样运行:

node app.js

使用 v0.10.3 测试。

于 2013-07-26T15:56:12.973 回答