1. 有哪些规范
ES6、
服务器端模块化规范:CommonJS、
浏览器端模块化规范:AMD、CMD
在ES6提出之前,JS社区已经尝试并提出了AMD、CMD、CommonJS等模块化规范,这些社区提出的模块化标准,还是存在一定的差异性与局限性,并不是浏览器与服务器通用的模块化标准,例如:
- AMD和CMD只适用于浏览器端的JavaScript模块化
- CommonJS是在node中实现的,也就是node环境中可以支持require和exports,但是在浏览器环境中,是不支持的。只适用于服务器端的JavaScript模块化
2. 为什么会有模块化规范(背景是什么)
随着ajax异步请求的出现,慢慢形成了前后端分离
a. 客户端要完成的事情越来越多,代码量也与日俱增
b. 为了应对代码量的剧增,通常会将代码组织在多个js文件中,进行维护
c. 但这种维护方式,依然不能避免一些灾难性的问题,比如全局变量重名问
这种代码的编写方式对js文件的依赖顺序几乎是强制性的。等等
传统开发模式的主要问题:
- 命名冲突
- 文件依赖
3. 通过模块化,解决了什么问题
模块化就是把单独的一个功能封装到一个模块(文件)中,模块之间相互隔离,但是可以通过特定的接口公开内部成员,也可以依赖别的模块
模块化开发的好处:
方便代码的复用,从而提高开发效率,方便后期维护
4. 各个模块的区别
a. AMD规范是通过Require.js实现的,所以需要下载Require.js文件
b. CMD是阿里开发的,使用起来的语法有点像CommonJS和AMD的结合版,SeaJS实现了CMD规范,所以需要下载这个seajs。
c. CommonJS:node.js原生就支持commonJS的规范。语法就exports和require两个,exports可以一起导出,也可以分开导出,require直接导入
d.ES6需要安装一些加载插件:babel-cli,babel-preset-es2015和browserify。
babel-cli主要是实现命令行,执行babel指令可以运行;
babel-preset-es2015: 把ES6转成ES5的工具,babel不仅可以完成es6转es5,还能转其他的,转啥就下载啥,所以这里就需要下载这个babel-preset-es2015。因为前面写的js文件,首先浏览器根本就不认识ES6的语法,因此需要babel来转成es5,另外,需要把它弄到浏览器环境中能执行,所以必须browserify
标签:浏览器,模块化,前端,CMD,规范,js,babel From: https://www.cnblogs.com/felix-felix/p/17134979.html