有没有办法在榆树中使用javascript库?

时间:2014-12-30 07:04:25

标签: elm

我正在与榆树合作。我已经阅读了有关Elm中的ports以及他们如何帮助在Elm和Javascript之间共享数据/消息。

我打算使用像moment.js这样的丰富日期时间库。建议如何移植moment.js或任何其他替代方案?

3 个答案:

答案 0 :(得分:16)

Elm(AFAIK)没有任何丰富的日期时间库,所以让我们继续移植。

我快速浏览了一下这个JavaScript库,看起来它的大多数功能都不依赖于当前的日期/时间,我期望这是日期时间库中唯一的副作用。所以Elm端口不会很有帮助。

解决方案1 ​​ - 将JS代码转换为Elm代码

这显然需要一些时间,但应该相当简单,因为它主要是无副作用的代码。

解决方案2 - 原生榆木库

由于大多数函数都是纯函数,因此最好编写一个Native库。这样,来自moment.js的函数可以在Elm中的函数上一对一映射。

警告:通常不鼓励本地图书馆。
原因是它真的是一种直接调用JavaScript函数的不安全方式,没有编译器检查,你可以引入任意副作用,这会搞乱语言。所以这不太理想。但是如果你确保只绑定JavaScript库中的纯函数,你就可以逃脱它 看一下示例本机库,比如elm-markdown,看看如何编写一个。您需要"native-modules": true文件中的elm-package.json指示。如果您要在package.elm-lang.org上发布库,则需要先检查并批准该库。您可以在邮件列表中提出要求。

答案 1 :(得分:10)

不要在Elm中重写库。榆树与外部世界很好地配合。看看Elm Ports:http://elm-lang.org/guide/interop

答案 2 :(得分:2)

与此同时,Elm 0.18已经获得了一个合理的库来处理elm-community/elm-time中的日期和时间。

Elm 0.19带有一个新的核心时间处理库:elm/time