老师 es6编译时加载 该怎么理解

来源:2-5 文件自动监听,项目构建测试

晕呼呼的小卡

2018-04-23

在看到 moudle 语法的时候有下面这一段话:

ES6 模块的设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。然后给出了代码示例如下:

// CommonJS模块

let { stat, exists, readFile } = require('fs');

// 等同于

let _fs = require('fs');

let stat = _fs.stat;

let exists = _fs.exists

;let readfile = _fs.readfile;

上面代码的实质是整体加载fs模块(即加载fs的所有方法),生成一个对象(_fs),然后再从这个对象上面读取 3 个方法。这种加载称为“运行时加载”,因为只有运行时才能得到这个对象,导致完全没办法在编译时做“静态优化”。

这段描述中提到的“ES6 模块的设计思想是尽量的静态化”不是很能理解,想请老师解惑。


写回答

1回答

快乐动起来呀

2018-04-23

关于模块化的动态加载是和commonjs来对比的,可以看下http://es6.ruanyifeng.com/#docs/module-loader,一句话总结commonjs的模块化是复制,export是符号连接(只读)

0
0

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程