Dieses Tool befindet sich in der frühen Entwicklung
Es ist mit bahnbrechenden Änderungen und Fehlern zu rechnen
Lesen, analysieren und betten Sie Umgebungsvariablen und Dateiinhalte in Ihren Elm-Code ein.
Daten werden mit Embeddern eingebettet. Embedder befinden sich in einem speziellen Ordner, elm-embed-scripts
, und sie sind jede Elm-Deklaration mit der Signatur Embed.Task
. Die Arbeit mit Embeddern ähnelt der Arbeit mit JSON-Decodern. Sie können beispielsweise eine Datei mit Embed.File.read
lesen und sie mit Embed.andThen
analysieren. Wenn die Analyse erfolgreich ist, können Sie den Wert mit Embed.succeed
einbetten, und wenn sie fehlschlägt, können Sie mit Embed.fail
den Grund angeben. Wenn alle Einbetter erfolgreich sind, werden die resultierenden Werte generiert und als Elm-Code in src/generated
platziert, wo sie vom Rest der Codebasis verwendet werden können.
Bei der Entwicklung möchten Sie möglicherweise einen lokalen Server anstelle des Produktionsservers verwenden. Um dies zu erreichen, kann eine Umgebungsvariable eingebettet werden, die die URL des zu verwendenden Servers enthält.
elm-embed-scripts/Server.elm
:
import Embed
import Embed.Environment
server : Embed . Task String
server =
Embed . Environment . string " server_url "
Wenn Sie elm-embed run
ausführen, wenn die Umgebungsvariable server_url
auf localhost:8080
gesetzt ist, erhalten Sie Folgendes in src/Generated/Server.elm
:
server : String
server =
" localhost:8080 "
Möglicherweise möchten Sie eine Seite aus einem Markdown-Dokument statt aus Elm-Code erstellen. Der normale Ansatz wäre, das Dokument als Zeichenfolge einzuschließen und es dann zur Laufzeit zu analysieren und zu rendern. Dies hat mehrere Nachteile. Das Parsen braucht Zeit. Es ist außerdem nervig und fehleranfällig, Markdown manuell in einen Elm-String einzubetten. Schließlich müssen Sie sich mit dem Fall befassen, dass das Parsen fehlschlägt, und dem Benutzer eine Art Fehlerseite anzeigen. Mit elm-embed
können Sie eine .md
Datei lesen, sie zur Build-Zeit analysieren, und wenn die Analyse fehlschlägt, erhalten Sie die Fehlermeldung als Entwickler zur Build-Zeit und nicht als Benutzer zur Laufzeit.
In diesem Beispiel wird ein Markdown-Dokument mit dillonkearns/elm-markdown analysiert
-- elm-embed-scripts/Markdown.elm
import Embed
import Embed.File
import Markdown.Block exposing ( Block (..) , HeadingLevel (..) , Inline (..) )
import Markdown.Parser
document : Embed . Task ( List Block )
document =
Embed . andThen
( markdown ->
case Markdown . Parser . parse markdown of
Ok blocks ->
Embed . succeed blocks
Err _ ->
Embed . fail " Parse error "
)
( Embed . File . read " markdown.md " )
Hinweis: Wenn Sie daran interessiert sind, könnte es sich lohnen, auch einen Blick auf die Ulmenseiten zu werfen. Es kann Markdown-Parsing zur Build-Zeit und eine Menge anderer cooler Dinge durchführen, einschließlich Batterien. elm-embed
ist ein Tool für eine bestimmte Sache, während elm-pages
eher ein Rahmengeschäft ist.
elm-embed
fügt einige eigene Module in elm-embed-scripts
ein, die von Ihren Einbettern verwendet werden können. Die vollständige API für diese Module finden Sie hier.
Durch Ausführen des folgenden Codes wird eine vorgefertigte Binärdatei für 64-Bit-Linux heruntergeladen, ausführbar gemacht und in /usr/local/bin
abgelegt. Dies funktioniert für die meisten Linux-Distributionen.
curl -L -o elm-embed.gz https://github.com/emmabastas/elm-embed/releases/download/0.1.0/elm-embed-0.1.0-linux-x64.gz
gunzip elm-embed.gz
chmod +x elm-embed
sudo mv elm-embed /usr/local/bin/
Jetzt sollte elm-embed
über die Befehlszeile aufrufbar sein.
Deinstallieren Sie mit sudo rm /usr/local/bin/elm-embed
Derzeit gibt es keine vorgefertigten Binärdateien für Windows oder Mac. Die einzige Möglichkeit besteht darin, aus dem Quellcode zu erstellen. Dabei handelt es sich um den gleichen Prozess wie beim Erstellen des Elm-Compilers.
Mit elm-embed init
initialisieren.
Führen Sie Embedder mit elm-embed run
aus.
Holen Sie sich Hilfe mit elm-embed --help
.
Der beste Weg, jetzt einen Beitrag zu leisten, besteht darin, mir Anwendungsfälle zur Verfügung zu stellen, indem Sie hier einen Kommentar hinterlassen. Seien Sie so detailliert wie möglich. Was könnte elm-embed
für Sie tun und wie? Was müsste geändert/hinzugefügt werden?
Diese Anwendungsfälle werden mir in Zukunft wirklich dabei helfen, fundiertere Designentscheidungen zu treffen, aber ich kann nicht versprechen, dass Ihr spezifischer Anwendungsfall umgesetzt wird. Ich möchte, dass elm-embed
in seinem Rahmen so gut wie möglich ist, und das bedeutet, Dinge abzulehnen, die außerhalb des Rahmens liegen, und mir auch die Zeit zu nehmen, die Dinge durchzudenken, anstatt Features zu überstürzen.