2017-01-25 9 views
7

Когда файл Elm скомпилирован, время выполнения Elm извлекается в тот же файл. Назовем этот файл app.js. Когда даже один байт изменяется в app.js, хеш изменяется, в результате клиент снова загружает файл, даже если изменился только один байт. Есть ли способ извлечь время работы Elm в отдельный блок vendor (или commons)?Извлечь время работы вальца в отдельный кусок

+0

Я не уверен, что есть способ сделать это. Есть способ скомпилировать и добавить дополнительные модули в app.js. Webpack на самом деле чувствует себя медленнее, чем Elm, поэтому вы теряете производительность, пытаясь сделать chunking с помощью webpack. Это хороший вопрос, хотя было бы неплохо отправить отдельный фрагмент через 'elm make' –

+0

@ RudolfOlah Перемещение времени выполнения Elm в отдельный кусок - это нечто большее для сборки сборки. Он просто чувствует себя правильно, чтобы установить время выполнения в коде поставщика, а также по причинам кэширования, которые я изложил. – DevNebulae

+0

Да, я согласен с этим, однако с Элмом кажется, что производительность лучше. Интересно, как компании, использующие Elm в производстве, развертывают его, интересно, используют ли они webpack или что-то еще. –

ответ

4

В Elm 0.18 и предыдущих версиях ядро ​​Elm входит в комплект поставки.

Это может быть неэффективным, например, если вы загружаете различные компоненты Elm на несколько страниц. Для каждой страницы потребуется собственный пакет, но ядро ​​Elm будет включено в каждый комплект.

Обход (! Непроверенные)

  1. компиляции кода Elm в пучок, output.js
  2. Открыть output.js и начиная с начала файла до последнего var декларации, которая выглядит примерно так:

    var _elm_lang$html$Html_Events$Options = F2(
    

    Ниже этой последней декларации переменной, которая начинается с _elm_lang вы должны увидеть код модуля, вы написал. Вот где начинается разделение.

  3. Скопируйте и вставьте этот весь кусок в отдельный файл и назовите его elm-core.js
  4. Тада! Теперь вы должны быть в состоянии загрузить их, как это в ваших HTML-файлов:

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

Осторожно! Весь выходной пакет завернут в IIFE (сразу вызывается выражение функции), поэтому вам придется обернуть все куски в этом, чтобы убедиться, что он работает. Если вы этого не сделаете, вы получите ошибки, такие как «F2 не определено» и «A2 не определено».

Elm 0.19+

В будущих версиях Elm должно быть лучше решение этой проблемы.