ES6 模块 vs 揭示模块模式

Jyo*_*Pal 5 javascript ecmascript-6

1. ES6 模块与使用 IIFE 和闭包实现的模块模式有何不同?2.应该优先选择哪一个?可以帮忙举个例子吗?

Sea*_*lan 3

揭示模块模式基本上是一个很酷的技巧,旨在在 ES5 环境中制作类似模块的东西。如果您处于可以使用 ES6 模块的环境中,则应该使用这些模块。

如果您不在可以使用 ES6 模块的环境中* 您应该使用 ES6 转译器(例如 Babel)将模块化源代码编译为可在您的目标环境中使用的格式。


差异的简短列表:

  • ES6 模块具有导入和导出语法
  • 如果您只想公开一个类(或其他类),ES6 模块具有命名导出和默认导出。
  • ES6 模块导入在解析时进行静态分析。如果您尝试导入不存在的属性,则会收到错误消息。
  • ES6 模块导入是原始变量的“视图”,而不是赋值。(某些转译器可能不支持。)

ECMAScript 6 模块:最终的语法是对 ES6 模块工作方式的很好的总结。**

*截至 2017 年 9 月,节点不支持 ES6 模块。一些浏览器提供支持,但还没有主要的库利用它。

**它讨论的浏览器 API,System.import 并不是该部分最终的工作方式。