前端嘛 Logo
前端嘛

ES Module

CommonJS 不适合浏览器环境

CommonJS 是同步加载的。对 Node 来说,服务器端所有的模块都存放在本地硬盘中,可以同步加载,等待时间就是硬盘的读取时间。

但是对浏览器来说,所有的模块都放在服务器端,等待时间取决于网速的快慢,可能要等很长时间,浏览器处于就可能会陷入“假死”状态。

于是出现了AMD(Asynchronous Module Definition)CMD(Common Module Definition) 等异步加载的模块化规范,适用于浏览器环境,不至于阻塞用户操作界面

ES Module 介绍

JavaScript 程序本来很小——在早期,它们大多被用来执行独立的脚本任务,在你的 web 页面需要的地方提供一定交互,所以一般不需要多大的脚本。 随着时间的推移,JavaScript 程序越来越复杂,运行的环境也不止是浏览器,有必要开始考虑提供一种将 JavaScript 程序拆分为可按需导入的单独模块的机制。

于是,ECMA 官方在 ES6 中推出了称为 ESM(ES Module) 的模块化规范。ES Module 想要完成浏览器端、服务端的模块化大一统,成为通用解决方案。