2017-04-02 3 views
3

Ich habe Elm in letzter Zeit für ein Projekt getestet, stieß aber auf einige Probleme - einer von ihnen verwendet externe JS-Bibliotheken mit Elm (z. B. Moment.js, i18n, Firebase usw.). Ich habe das folgende Beispiel versucht, aber es nicht genau beantworten, was ich will:Wie verwende ich externe JavaScript-Bibliotheken mit Elm?

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

Gemäß dem Beispiel muss ich das Modul nur an Port individuelle Programme erstellen und erzeugen eine statische Js Dateien für jeden von ihnen. Ist es möglich, alle Ports in einer einzigen Datei zu schreiben und welche Best Practices für die Verwendung von Port?

Antwort

3

Gemäß dem Beispiel muss ich einzelne Programme erstellen, nur um das Modul zu portieren und eine statische .js-Datei für jeden von ihnen zu generieren.

Ich glaube nicht, dass das wahr ist. Das Rechtschreibbeispiel, das Sie verknüpfen, soll nur ein Beispiel für die Verwendung von Ports sein. Sie müssen nicht jeden Teil Ihres Programms, der einen Port verwendet, in eine eigene separate JS-Datei kompilieren.

Sie könnten alle Ports in einem Modul, aber ich würde zögern, dies zu tun. Meiner Meinung nach wäre ein besserer Ansatz, ein Portmodul für jede externe JS-Bibliothek zu haben, die Sie verwenden möchten, und alle Ports, die Sie für die Kommunikation mit dieser Bibliothek in diesem Modul verwenden. Auf diese Weise ist die Verantwortung jedes einzelnen Moduls klar. Dann kompilieren Sie ganze Elm-Anwendung, Port-Module und alle in eine .js-Datei.

Was sind die besten Praktiken für die Verwendung von Port?

Nun, das ist ein bisschen offen. Dennoch, aus meiner etwas begrenzten Erfahrung:

  • Halt Port-Handling in separaten Modulen, und ein Modul nicht als port module erklären, wenn es nicht sein muss.

  • Stellen Sie sicher, dass Sie die Integration mit den Drittanbieter-Bibliotheken gründlich testen, insbesondere bei Fehlerfällen. Elm wird eine Ausnahme auslösen, wenn die Art der Daten, die durch einen Port von einer externen Bibliothek zurück in Elm kommen, nicht so ist, wie Sie es deklariert haben.

  • Wenn Sie ein Elm-Paket finden, das dasselbe wie eine externe JS-Bibliothek tut, sollten Sie stattdessen dieses verwenden.