1、全局函数
将不同的功能封装成不同的全局函数
问题:污染全局命名空间,容易引起命名冲突,而且模块成员之间看不出直接关系
2、命名空间
对象封装:减少了全局变量,解决命名冲突
问题:内部状态可以被外部改写
3、匿名函数自调用
数据私有,将接口通过闭包暴露出来
问题1.当模块之间有依赖关系时不好处理
2闭包并不是很好理解
4、现代模块化规范
以文件为模块,有自己的作用域在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。
4.1、commonjs
特点:
1文件作用域
2.缓存
3同步加载
问题:同步加载意味着会阻塞脚本,不适用于浏览器
4.2 AMD Asynchronous Module Definition
特点:
1文件作用域
2非同步加载
CommonJs适用于服务端 AMD适用于浏览器
4.3UMD
Universal module definition-前后端跨平台的模块化解决方案
实现原理:
1先判断是否支持 Node. js模块格式( exports是否存在),存在则使用Node js模块格式
2再判断是否支持AMD( define是否存在),存在则使用AMD方式加载模块
3前两个都不存在,则将模块公开到全局( window或 global)
相关文章
- 02-23小白前端模块化
- 02-23前端代码模块化之requireJS_Alice
- 02-23前端打包工具Esbuild--模块化、ESM、esbuild-loader、
- 02-23前端模块化各种类型区别
- 02-23前端-es6模块化
- 02-23前端性能优化-静态资源优化6-JS 模块化
- 02-23前端模块化简单总结
- 02-23前端模块化发展简史
- 02-23前端模块化:AMD,CMD,CommonJS,ES6Module
- 02-23前端模块化简单总结