gpt4 book ai didi

javascript - Requirejs - 通过不同的模块共享相同的依赖

转载 作者:行者123 更新时间:2023-11-29 09:53:44 26 4
gpt4 key购买 nike

想象一下这个项目脚手架:

  • utils.js
  • module1/controllers.js
  • module1/services.js
  • module2/controllers.js
  • module2/services.js

实用程序.js

define([], function(){  /* My utils functions */ });

module1/controllers.js

define(['../utils'], function(utils){  /* Module1 stuff */ });

module2/controllers.js

define(['../utils'], function(utils){  /* Module2 stuff */ });

这在非优化上下文中工作得很好,因为 utils.js 只下载一次,无论是从 module1 还是 module2。但是我需要将每个模块优化并打包在一个 JS 文件中。

为了得到这个,我在每个模块中添加了一个main.js文件,例如:

module1/main.js

define(['./controllers', './services.js'], function(){});

现在我开始使用优化工具,这是我的 app.build.js

...
modules: [
{ name: "module1/main" },
{ name: "module2/main" },
]
...

好的,我得到了我想要的行为,但我看到两个模块都包含 utils.js 代码。这种行为是正确的,因为您无法保证加载顺序。

所以,这些是我的问题:

  1. 对此是否存在任何智能解决方案?
  2. 如果不能跳过这个,有人知道 requirejs 是如何工作的吗?这种策略会产生任何类型的问题吗?

最佳答案

最后我使用构建脚本中的排除选项得到了答案:

...
modules:[
{ name: 'utils' },
{ name: 'module1/main', exclude: ['utils'] }
{ name: 'module2/main', exclude: ['utils'] }
]
...

通过这种方式,我为实用程序创建了一个单独的模块,并避免使用“排除”选项将其包含在其他模块代码中。这种方法迫使您手动编写这种“全局”依赖项,但它有效:)

关于javascript - Requirejs - 通过不同的模块共享相同的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16966973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com