JS模块化开发是目前非常流行的JS开发模式,目前模块化开发主要有两种形式,一种是以CommonJS为代表的CMD(Common Module Definition--通用模块定义)模式,一种是以require.js为代表的AMD(Asynchronous Module Definition--异步模块定义)模式。
我们看下CMD和AMD模块定义:
CMD:
define(function(require, exports, module) {} );//function代表factory
AMD:
define(id?, dependencies?, factory);CMD和AMD的本质区别体现在factory函数上,对于CMD模式来说,在factory执行时才通过require加载依赖的模块,但对于AMD方式来说,依赖模块是通过dependencies引入的,必须在factory函数执行之前先执行。
JS模块化编程的诞生,主要起源于2009年,Ryan Dahl创建的Node.js项目,将javascript应用于服务器端编程,模块化对于构建复杂的JS项目必不可少。当前浏览器端构建复杂项目的情况也越来越多,前端模块化编程的框架也越来越多,比较典型的像ExtJS4.2(这个是很重量级的框架)、国内很火的Sea.js(小巧的模块加载器)和国外的browserify。
现在说一说Sea.js,Sea.js是支付宝玉伯开发的,在CSDN有玉伯的专访,个人非常佩服,真正的技术达人。
Sea.js的构建工具有spm和grunt,构建工具