RequireJS 脚本加载顺序

RequireJS script load order

我正在尝试使用 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!')
    })
})

如果这能奏效的话(我没想到)。

尝试使用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