我有一个正在使用的工作应用程序requirejs
,我正在尝试对其进行优化。我分两步启动应用程序:
首先我从一个设置文件开始setup.js
,我从页面源代码调用它:
<script data-main="../js/setup" src="../js/l/require/require.js"></script>
此文件包含我的要求设置
var IS_LOCAL = /(:\/\/localhost|file:\/\/)/.test(document.location.href);
requirejs.config({
waitSeconds: (IS_LOCAL ? 2 : 45),
baseUrl: "../js",
paths: {
intro: 'intro',
overrides: 'overrides',
jquery: 'l/jquery/jquery-1.8.2.min',
mobile: 'l/jquery-mobile/jquery-mobile-1.3pre.min',
multiview: 'p/multiview/multiview.min',
respond: 'p/respond/respond.min',
i18next: 'p/i18next.min.js'
},
shim: {
'overrides': { deps: ['jquery'] },
'mobile': { deps: ['jquery'] },
'multiview': { deps: ['jquery', 'mobile'] },
'respond': { deps: ['jquery'] },
'i18next': { deps: ['jquery'] }
}
});
// launch application - works, but I'm not happy with it
requirejs('overrides','jquery','mobile','multiview','respond','i18next','intro'],
function (overrides, $, mobile, multiview, respond, i18next, Intro) {
'use strict';
Intro.start(overrides, $, mobile, multiview, respond, i18next);
}
);
这“触发”了我的应用程序控制器intro.js
,如下所示:
define([], function () {
'use strict';
var start = function () {
require(['overrides','jquery','mobile','multiview','respond','i18next'],
function () {
// stuff
}
); // end require
} // end start
return {
"start": start
};
});
我还在想办法使用requireJS,所以虽然上面的初始化正确,但我不确定这是否是最好的处理方式。具体来说,我想知道:
问题:
1) 在我的 setup.js 文件中,我Intro.start()
使用大量参数触发。我需要那里的参数还是应该intro.js
在我进行第二次 require 调用时将它们放在里面?
2)我是否需要第一个要求,因为我需要所有文件,然后触发一个“文件”(介绍),这又需要一切?
3) 如何使 intro.js 中的对象可用?假设我需要i18next
里面的对象intro.js
来做一些手动翻译。我是否在垫片中导出并通过我的两个要求?
感谢您的一些见解!