首页 > requirejs中shim使用

requirejs中shim使用

对不符合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;
});

【热门文章】
【热门文章】