模块化开发只是思想
-
模块化演变过程
-
stage 1-文件划分方式
-
污染全局作用域
-
命名冲突问题
-
无法管理模块依赖关系
原始方式完全依靠约定 -
stage 2-空间命名方式
-
stage 3 --IIFE
以上就是早期在没有工具和规范的情况下对模块化的落地方式
模块化规范的出现
模块化规范+模块加载器
- CommonJS规范
- 一个文件就是一个模块
- 每个模块都有单独的作用域
- 通过module.exports导出成员
- 通过require函数导入成员
commonJS是以同步模式加载模块
2. AMD(Asynchronous Module Definition)
- AMD使用起来相对复杂
- 模块js文件请求频繁
3. require.js
4. Sea.js + CMD
node.js CommonJS
Browser ES Module
ES Module基本特性
- 自动采用严格模式,忽略’use strict'
- 每个ESM模块都是单独的私有作用域
- ESM是通过CORS去请求外部JS模块的
- _ESM的script标签会延迟执行脚本_
ES Module导入和导出
node环境中
- ES Modules中可以导入CommonJS模块
- CommonJS中不能导入ES Modules模块
- CommonJS模块始终只会导出一个默认成员
- 注意import不是解构导出对象