CommonJs、AMD、CMD

一、CommonJS


CommonJS就是为js的表现指定的规范,nodeJS是这一规范的其中一种实现。因为js没有模块的功能所以CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器。

node,commonJS,浏览器以及W3C之间有什么关系:

CommonJS定义的模块分为:

  • 模块引用:require
  • 模块定义:exports
  • 模块标识:module

require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身。

二、AMD


CommonJS是主要为了js在后端的表现指定的,他是不适合前端的,为什么这么说呢?因为服务器端js的执行大多依赖服务器系统的本地资源(如:CPU、内存、磁盘),而浏览器端js大部分依赖于网络。于是,AMD(异步模块定义)出现了,它主要就是为前端js的表现指定规范。


AMD就只有一个接口:define


RequireJS就是这一规范的实现,以下是requireJS定义模块的代码:

define(['jquery', 'otherModule'], function($, otherModule) {
    var $select = $('#select');
});

如果没有什么依赖,下面这样写也可以:

define(function() {
    console.log('hello world');
});

三、CMD


  大牛玉伯写的seaJS就是遵循CMD规范的实现,与AMD不同的是,他采用的是按需加载模块的思想,这在移动端用的比较多,因为它比AMD加载方式更节约流量。

原文地址:https://www.cnblogs.com/lijiazhan/p/6306892.html