我在使用Elm。我已经阅读了Elm中的端口,以及它们如何帮助在Elm和Javascript之间共享数据/消息。
我打算使用一个丰富的日期时间库,例如moment.js。请建议如何移植moment.js或其他替代方案?
Elm没有任何丰富的日期时间库(据我所知),因此让我们进行移植。
我快速浏览了这个JavaScript库,发现它的大部分功能并不依赖于当前日期/时间,我认为这是日期时间库中唯一使用的副作用。因此,Elm的移植不会非常有用。
这显然需要一些时间,但应该相当简单,因为大部分代码都没有副作用。
更新:从Elm 0.19开始,不再支持创建自己的原生模块。
由于大多数函数都是纯的,因此编写本地库可能是最好的选择。这样,来自moment.js的函数可以在Elm中一一映射到函数。
警告:通常不建议使用本地库。
原因是直接调用JavaScript函数实际上是一种不安全的方式,没有编译器检查,您可能会引入任意的副作用,从而破坏语言。因此,这不是理想的选择。但是,如果确保只绑定到JavaScript库中的纯函数,则可以获得一些好处。
请查看示例本地库,例如elm-markdown,以了解如何编写本地库。您将需要在elm-package.json
文件中指定"native-modules": true
。如果要在package.elm-lang.org上发布库,需要进行审核和批准。您可以在邮件列表上申请。