zhaoqize / blog

✍️qize的博客:原创文章、外文翻译、技术总结和演示代码
https://zhaoqize.github.io/blog/
MIT License
280 stars 74 forks source link

CommonJS模块化规范和ES6模块化规范 #8

Open zhaoqize opened 6 years ago

zhaoqize commented 6 years ago

CommonJS模块化规范

关键字:module exports require global

模块的设计思想,是尽量的静态化,使得 编译时 就能确定模块的依赖关系,以及输入和输出的变量

ES6模块化规范

关键字:export import

CommonJS 和 AMD 模块,都只能在 运行时 确定这些东西

目前阶段,通过 Babel 转码,CommonJS 模块的require命令ES6 模块的import命令,可以写在同一个模块里面,但是最好不要这样做。 因为import静态解析 阶段执行,所以它是一个模块之中最早执行的。 下面的代码可能不会得到预期结果。

require('core-js/modules/es6.symbol'); // 运行时执行
require('core-js/modules/es6.promise'); // 运行时执行

import React from 'React';  // 静态解析(编译)时执行

两者不是一个概念的东西。