什么是模块?

一、将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起
二、块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信

模块化背景

一、模块化:将JavaScript程序拆分为可按需导入的单独模块的机制。
二、模块化发展史:

  1. 没有模块语法:很长一段时间,JavaScript没有语言级(language-level)的模块语法。因为最初的脚本又小又简单,没必要将其模块化。
    1. 全局function
    2. namespace
    3. IIFE
  2. JavaScript库:后来,脚本变得越来越复杂,社区发明了多种方法来将代码组织到模块中,使用特殊的库按需加载模块,很多框架也开始了模块的使用
    1. 特殊的库
      1. AMD——最古老的模块系统之一,最初由require.js库实现。
      2. CommonJS——为 Node.js 服务器创建的模块系统。
      3. UMD——另外一个模块系统,建议作为通用的模块系统,它与 AMD 和 CommonJS 都兼容。
    2. 框架
      1. webpack
      2. babel
  3. 2015年,语言级的模块系统出现在标准(ES6)中,现已得到所有主流浏览器和Node.js的支持。
    1. 现代JavaScript模块:module(import/export)

模块化的好处/ 为什么有前端模块化

一、模块化的好处:

  • 避免命名冲突(减少命名空间污染)
  • 更好地分离,按需加载
  • 更高复用性
  • 高可维护性