JavaScript模块化-CommonJS、AMD、CMD、UMD、ES6
前言:模块化开发需求 在JS早期,使用script标签引入JS,会造成以下问题: 加载的时候阻塞网页渲染,引入JS越多,阻塞时间越长。 容易污染全局变量。 js文件存在依赖关系,加载必须有顺序。项目较大时,依赖会错综复杂。 引入的JS文件过多,不美观,且不易于管理。 一、CommonJS规范 CommonJS Modules/1.0规范,服务器端规范。 Node.js推广使用。该规范的核心是:允许模块使用require方法来同步加载所依赖的其他模块,然后通过exports或module.exports导出需要暴露的接口。 特点: 一个模块是一个文件 使用module.exports或exports导出模块 // module.js exports.add = (a, b) => a+b module.exports = { add: (a, b) => a + b } 使用require加载模块 a. require命令第一次加载模块时,执行整个脚本,在内存中生成对象 b. 多次执行require命令再次加载该模块时,不会再执行该脚本,直接从缓存中取值 c. CommonJS加载模块是同步加载模块 Tips: 为什么CommonJS规范不适合作为浏览器的规范 由于CommonJS是同步加模块,在服务端加载模块时都是从本地硬盘中加载,读取速度很快。但是在浏览器端加载模块时