模块化
JS的作用域隔离机制较弱,因此使用不当时会产生命名冲突的问题,尤其是在单页应用日益复杂、使用的第三方框架越来越多的情况下更容易产生冲突问题。而且JS本身没有直接提供使用代码加载其它脚本文件的机制。因此产生了JS模块化概念。
JS模块化通常要提供2个方案:
- 定义JS模块的方案
- 按需加载模块及其依赖模块的方案
常用的JS模块化方案有以下几种:
Node.js中的模块化方案(最简单易用,通过约定取消了配置)
浏览器中使用中RequireJs和SeaJs(都需要配置)
ES6中的模块化方案(无需配置)
目前在浏览器端使用最广泛的是RequrieJs,RequireJs通过AMD规范描述了定义和使用模块的方法,本身支持JS文件的按需加载,另外RequireJs还有很多官方和第三方插件可以实现各种文件(如HTML、CSS、其它文本文件等)的动态加载。