前端模块化各种类型区别

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)

上一篇:Oracle聚簇因子(Clustering factor,CF)


下一篇:此平台不支持虚拟化的 AMD-V/RVI