requirejs中shim使用

对不符合AMD规范的js脚本使用shim做导出配置,哪里不对?
demo:https://github.com/xiaodongzai/demos/tree/gh-pages/requirejs_shim

clipboard.png

<!-- 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);
}

异常信息:

clipboard.png

阅读 15.2k
4 个回答
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;
});

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题