requirejs依赖加载超时

时间:2014-04-22 16:47:02

标签: jquery requirejs

我试图通过将jquery定义为依赖来加载jquery插件。

requirejs.config({
    baseUrl: '/assets/',
    paths: {
        jquery: 'jquery',
        jqueryujs: 'jquery_ujs',
        jquerybackstretch: 'jquery.backstretch',
        jquerysticky: 'sticky',
        jquerydialog: 'jquery.ui.dialog',
        app: 'index'
    },
    shim: {
        'jqueryujs': {
            deps: ['jqueryujs']
        },
        'jquerybackstretch': {
            deps: ['jquerybackstretch']
        },
        'jquerysticky': {
            deps: ['jquerysticky']
        },
        'jquerydialog': {
            deps: ['jquerydialog']
        },
        'app': {
            deps: ['app']
        }
    }
})

require(['jquery', 'jquerybackstretch', 'jqueryujs', 'jquerysticky', 'jquerydialog', 'app'], function($) {

})

以下是错误消息

Load timeout for modules: jquerybackstretch,jqueryujs,jquerysticky,jquerydialog,app

我是否正确加载了所有插件?还有其他加载插件的好方法吗?

1 个答案:

答案 0 :(得分:1)

这不起作用的原因是您在填充程序中设置了循环依赖项。例如:

'jqueryujs': {
    deps: ['jqueryujs']
}

这告诉RequireJS模块依赖于自身。据推测,你所拥有的名称中jquery的所有模块都依赖于jQuery,所以我希望如此:

shim: {
    'jqueryujs': {
        deps: ['jquery']
    },
    'jquerybackstretch': {
        deps: ['jquery']
    },
    'jquerysticky': {
        deps: ['jquery']
    },
    'jquerydialog': {
        deps: ['jquery']
    }
}

我不知道这些模块是什么(大多数)所以我无法判断它们是否相互依赖。您应该检查它们是否存在并添加deps设置所需的任何内容。

我不知道你的app模块是什么。如果它是您自己创建的要加载RequireJS的模块,那么它应该使用适当的依赖项列表调用define,并且您不需要填充它。