Require.js建立安排

时间:2013-03-25 00:09:04

标签: build requirejs

我的基于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官方示例代码中看到它的方式..

1 个答案:

答案 0 :(得分:0)

main.js之类的声音应该是您的data-main脚本,您应该将jquery定义为main.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
});
相关问题