要求多页&多应用程序未执行定义回调

Requirejs multi-page & multi-app not executing define callbacks

本文关键字:执行 定义 应用程序 回调 amp      更新时间:2023-09-26

我有一个多页/多页的应用程序缩小,我正在努力使其工作。

结构如下

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>

HOWEVER:如果我在这样的地方保留旧的需求:

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

它下载3个文件

  • common/global.min.js
  • application1/application.js
  • application2/application.js

注意:目前缺少大约150个文件,但应用程序运行良好。

在这件事上花了一些认真的时间后,我的大脑现在完全崩溃了,我不知道如何从一个缩小的文件中使它工作。

任何帮助都非常感谢,因为我已经尽力了。很高兴分享所有的文件,尽管有很多;-)

这是一个有根据的猜测,基于您在问题中所展示的内容和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'
}

并使用这些模块名称而不是"./common/global.min"调用require。这个配置RequireJS"当你在寻找这些模块时,在中查找文件:它们就在那里",实际上这就是优化过程所做的。