Lorsqu'un fichier Elm est compilé, le runtime Elm est extrait dans le même fichier. Appelons ce fichier app.js
à partir de maintenant. Lorsqu'un seul octet est modifié dans app.js
Dans ce cas, le hachage change, ce qui oblige le client à télécharger à nouveau le fichier, alors qu'un seul octet a changé. Existe-t-il un moyen d'extraire la durée d'exécution d'Elm dans un fichier séparé ? vendor
(ou commons
) chunk ?
Réponse
Trop de publicités?Dans Elm 0.18 et les versions précédentes, le noyau d'Elm est inclus dans chaque paquet.
Cela peut s'avérer inefficace, par exemple si vous chargez différents composants Elm sur plusieurs pages. Chaque page aurait besoin de son propre bundle généré, mais le noyau Elm serait inclus dans chaque bundle.
Solution de contournement (non testée !)
-
Compilez votre code Elm dans un paquet,
output.js
-
Ouvrir
output.js
et en commençant par le début du fichier jusqu'au derniervar
qui ressemble à peu près à ceci :var _elm_lang$html$Html_Events$Options = F2(
Sous la dernière déclaration de variable qui commence par
_elm_lang
vous devriez voir le code du module qui vous a écrit. C'est là que la séparation commence. -
Copiez et collez tout ce morceau dans un fichier séparé et nommez-le
elm-core.js
-
Tada ! Vous devriez maintenant pouvoir les charger comme ceci dans vos fichiers HTML :
<html> <script src="elm-core.js"></script> <script src="output.js"></script> </html>
Attention ! L'ensemble du paquet de sortie est enveloppé dans une IIFE (expression de fonction immédiatement invoquée) ; vous devrez donc envelopper tous les morceaux dans cette expression pour vous assurer que cela fonctionne. Si vous ne le faites pas, vous obtiendrez des erreurs telles que "F2 n'est pas défini" et "A2 n'est pas défini".
Elm 0.19+
Dans les prochaines versions d'Elm, il devrait y avoir une solution plus agréable à ce problème.