什么是模块化
百科:模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。 Wiki:模块化编程(modular programming),是强调将计算机程序的功能分离成独立的、可相互改变的“模块”(module)的软件设计技术,它使得每个模块都包含着执行预期功能的一个唯一方面(aspect)所必需的所有东西。
前端模块化有很多方案
CommonJS
:是Nodejs
使用的一套模块化规范,是一种同步加载模块依赖的方式;通过require
及exports
进行导入导出 (再进一步扩展,module.exports
属于commonjs2
)
require
:引入一个模块exports
:导出模块内容module
:模块本身
AMD
:是 js 模块加载库 RequireJS 提出并且完善的一套模块化规范,AMD
是一个异步加载模块依赖的方式;
id
:模块的id
dependencies
:模块依赖factory
:模块的工厂函数,即模块的初始化操作函数require
:引入模块
ESM
(ES6 Module):ES6 推出的一套模块化规范。
import
:引入模块依赖export
:模块导出
除了上面三大主流规范,还有 CMD(国产库 SeaJS 提出来的一套模块规范)和 UMD(兼容 CommonJS 和 AMD 一套规范)。目前多数模块的封装,是既可以在 Node.js 环境又可以在浏览器环境运行, 那么一般会采用 UMD 的规范。 UMD
:都可兼容 CommonJS
与 AMD
的模块,既可以在 Nodejs
和 Webpack
环境中被 require
引用,又能在 browser
环境中直接用 CDN 被 script
标签引入。
cjs, umd, esm or iife? - 知乎 (zhihu.com)