1、CommonJS前端
CommonJS就是为js的表现指定的规范,nodeJS是这一规范的其中一种实现。由于js没有模块的功能因此CommonJS应运而生,它但愿js能够在任何地方运行,不仅是浏览器。node
node,commonJS,浏览器以及W3C之间有什么关系:jquery
CommonJS定义的模块分为:后端
require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,惟一的导出口;module对象就表明模块自己。浏览器
2、AMD服务器
CommonJS是主要为了js在后端的表现指定的,他是不适合前端的,为何这么说呢?由于服务器端js的执行大多依赖服务器系统的本地资源(如:CPU、内存、磁盘),而浏览器端js大部分依赖于网络。因而,AMD(异步模块定义)出现了,它主要就是为前端js的表现指定规范。网络
AMD就只有一个接口:define异步
RequireJS就是这一规范的实现,如下是requireJS定义模块的代码:ui
define(['jquery', 'otherModule'], function($, otherModule) { var $select = $('#select'); });
若是没有什么依赖,下面这样写也能够:spa
define(function() { console.log('hello world'); });
3、CMD
大牛玉伯写的seaJS就是遵循CMD规范的实现,与AMD不一样的是,他采用的是按需加载模块的思想,这在移动端用的比较多,由于它比AMD加载方式更节约流量。