Module

  1. Module
    1. 动态改变
    2. export default
    3. export 和 import 的复合写法
    4. import()

Module

commonjs 的其实是动态加载,因为只有运行时才能得到对象,没法做静态优化。

ES6 模块不是对象,而是 export 的指定代码,就可以在编译时加载,使得静态分析成为了可能。

动态改变

commonjs 输出的是缓存的值,而 es6 的模块是可以动态更新的。

export default

正常的 import 我们都需要知道所要加载的变量名以及函数名,否则无法加载。所以为了提供便捷,使用 export default 命令,为模块指定默认输出。

然后在其他模块加载该模块的时候,就可以为匿名函数指定任意名字了。

这个时候 import 命令就不用加大括号,因为只会有一个 export default,所以当没有大括号的时候就是 default 的。我们可以同时使用 default 和普通的 export。

export 和 import 的复合写法

import 和 export 是可以结合一起,写成一行。

import()

无法在 if 或者函数内部进行模块的加载,必须写在最顶层。所以无法运行时加载模块。require 是运行时加载模块,import 无法取代 require 的动态加载功能。

所以就有了 import()这个提案,类似于 node 的 require 方法,区别是前者是异步加载,后者是同步加载,import()返回一个 Promise 对象。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 981909093@qq.com

文章标题:Module

文章字数:350

本文作者:泽鹿

发布时间:2019-08-28, 16:45:23

最后更新:2019-08-28, 20:06:02

原始链接:http://panyifei.github.io/2019/08/28/前端技术/js/框架以及规范/ECMAScript6/Module/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏