使用RequireJs以特定顺序加载文件 [英] Load files in specific order with RequireJs

查看:27
本文介绍了使用RequireJs以特定顺序加载文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是RequireJS新手,我无法接受加载顺序。

我有一个全局项目配置,需要在js/app/*中的模块之前加载。

这是我的结构:

index.html
config.js
js/
    require.js
    app/
        login.js
    lib/
        bootstrap-2.0.4.min.js

这里是config.js文件:

var Project = {
    'server': {
        'host': '127.0.0.1',
        'port': 8080
    },
    'history': 10,      // Number of query kept in the local storage history
    'lang': 'en',       // For future use
};

这是我需要的文件(app.js):

requirejs.config({
    //By default load any module IDs from js/lib
    baseUrl: 'js/lib',
    //except, if the module ID starts with "app",
    //load it from the js/app directory. paths
    //config is relative to the baseUrl, and
    //never includes a ".js" extension since
    //the paths config could be for a directory.
    paths: {
        bootstrap: '../lib/bootstrap-2.0.4.min',
        app: '../app',
    },
    shim: {
        'app': {
            deps: ['../../config'],
            exports: function (a) {
                console.log ('loaded!');
                console.log (a);
            }
        } // Skual Config
    },
});

var modules = [];
modules.push('jquery');
modules.push('bootstrap');
modules.push('app/login');


// Start the main app logic.
requirejs(modules, function ($) {});

但有时,当我加载页面时,因为login.js已在config.js之前加载,所以";Project";未定义。

无论如何,如何首先强制加载config.js?

注意:我将order.js视为RequireJS的插件,但显然不支持,因为v2替换为shim

AMD

如果将js文件定义为推荐答案模块,则不必担心加载顺序。(或者,如果您无法修改config.jslogin.js来调用define,则可以使用填充配置)。

config.js应该如下所示:

define({project: {
    'server': {
        'host': '127.0.0.1',
        'port': 8080
    },
    'history': 10,      // Number of query kept in the local storage history
    'lang': 'en',       // For future use
}});

login.js:

define(['jquery', '../../config'], function($, config) {

    // here, config will be loaded
    console.log(config.project)

});

同样,仅当不能在模块内调用define()时,才应使用填充配置。

这篇关于使用RequireJs以特定顺序加载文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆