2014-12-30 2 views
15

Я работаю с Вяжем. Я прочитал о ports в Elm и как они могут помочь в обмене данными/сообщениями между Elm и Javascript.Есть ли способ использовать библиотеку javascript в вязах?

Я собираюсь работать с богатой библиотекой datetime, например, moment.js. Предложите, как переносить moment.js или любые другие альтернативы для этого?

ответ

14

Для Elm (AFAIK) нет богатых библиотек datetime, так что давайте портируем.

Я быстро просмотрел эту библиотеку JavaScript, и похоже, что большинство ее функций не зависит от текущей даты/времени, которая, как я ожидаю, является единственным побочным эффектом, используемым в библиотеке datetime. Таким образом, порты Elm не будут очень полезными.

Решение 1 - перевести код JS в Элм код

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

Решение 2 - Native Elm библиотека

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

Предупреждение: родные библиотеки, как правило, обескуражены.
Причина в том, что это действительно небезопасный способ прямого вызова функций JavaScript, никаких проверок компилятора, вы можете ввести произвольные побочные эффекты, которые испортили бы язык. Так что это не идеально. Но если вы убедитесь, что вы только привязываетесь к чистым функциям из библиотеки JavaScript, вы можете избежать этого.
Посмотрите пример родной библиотеки, например elm-markdown, чтобы посмотреть, как ее написать. Вам понадобится индикация "native-modules": true в файле elm-package.json. Если вы хотите опубликовать библиотеку по адресу package.elm-lang.org, ее необходимо будет сначала проверить и утвердить. Вы можете запросить это в списке рассылки.

Смежные вопросы