使用RequireJs以特定顺序加载文件 [英] Load files in specific order with RequireJs
本文介绍了使用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.js
和login.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屋!
查看全文