2

我有一个基于 require.js 的项目的文件安排,如下所示:

  • lib 文件夹:一些库
  • app.js :这是在 html 中作为 data-main 添加的
  • main.js :这是主应用程序文件

在 app.js 中,有一个 requirejs.config 和一个 require 调用来加载所有库,以及 main.js(这将需要一些其他模块,这些模块是我自己的脚本)。这看起来像这样:

require(['lib/jquery/jquery-1.8.2.min'],

    function() {

        require(['main']);
    }
);

所以有一些 AMD 不兼容的库(这里只是 jquery)首先加载到全局空间中,然后调用 main.js(及其所有依赖项)。这工作正常,但现在我尝试使用 require.js 的优化器进行构建,但我遇到了这个问题:如果我进行构建:“node r.js -o build.js”(build.js 只选择 app.js作为输入)main.js 和它的所有依赖项都没有被丑化并内置到结果文件中,它们保持相同的方式。

现在,如果我在库列表的末尾添加“main”,这些库将很好地与它的所有依赖项一起被丑化到输出文件中。我认为依赖关系已经实现,因为 main.js 位于最后,但问题是,如果我运行代码(我编写的)的正常、未修饰和未优化版本,因为它有时会同时加载库main 将首先加载,因此不满足依赖项。

似乎我必须有一个用于开发的应用程序版本和一个用于构建的应用程序版本?但我确信有更好的方法。如果它更有意义,我愿意将我的文件重新排列为任何其他结构,但这也是我在 require js 官方示例代码中看到的方式。

4

1 回答 1

0

听起来main.js应该是你的data-main脚本,你应该定义jquerymain.js. 例如,您main.js可能看起来像:

require.config({
  shim: {
    'jquery': {
      exports: '$'
    }
  },
  paths: {
    'jquery': 'lib/jquery/jquery-1.8.2.min'
  }
});
define([
  'jquery'
  //more libraries here
], function($) {
  //main code here
});
于 2013-03-28T20:12:54.930 回答