如何优化requireJS应用程序设置?

时间:2013-01-13 17:01:42

标签: javascript jquery requirejs

我有一个使用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对象进行一些手动翻译。我是否在垫片中导出并通过我的两个要求?

感谢您的一些见解!

0 个答案:

没有答案