require参数有十几个,目前接触最多的就是这三个。
baseUrl
模块获取文件的根目录。
如果baseUrl没有被明确定义,则它的默认值是加载它HTML的文件目录;
如果data-main属性被定义了,则它的默认值是data-main中的文件所在目录。
三种例外情况,不会从baseUrl目录中加载js文件
- 模块路径名带.js后缀
- 模块路径以根目录/开头
- 带URL协议的,例如http、https
paths
为不直接在baseUrl中的模块命名。
- paths中配置的路径不用带.js后缀
- paths中路径支持数组形式
paths: {
jquery: [
//首先会尝试去加载CDN上的js文件,加载失败才加载本地jquery文件。
'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min',
'lib/jquery'
]
}
shims
参考 https://my.oschina.net/ososchina/blog/668548
- 导出非AMD模块化函数
//hello.js
function sayHi(name) {
alert('Hi '+name);
}
function sayHello(name) {
alert('Hiello '+name);
}
// config.js
requirejs.config({
baseUrl: '/public/js',
paths: {
hello: 'hello'
},
shim: {
hello: {
init: function() { //使用init将2个函数声明出来
return {
sayHi: sayHi,
sayHello: sayHello
}
}
}
}
});
// index.js
requirejs(['hello'], function(hello) {
hello.sayHi('zhangsan');
hello.sayHello('lisi');
});
- 解决模块间的依赖问题
requirejs.config({
shim: {
'backbone': {
// backbone依赖于underscore、jquery
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
}
});