需要多页&多应用程序不执行定义回调

时间:2013-12-13 11:20:58

标签: javascript requirejs build-process minify r.js

我有一个多页/多应用程序minifcation我正在努力工作。

结构如下

common/
--main config file that defines the common libs
common/build
--app.build.js (see example below)

application1/
--application
--milion other files

application2/
--application
--thousand other files

这是放在页面的标题中

</style><script data-main='common/main' src='libraries/require.js'></script>
像这样的页脚

<script>require(['../application1/application']);</script>
<script>require(['../application2/application']);</script>

这种方法在使用大量文件时非常有效,并且应用程序可以完美地运行和交互 然而,尝试将它们合二为一,在使其工作方面似乎更具挑战性。我可能只是一个白痴

构建文件

({

    baseUrl: "../",
    mainConfigFile: '../main.js',

    optimize: 'uglify',
    optimizeCss: 'standard',
    out: "../global.min.js",
    //insertRequire: ['main'],

    include: ['../application1/application', '../application2/application'],
    wrap: true // have tried both options - this makes the scenario at the bottom work

})

这很完美,可以产生一个可爱的global.min.js。挑战是它不执行定义调用的回调我包括它如下:

这是放在页面的标题中

</style><script data-main='common/main' src='libraries/require.js'></script>
像这样的页脚

<script>require(['../common/global.min']);</script>

但是:如果我在这样的地方保留旧的要求:

<script>require(['../application1/application']);</script>
<script>require(['../application2/application']);</script>

下载3个文件

  • 公共/ global.min.js
  • 应用1 /的application.js
  • 应用2 /的application.js

注意:此时它缺少大约150个文件,但应用程序工作正常。

花了一些时间在这上面,我的脑袋现在已经被破坏了,我无法弄清楚如何从一个缩小的文件中使它工作。

任何帮助都非常感激,因为我已经尝试过任何我能想到的东西。很高兴分享所有文件,其中有很多文件; - )

1 个答案:

答案 0 :(得分:0)

这是一个有根据的猜测,基于你在问题中所展示的内容以及RequireJS失败模式的经验。我猜"./common/global.min"不是模块名称。 (如果要检查此项,请打开优化的捆绑包并查看所有define次调用。如果发现它们都没有"./common/global.min",则它不是模块名称。)

当您需要"./common/global.min"时,RequireJS会加载相应的文件,然后在其中查找名为"./common/global.min"的模块。它找不到,你的代码也无法运行。

解决此问题的一种方法是使用RequireJS配置和优化的捆绑包来映射这样的名称:

paths: {
    '../application1/application': './common/global.min'
    '../application2/application': './common/global.min'
}

使用这些模块名称而不是require来调用"./common/global.min"。这个配置告诉RequireJS“当你在寻找这些模块时,查看那个文件:它们就在那里”,这确实是优化过程的作用。