RequireJS脚本加载顺序

时间:2015-01-16 12:01:47

标签: javascript jquery twitter-bootstrap requirejs

我正在尝试使用requirejs加载bootstrap和kendo-ui,但它们都依赖jquery来加载。

目前,所有三个脚本都在加载异步(来自CDN):

require.config({
    paths: {
        "jquery": [
            "https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min",
            "libs/jquery"
        ],
        'bootstrap': [
            'http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min',
            'libs/bootstrap'
        ],
        'kendo': [
            'http://cdn.kendostatic.com/2014.1.416/js/kendo.ui.core.min',
            'libs/kendo'
        ]
    }
})

require(['jquery', 'bootstrap', 'kendo'], function () {
    $('body').html('hi!')
})

如果在完全加载jquery之前如何才能加载其他脚本?

我认为有一种更好的方式:

require(['jquery'], function () {
    require(['bootstrap', 'kendo'], function () {
        $('body').html('hi!')
    })
})

如果这种情况有效(我的头脑中)。

1 个答案:

答案 0 :(得分:2)

尝试使用shim-option之类的,

require.config({
   paths: {
        'jquery': 'https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min',
        'bootstrap': 'http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min',
        'kendo': 'http://cdn.kendostatic.com/2014.1.416/js/kendo.ui.core.min'
    }, 

    // Use shim for plugins that does not support ADM
    shim: {
        'bootstrap': ['jquery'],
        'kendo': ['jquery']
    }
});

另请参阅example-of-jquery-shim