编译Elm文件时,Elm运行时将被提取到同一文件中.我们app.js
从现在开始调用此文件.即使更改了一个字节app.js
,哈希值也会发生变化,导致客户端重新下载文件,即使只更改了一个字节.有没有办法将Elm运行时提取到一个单独的vendor
(或commons
)块中?
在Elm 0.18和之前的版本中,Elm的核心包含在每个捆绑包中.
这可能效率低下,例如,如果您在多个页面上加载不同的Elm组件.每个页面都需要生成自己的包,但每个包中都包含Elm核心.
解决方法(未经测试!)将您的Elm代码编译成一个包, output.js
打开output.js
并从文件的开头一直到最后一个var
看起来像这样的声明:
var _elm_lang$html$Html_Events$Options = F2(
在_elm_lang
您开始的最后一个变量声明下面应该看到您编写的模块的代码.这就是分离开始的地方.
将整个块复制并粘贴到单独的文件中并命名 elm-core.js
田田!您现在应该能够在HTML文件中加载它们:
谨防!整个输出包被包装在IIFE(立即调用的函数表达式)中,因此您必须将其中的所有块包装起来以确保它正常工作.如果不这样,您将收到"F2未定义"和"A2未定义"等错误.
榆树0.19+在Elm的未来版本中,应该有一个更好的解决方案来解决这个问题.