前言:以前在项目中用过require.js,可是因为赶进度,整个架子又是别人搭建的,没有具体的去理解模块化变成究竟是怎么一回事,如今趁着有空好好的理解记录下java
1.首先,为何使用模块化编程?编程
为方便文件管理、增长复用,咱们须要细化JS文件,每一个文件负责单一职能,称之为模块,明确每一个文件的职能,当交互功能较复杂时,引用的文件也越加庞大,此时咱们就须要模块化管理。浏览器
2.模块化编程的规范及实现异步
模块化编程目前存在两种规范,一种是服务端的CommonJS,另外一种是客户端的AMDide
2.1.CommonJS模块化
是一种规范,相似java中的interface函数
require - 用来引入依赖requirejs
export - 用来导出模块,包括标识符(identifier)和模块内容(contents)ui
问题在于CommonJS的这个Modules规范设计之初是为了server端设计的,它是一个同步的模式。可是这种模式并不适合于浏览器端,你们设想一下若是浏览器同步模式一个一个加载模块,那么打开将会变得很是的慢。设计
2.2.AMD
是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义",是CommonJS的一种实现,它最大的特色就是能够异步的方式加载模块,具体的不一样在于AMD有一个define函数,它可让当前模块运行时先加载当前模块所依赖的模块
define(['dep1','dep2'],function(dep1,dep2){
//内部只能使用制定的模块
return function(){};
});
2.3.CMD
也是CommonJS的一种实现理念为须要时再执行,即按需加载
define(function(require,exports,module){
//此处若是须要某XX模块,能够引入
var xx=require('XX');
});
3.require.js
实际上require.js实现了AMD与CMD。项目中大多使用这个。具体怎么用就很少说了
http://www.requirejs.cn/