【问题标题】:Using ES6 and Node.js, recommended way to require [duplicate]使用 ES6 和 Node.js,推荐的方式来要求 [重复]
【发布时间】:2016-01-25 00:44:46
【问题描述】:

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

let _ = require('underscore');

const _ = require('underscore');

【问题讨论】:

标签: javascript node.js ecmascript-6


【解决方案1】:

除非你计划在你的文件范围内重新定义包(或者你在requireing 的任何地方),那么最好使用const:这将防止意外重新分配包变量。

例如:

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

既然我们谈论的是 ES6、constrequire,那么提出 import 语句也是有意义的,这在很大程度上可以被认为是 @987654329 的更灵活版本@。 [1]

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

ES6 imports 默认注册为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/exporthttp://www.2ality.com/2014/09/es6-modules-final.html 了解更多血腥细节。

【讨论】:

  • 下划线应该是import * as _ from 'underscore'
猜你喜欢
  • 2016-11-29
  • 1970-01-01
  • 2013-02-11
  • 2012-11-14
  • 2016-12-22
  • 1970-01-01
  • 2016-12-24
  • 2013-03-06
  • 2015-07-05
相关资源
最近更新 更多