【问题标题】:Javascript Es6 default exportJavascript Es6 默认导出
【发布时间】:2015-04-28 00:31:30
【问题描述】:

我只是想仔细检查一下,因为我正在尝试执行此 ES6 导出默认设置:

var Member = function(){}
export {
    Member as default
 };

JShint 使用这种语法(启用 es6)出错,但我认为它是有效的。 这真的是无效的还是用导出语法编写默认导出的有效方法为

 export {
    Member 
 };

我以此为参考:http://www.2ality.com/2014/09/es6-modules-final.html 他们给出的例子是:

//------ module1.js ------
export default 123;
//------ module2.js ------
const D = 123;
export { D as default };

为什么这个模块 2 的第二行有效? (或者是吗?)

【问题讨论】:

  • export default Member
  • 如果我最后用导出语法导出多个东西怎么样?
  • 要发布代码,缩进 4 个空格(或使用 {} 按钮),不要使用 ` 字符。啊,Barmar 已经为你做到了。
  • 它是否适用于您的本地转译器/es6 环境,而只有 jshint 很糟糕?
  • jshint 的具体错误信息是什么?

标签: javascript ecmascript-6 export


【解决方案1】:

(通常)这是 jshint 的错。该行确实有效,ES6 Export syntax 确实允许使用任何 IdentifierName(包括 default 等关键字)作为 ExportClause 的导出名称。

但我不鼓励使用它。默认导出在export default 表示法中更容易编写和阅读,例如

var Member = function() {};
export default Member;
// or
export default function Member() {}

诚然,export default Member; 并不完全等同于 export { Member as default },但除非你尝试重新分配它(你不是,对吧?)它没有任何区别。

【讨论】:

  • 好的,谢谢!我真的只是想知道,因为我的团队正在考虑在一个单独的分支中采用 es6 并且这个符号出现了。顺便说一句,这种东西有参考吗?
  • 我认为您找到的 2ality 文章很好。我还没有阅读我可以推荐的任何其他文档/教程/资料,只阅读了规范本身:-)
  • 如何用一个默认类导出多个类?我试过这个 export { Editable , EditableMyTeam };如何将头等舱设置为默认值?
  • @sijovijayan:您可以毫无问题地使用多个导出:export default Editable, export { EditableMyTeam };。您也可以使用export { Editable as default, EditableMyTeam };
  • 我刚刚尝试了第二个选项,它有效!!!,但它显示了一个像这样的 ESlint 警告“警告”默认“在绑定上下文块范围变量之外使用”
猜你喜欢
  • 2016-06-03
  • 2014-09-15
  • 1970-01-01
  • 2018-10-19
  • 2016-08-02
  • 2017-06-09
  • 2017-12-02
  • 1970-01-01
  • 2019-12-29
相关资源
最近更新 更多