繁体   English   中英

配置requirejs和shim

[英]Configuration of requirejs and shim

我有这种配置:

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。

请帮忙 :(

引用Requirejs-getStarted

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

require([“ helper / util”],function(util){//此函数在加载脚本/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 );
});

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

'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: '$'
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM