Wie sollte Javascript in eine Clojure / Ring Web App integriert werden?

9

Wie können Javascript-Ressourcen am besten in eine Ring-Anwendung integriert werden?

Speziell:

  • Wo würden wir unsere .js-Dateien ablegen?
  • Wie und wo sollen Komponententests eingerichtet werden?
  • Was ist der beste Weg, Akzeptanztests für Funktionen einzurichten, die Client- und Serverseiten betreffen?

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.)

    
Rob Lachlan 15.03.2011, 19:16
quelle

4 Antworten

1

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:

%Vor%

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.

    
Pieter Breed 17.03.2011 15:11
quelle
0

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 Ссылка

    
molst 20.04.2012 09:51
quelle
-1

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.

    
islon 01.09.2011 16:41
quelle
-6

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

  • Erlebe: Proberly seperate alles (nicht in ein sepred Projekt) und ziehe es zusammen mit beleben
  • Fleet: So wie Sie es in PHP oder so machen würden.
  • Hiccup: Schreiben Sie Ihre clojure Funktionen mit inline html und js haben nur große js librarys in sepret Dateien.

Ich kann nicht wirklich über Testen sprechen.

    
nickik 16.03.2011 10:53
quelle

Tags und Links