学习了阮一峰大神关于javascript模块化开发整理的笔记:
总结:使用require.js只需做三件事情。
1.定义模块
// math.js
define(function (){
var add = function (x,y){
return x+y;
};
return {
add: add
};
});
//如果当前定义的模块还需要依赖其它模块,如下:
define(['myLib'], function(myLib){
function foo(){
myLib.doSomething();
}
return {
foo : foo
};
});
2.加载模块
// main.js
require(['math'], function (math){
alert(math.add(1,1));
});
加载非规范的模块
//举例来说,underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们的特征。
require.config({
shim: {
'underscore':{
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
//shim属性,专门用来配置不兼容的模块。[也就是自己定义的模块]具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。
//比如,jQuery的插件可以这样定义:
shim: {
'jquery.scroll': {
deps: ['jquery'],
exports: 'jQuery.fn.scroll'
}
}
3.配置文件require.config
//path属性指定各个模块的加载路径(这种写法默认主模块和这些模块在同一目录下)
require.config({
paths: {
"jquery": "jquery.min",
"underscore": "underscore.min",
"backbone": "backbone.min"
}
});
//这种是直接改变基目录baseUrl
require.config({
baseUrl: "js/lib",
paths: {
"jquery": "jquery.min",
"underscore": "underscore.min",
"backbone": "backbone.min"
}
});