Импорт определенной функции против показа всего в elm - PullRequest
0 голосов
/ 15 ноября 2018

Когда я импортирую библиотеку в elm, будет ли импорт только определенных функций эффективнее, чем все?

Например, когда я импортирую HTML-модуль, я обычно просто выставляю все

import Html exposing (..)

Это удобно, так как я продолжаю писать, мне не нужно постоянно изменять определение, чтобы добавить больше HTML-тегов, но эффективно ли это? Сможет ли компилятор понять, что мне не нужна вся библиотека в моем исходном коде, или он все это импортирует?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Я не думаю, что есть преимущество в производительности при импорте именно тех функций, которые вы хотите использовать.Как уже упоминалось, до 0.19 весь модуль импортируется в любом случае, а после 0.19 вы можете передать --optimize для устранения мертвого кода.

Однако , я настоятельно рекомендую не импортировать все функции, предоставляемыемодуль, потому что он делает код очень трудным для чтения.Представьте себе этот случай:

import Html exposing (..)
import Svg exposing (..)
import Html.Attributes exposing (..)
import Svg.Attributes exposing (..)

Мы перенесли все функции из этих четырех модулей в наше собственное пространство имен, поэтому каждый раз, когда я читаю имя функции, которая не определена, я должен угадывать, куда эта функция приходитот.Альтернатива - просто выставлять типов , но никогда не функционировать:

import Html exposing (Html)
import Svg exposing (Svg)
import Html.Attributes as HAttr
import Svg.Attributes as SAttr

Таким образом, ни разу вам не придется угадывать, откуда происходит функция.

0 голосов
/ 15 ноября 2018

Начиная с elm 0.19, компилятор имеет устранение мертвого кода на уровне функций. Таким образом, ваше скомпилированное приложение должно быть одинаковым в любом случае.

Я не уверен, что использование только используемых функций сократит время компиляции.

https://elm -lang.org / блог / мал-активы-без-на-головная боль

...