Есть ли способ использовать библиотеку javascript в вязах?

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

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

Ответы

Ответ 1

В Elm (AFAIK) нет богатых библиотек datetime, поэтому отпустите с портированием.

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

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

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

Решение 2 - Библиотека родных эльфов

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

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

Ответ 2

Не переписывайте библиотеку в Elm. Элм прекрасно играет с внешним миром. Взгляните на Elm Ports: http://elm-lang.org/guide/interop