什么是模块?
一、将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起
二、块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信
模块化背景
一、模块化:将JavaScript程序拆分为可按需导入的单独模块的机制。
二、模块化发展史:
- 没有模块语法:很长一段时间,JavaScript没有语言级(language-level)的模块语法。因为最初的脚本又小又简单,没必要将其模块化。
- 全局function
- namespace
- IIFE
- JavaScript库:后来,脚本变得越来越复杂,社区发明了多种方法来将代码组织到模块中,使用特殊的库按需加载模块,很多框架也开始了模块的使用
- 特殊的库
- AMD——最古老的模块系统之一,最初由require.js库实现。
- CommonJS——为 Node.js 服务器创建的模块系统。
- UMD——另外一个模块系统,建议作为通用的模块系统,它与 AMD 和 CommonJS 都兼容。
- 框架
- webpack
- babel
- 特殊的库
- 2015年,语言级的模块系统出现在标准(ES6)中,现已得到所有主流浏览器和Node.js的支持。
- 现代JavaScript模块:module(import/export)
模块化的好处/ 为什么有前端模块化
一、模块化的好处:
- 避免命名冲突(减少命名空间污染)
- 更好地分离,按需加载
- 更高复用性
- 高可维护性