一、前端模块化
1,什么是模块化:
将一个复杂的程序依据一定的规则(规范)封装成几个块(文件),并进行组合在一起。
块的内部数据与实现是私有的,只是向外部暴露一些接口(方法)与外部其他模块通信。
2,模块化的进程:
1)全局function模式:将不同的功能封装成不同的全局函数
编码:将不同的功能封装成不同的全局函数
问题:污染全局命名空间, 容易引起命名冲突或数据不安全,而且模块成员之间看不出直接关系
2)namespace模式 : 简单对象封装
作用: 减少了全局变量,解决命名冲突
问题: 数据不安全(外部可以直接修改模块内部的数据)
3)IIFE模式:匿名函数自调用(闭包)
作用: 数据是私有的, 外部只能通过暴露的方法操作
编码: 将数据和行为封装到一个函数内部, 通过给window添加属性来向外暴露接口
问题: 如果当前这个模块依赖另一个模块怎么办?
IIFE模式增强 : 引入依赖
4)js模块化和MVC设计模式:
5)AMD和CMD:
AMD:Asynchronous Module Definition,异步模块。主要依赖RequireJS
CMD:common module definition,通用模块定义。主要依赖SeaJS
6)ES6:
导出模块:export 引入模块:import
7)webpack:
模块打包器,将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求
3,模块化的好处:
避免命名冲突(减少命名空间污染)
更好的分离, 按需加载
更高复用性
高可维护性
依赖关系的管理
二、模块化规范:
1,CommonJs:
2,AMD:
3,CMD:
4,ES6:
发现自己学的,总结的都是这个转载的,我先学习,晚点出总结,哈哈。