我正在与榆树合作。我已经阅读了有关Elm中的ports以及他们如何帮助在Elm和Javascript之间共享数据/消息。
我打算使用像moment.js这样的丰富日期时间库。建议如何移植moment.js或任何其他替代方案?
答案 0 :(得分:16)
Elm(AFAIK)没有任何丰富的日期时间库,所以让我们继续移植。
我快速浏览了一下这个JavaScript库,看起来它的大多数功能都不依赖于当前的日期/时间,我期望这是日期时间库中唯一的副作用。所以Elm端口不会很有帮助。
这显然需要一些时间,但应该相当简单,因为它主要是无副作用的代码。
由于大多数函数都是纯函数,因此最好编写一个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。