如何在Elm中使用外部JavaScript库?

时间:2017-04-02 07:41:04

标签: javascript elm

我最近一直在为一个项目测试榆树,但遇到了一些问题 - 其中一个是使用外部JS库和Elm(例如Moment.js,i18n,firebase等)。我已经尝试过以下示例,但它并没有完全回答我想要的内容:

https://gist.github.com/evancz/e69723b23958e69b63d5b5502b0edf90

根据示例,我必须创建单独的程序,以便将模块移出并为每个程序生成静态.js文件。是否可以只在一个文件中写入所有端口,使用端口的最佳做法是什么?

1 个答案:

答案 0 :(得分:3)

  

根据示例,我必须创建单独的程序,只是为了将模块移出并为每个程序生成静态.js文件。

我不相信这是真的。您链接到的拼写示例仅用于说明如何使用端口。您不必将使用端口的程序的每个部分编译到其自己的.js文件中。

您可以将所有端口放在一个模块中,但我会犹豫不决。在我看来,更好的方法是为每个要使用的外部JS库提供一个端口模块,并将用于与该模块中的该库通信的所有端口放在一起。这样,每个这样的模块的责任是明确的。然后,将整个Elm应用程序,端口模块和所有文件编译成一个.js文件。

  

使用端口的最佳做法是什么?

嗯,这有点开放。尽管如此,从我有限的经验来看:

  • 将端口处理保留在单独的模块中,如果不需要,则不要将模块声明为port module

  • 确保您彻底测试与第三方库的集成,尤其是错误情况。如果通过端口从外部库返回到Elm的数据类型不是您声明的那样,Elm将抛出异常。

  • 如果您能找到与外部JS库相同的Elm包,请考虑使用它。