1.下载requireJS (百度云地址链接:http://pan.baidu.com/s/1kUK0EY7 密码:81o0)
2.在下载的requireJS末尾处 req(cfg);}(this));后加入下面的一段话
var CONTEXTPATH = "http://localhost:8008";
var requireConfig = {
baseUrl: CONTEXTPATH + "/public/js/apps",
paths: {
jquery: '../plugins/jquery-1.8.3.min',
free: '../plugins/free/js/free',
common: 'common/common'
},
shim: {
free: {
deps: ['jquery'],
exports: 'free'
},
}
//加上时间戳
// urlArgs: "bust=" + (new Date()).getTime()
3.在你要写的haha.html中引用文件时,data-main中为该页面对应的js文件,不需要加.js
<script type="text/javascript" src="/public/js/plugins/require.js"
data-main="/public/js/apps/haha"></script>
4.haha.js最上边加上下面这段话
require.config(requireConfig);
require(['jquery',
'fly',
'common'
], function ($, fly) {
//这部分为你需要编写的功能
});
5.附加:为什么要加shim(
为了引用第三方模块---未使用define
来申明模块
)
通过require
加载的模块一般都需要符合AMD规范即使用define
来申明模块,但是部分时候需要加载非AMD规范的js,这时候就需要用到另一个功能:shim,shim解释起来也比较难理解,shim直接翻译为"垫",其实也是有这层意思的,目前我主要用在两个地方
1. 非AMD模块输出,将非标准的AMD模块"垫"成可用的模块,例如:在老版本的jquery中,是没有继承AMD规范的,所以不能直接require["jquery"],这时候就需要shim,比如我要是用underscore类库,但是他并没有实现AMD规范,那我们可以这样配置
require.config({
shim: {
"underscore" : {
exports : "_";
}
}
})
这样配置后,我们就可以在其他模块中引用underscore模块:
require(["underscore"], function(_){
_.each([1,2,3], alert);
})
6.
插件形式的非AMD模块,我们经常会用到jquery插件,而且这些插件基本都不符合AMD规范,比如jquery.form插件,这时候就需要将form插件"垫"到jquery中:
require.config({
shim: {
"underscore" : {
exports : "_";
},
"jquery.form" : {
deps : ["jquery"]
}
}
})
也可以简写为:
require.config({
shim: {
"underscore" : {
exports : "_";
},
"jquery.form" : ["jquery"]
}
})
这样配置之后我们就可以使用加载插件后的jquery了
require.config(["jquery", "jquery.form"], function($){
$(function(){
$("#form").ajaxSubmit({...});
})
})