0

我有这种配置:

require.config({

    paths: {
        jquery: '../libs/jquery/dist/jquery',
        uicore: '../libs/jquery-ui/ui/jquery.ui.core',
        uiwidget: '../libs/jquery-ui/ui/jquery.ui.widget',
        uidialog: '../libs/jquery-ui/ui/jquery.ui.dialog'
    },

    shim: {
        uicore: ['jquery'],
        uiwidget: ['uicore'],
        uidialog: ['uiwidget']
    },

    urlArgs: "bust=" +  (new Date()).getTime()

});

require(['uidialog'], function (d) {
    console.log(d); // undefined;
});

那么,我的代码有什么问题?为什么 d 未定义?每个文件都已下载,jquery 版本为 2.1。

请帮忙 :(

4

2 回答 2

0

引用Requirejs-getStarted

在 main.js 中,您可以使用 require() 来加载您需要运行的任何其他脚本。这确保了单个入口点,因为您指定的数据主脚本是异步加载的。

require(["helper/util"], function(util) { //这个函数在scripts/helper/util.js被加载的时候被调用。 //如果util.js调用define(),那么这个函数直到//util 的依赖项已经加载,并且 util 参数将保存 //“helper/util”的模块值。});

我建议,例如:

require.config({
    baseUrl: 'js/lib',
    paths: {
        jquery: 'jquery-1.9.0'
    }
});

然后:

require(['jquery'], function( jq ) {
    console.log( jq ) // OK
});

可能您的配置中有错误的路径..

编辑

你有没有尝试:

define(['jquery'], function (jq) {
    return jq.noConflict( true );
});
于 2014-03-03T09:39:42.507 回答
0

答案很简单:就是导出$. 像这样:

'ui.core': {
    deps: ['jquery'],
    exports: '$'
},
'ui.widget': {
    deps: ['ui.core'],
    exports: '$'
},
'ui.button': {
    deps: ['ui.core'],
    exports: '$'
},
'ui.dialog': {
    deps: ['ui.widget', 'ui.button'],
    exports: '$'
}
于 2014-03-03T10:57:00.093 回答