gpt4 book ai didi

webpack - 将 Elm 运行时提取到单独的 block 中

转载 作者:行者123 更新时间:2023-12-02 16:35:23 24 4
gpt4 key购买 nike

编译 Elm 文件时,Elm 运行时会提取到同一文件中。从现在开始,我们将此文件称为 app.js。即使在 app.js 中更改了一个字节,哈希也会发生变化,从而导致客户端重新下载该文件,即使只更改了一个字节。有没有办法将 Elm 运行时提取到单独的 vendor (或 commons) block 中?

最佳答案

在 Elm 0.18 及之前的版本中,Elm 的核心包含在每个 bundle 中。

这可能效率很低,例如,如果您在多个页面上加载不同的 Elm 组件。每个页面都需要生成自己的包,但 Elm 核心将包含在每个包中。

解决方法(未经测试!)

  1. 将您的 Elm 代码编译到一个包中,output.js
  2. 打开 output.js 并从文件开头开始,直到最后一个 var 声明,如下所示:

    var _elm_lang$html$Html_Events$Options = F2(

    在以 _elm_lang 开头的最后一个变量声明下方,您应该会看到您编写的模块的代码。这就是分离开始的地方。

  3. 将整个 block 复制并粘贴到一个单独的文件中,并将其命名为 elm-core.js
  4. 多田!您现在应该能够在 HTML 文件中像这样加载它们:

     <html>
    <script src="elm-core.js"></script>
    <script src="output.js"></script>
    </html>

小心!整个输出包包装在 IIFE(立即调用函数表达式)中,因此您必须将所有 block 包装在其中以确保其正常工作。如果不这样做,您将收到类似“F2”的错误未定义”和“A2 未定义”。

榆树0.19+

在 Elm 的 future 版本中应该有更好的解决方案来解决这个问题。

关于webpack - 将 Elm 运行时提取到单独的 block 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41846216/

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