我们都知道在早期JavaScript模块这一概念,都是通过script标签引入js文件代码。当然这写基本简单需求没有什么问题,但当我们的项目越来越庞大时,我们引入的js文件就会越多,这时就会出现以下问题:

  • js文件作用域都是顶层,这会造成变量污染
  • js文件多,变得不好维护
  • js文件依赖问题,稍微不注意顺序引入错,代码全报错

通常可以利用命名空间和闭包来解决, 但过于繁琐, 且引用js文件时可以在修改内部变量, 不够安全。

CommonJs是一种模块化的规范, 能以类似于面向对象的方式来封装js文件, 引入时不必担心变量污染和维护问题, 可以清除看到依赖了哪些文件。