对不符合AMD规范的js脚本使用shim
做导出配置,哪里不对?
demo:https://github.com/xiaodongzai/demos/tree/gh-pages/requirejs_shim
<!-- index.html -->
<!DOCTYPE html>
<html>
<head lang="zh">
<meta charset="UTF-8">
<title>shim的使用</title>
</head>
<body>
<script src="./js/require.js" data-main="./js/app"></script>
</body>
</html>
//app.js
require.config({
baseUrl: "./js",
paths:{
'jquery': "jquery",
'log': 'log'
},
shim:{
'log':{
deps: ['jquery'],
exports: 'log'
}
}
});
require(['jquery','log'], function ($,log) {
log.writeLog('测试测试!!!');
});
//log.js
function writeLog(x){
document.write(x);
}
异常信息:
require(['jquery','log'], function ($,log) {
console.log(log);
});
打印出来是什么?
app.js修改如下:
注意:exports只会输出某一个方法或变量
//app.js
require.config({
baseUrl: "./js",
paths:{
'jquery': "jquery",
'log': 'log'
},
shim:{
'log':{
deps: ['jquery'],
exports: 'writeLog'
}
}
});
require(['jquery','log'], function ($,log) {
log('测试测试!!!');
});
你的log模块没有定义,所以不能require。
你的log.js里面应该这样写:
define(function(){
var log = {};
log.writeLog = function(str){
document.write(str);
};
return log;
});