簡體   English   中英

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

[英]How do I use external JavaScript libraries with Elm?

我最近一直在為一個項目測試榆樹,但遇到了一些問題 - 其中一個是使用外部JS庫和Elm(例如Moment.js,i18n,firebase等)。 我試過下面的例子,但它並沒有完全回答我的意思:

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

根據示例,我必須創建單獨的程序,以便將模塊移出並為每個程序生成靜態.js文件。 是否可以只在一個文件中寫入所有端口,使用端口的最佳做法是什么?

根據示例,我必須創建單獨的程序,以便將模塊移出並為每個程序生成靜態.js文件。

我不相信這是真的。 您鏈接到的拼寫示例僅用於說明如何使用端口。 您不必將使用端口的程序的每個部分編譯到其自己的單獨.js文件中。

您可以將所有端口放在一個模塊中,但我會猶豫不決。 在我看來,更好的方法是為每個要使用的外部JS庫提供一個端口模塊,並將用於與該模塊中的該庫通信的所有端口放在一起。 這樣,每個這樣的模塊的責任是明確的。 然后,將整個Elm應用程序,端口模塊和所有文件編譯成一個.js文件。

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

嗯,這有點開放。 盡管如此,從我有限的經驗來看:

  • 將端口處理保留在單獨的模塊中,如果不需要,則不要將port module聲明為port module

  • 確保您徹底測試與第三方庫的集成,尤其是錯誤情況。 如果通過端口從外部庫返回到Elm的數據類型不是您已聲明的那樣,則Elm將拋出異常。

  • 如果您可以找到與外部JS庫相同的Elm包,請考慮使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM