我有一个使用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
内?
2)我是否需要第一个要求,因为我需要所有文件,然后触发“文件”(简介),这又需要一切?
3)如何在intro.js中提供对象?假设我需要i18next
内的intro.js
对象进行一些手动翻译。我是否在垫片中导出并通过我的两个要求?
感谢您的一些见解!