前端开发必看的3种JS规范

今天介绍JS中CommonJS,AMD,CMD规范,这三个规范都是为Javascript模块化加载而生的。

都是用在预计要用到某些模块时加载该模块,使得开发复杂系统时巨大的庞杂的代码得以很好的组织和管理。

模块化使得我们在使用和管理代码的时候不那么混乱,而且也方便了多人的合作。

CommonJS

CommonJS规范主要是在服务器端模块化的规范,一个单独的文件就是一个模块。

每一个模块都是一个单独的作用域,在该模块内部定义的变量,无法被其他模块读取,除非定义为全局对象属性。

在CommonJS中有一个全局性方法require(),用于加载模块。

CommonJS加载模块是同步的,所以只有加载完成才能执行后面的操作。

像Node.js主要用于服务器的编程,加载的模块文件一般都已经存在本地硬盘,所以加载起来比较快,不用考虑异步加载的方式,所以CommonJS规范比较适用。

但如果是浏览器环境,要从服务器加载模块,这是就必须采用异步模式。

所以就有了AMD解决方案。

AMD

AMD,英文全称:AsynchronousModuleDefinition。

这个规范可以实现异步加载依赖模块,并且会提前加载。

看一下AMD规范你会发现,AMD基本都是提前说明依赖模块。

然后预加载这些模块,实际上这就要求你提前想好这些依赖,提前写好,不然写代码过程中要回到开头继续添加依赖。

CMD

CMD,英文全称:CommonModuleDefinition。

不知道是不是针对这个问题,淘宝的玉伯大牛搞了个SeaJs出来,并声称这个是遵循CMD规范的。

从SeaJs可以看出CMD与AMD一样都是预加载依赖js,不同的地方是调用和声明依赖的地方。

AMD和CMD都是用define和require,但是CMD标准倾向于在使用过程中提出依赖。

就是不管代码写到哪突然发现需要依赖另一个模块,那就在当前代码用require引入就可以了,规范会帮你搞定预加载,你随便写就可以了。

但是AMD标准让你必须提前在头部依赖参数部分写好。




转载请注明:http://www.aierlanlan.com/grrz/1722.html