Wie können Javascript-Ressourcen am besten in eine Ring-Anwendung integriert werden?
Speziell:
Gibt es Best Practices für Javascript mit Ring-Anwendungen? Eine mögliche Antwort wäre, die Client- und Server-Seiten komplett getrennt zu entwickeln, um alles in zwei separate Projekte zu unterteilen, aber ich bin nicht ganz glücklich mit dieser Idee.
(Ich kenne auch clojurescript, obwohl ich hauptsächlich an Javscript-Code denke, der als Javascript geschrieben wurde.)
Ring unterstützt Dateien direkt von einem Ordner ( ring.middleware.file
oder ring.middleware.static
, was ich verwenden würde) oder von einer Ressource im Jar / War. Am besten verwenden Sie diese Mechanismen, um Ihren statischen (Javascript / Bilder) Inhalt zu liefern. Wenn Sie die Freiheit haben, dies zu tun, werde ich eine ähnliche Route einlegen, um alle HTTP-Anfragen bei /static/
von einem solchen Ordner aus zu bedienen:
Sobald Sie wissen, wie Sie mit einer Anfrage nach einer statischen Ressource (wie einer JavaScript-Ressource) umgehen müssen, ist dies dasselbe wie bei allem anderen wie PHP oder ASP.
Eine andere Alternative besteht darin, Ihre Ressourcenrouten wie üblich zu definieren und dann im "catch-all" (normalerweise etwas wie diese (ring/GET * request (handle-static-request request))
route, jede verbleibende unserviced Anfrage mit einer statischen Anfrage zu bearbeiten.
Um schnell loslegen zu können, ist der einfachste Weg, um statische Dateien in einer Clojure / Ring-Entwicklungsumgebung bereitzustellen, ring.util.response / file-response.
Wenn Sie einen Schnurrbart verwenden, können Sie am Ende Ihrer Routenliste eine Route wie diese hinzufügen (als Durchfahrtsroute):
%Vor%Es wird eine beliebige Route ausgewählt und versucht, eine Datei zu finden, die der angegebenen uri im Verzeichnis "[proj-root] / resources / public" entspricht.
In Ihrem html-Skript-Tag könnten Sie einfach beispielsweise src="/js/all.js"
verwenden und dann sicherstellen, dass Sie eine Datei wie diese haben: "[proj-root] /resources/public/js/all.js".
siehe Ссылка
Ich würde den Pfad der "vollständigen Trennung der Sorgen" wählen. Ihr crojure-Code auf der Serverseite zeigt nur die json-Dienste an und Ihr Javascript fragt die Daten ab und hängt sie an den HTML-Code an. Clojure macht es Ihnen sehr leicht, solche Dienste zu erstellen und die Datenstrukturen in json zu übersetzen. Natürlich hat dieser Ansatz seine Schattenseiten, Sie werden stark von Javascript abhängen.
Ich bin kein Clojure Web-Experte, aber ich werde es versuchen.
Ich denke, es hat nichts mit Ring es über die Templating Sprache, die Sie verwenden.
Vorlagensprachen
Ich kann nicht wirklich über Testen sprechen.
Tags und Links javascript clojure ring