gpt4 book ai didi

javascript - 是否可以从 require 优化器构建配置中排除一个模块,但可以单独优化该模块及其依赖项?

转载 作者:行者123 更新时间:2023-11-29 14:57:37 25 4
gpt4 key购买 nike

所以情况是这样的:

我有一堆页面特定的 js 文件,我正在使用 r.js 对其进行优化。

99% 的人定义了一个名为 core.js 的模块作为依赖。核心有 5 个自己的依赖项。

我想通过从页面 js 文件的优化版本中排除核心来利用缓存。

所以在我的 build.js 中,我尝试了一些类似的东西:

modules: [
{
name : 'modules/core'
},
{
name: 'homepage',
exclude : ['modules/core']
}
]

当我运行优化器时,它会优化模块/核心和主页。

转到使用 homepage.js 的页面,问题是:core.js 及其依赖项正在单独加载,导致 7 个请求而不是 2 个。

在上面的示例中,我试图实现的是:将 homepage.js 及其依赖项优化到单个文件中,并将其加载到优化版本的 core.js 中,而不是加载到 core.js 和它是单独的依赖项。

这可能吗?

最佳答案

在构建之后,您有两个选择:

1) 修改顶层加载,使模块/核心在任何其他加载之前加载:

require(['modules/core'], function () {
//Now do normal require stuff in here
});

如果您在主页完​​成加载之前看到它的模块被请求,请在其中对主页使用另一个嵌套的 require() 调用。

2) 插入一个 require.config block ,将 core 中的所有模块指向 core 文件。当多个模块 ID 都指向它时,requirejs 只会获取一次 core.js 文件:

require.config({
paths: {
'mod/one': 'modules/core',
'mod/two', 'modules/core',
...
}
});

或查看此类示例项目,该项目设置加载一个公共(public)层,然后加载一个特定于页面的层,但无需在构建后进行源修改即可工作(仅使用#1 的变体,但将其设置为以源代码形式工作):

https://github.com/requirejs/example-multipage

关于javascript - 是否可以从 require 优化器构建配置中排除一个模块,但可以单独优化该模块及其依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15396080/

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