使用ES6和Node.js,推荐的方式来要求

时间:2016-01-25 00:44:46

标签: javascript node.js ecmascript-6

使用ES6和Node.js,要求包letconst的推荐方法是什么?

let _ = require('underscore');

const _ = require('underscore');

1 个答案:

答案 0 :(得分:4)

除非您计划在文件范围内(或在require处)重新定义软件包,否则最好使用const:这将是防止意外重新分配包变量。

例如:

const _ = require('underscore');
// ...
let [a, _] = foo;  // SyntaxError: "_" is read-only

由于我们正在讨论ES6,constrequire,因此提出import语句也是有意义的,这些语句在很大程度上可以被认为是作为require的更灵活的版本。 [1]

import _ from 'underscore';
// ...
let [a, _] = foo;  // TypeError: duplicate declaration "_"

默认情况下,ES6 import注册为const,因此同样会阻止重新分配。

那么,您何时希望使用let来获取要求?让我们说(没有双关语)你想在某些环境中使用特殊版本的包。

let secureLibrary = require('secureLibrary');
// override all security in dev mode
if (process.env['NODE_ENV'] === 'development') {
    secureLibrary = secureLibrary.fake;
}

在这个人为的例子中,在开发过程中,您对secureLibrary的使用将被伪造的替换,可能忽略了自签名的SSL证书或其他一些不适合生产的便利。

总结:大部分时间都使用const但偶尔会let提供必要的灵活性,如果您已经在使用ES6,请考虑使用import

[1] 请注意:在ES6 import和CommonJS require之间存在更多差异,请参阅Using Node.js require vs. ES6 import/export和{{3更多血淋淋的细节。