2011-03-15 8 views
9

In che modo le risorse Javascript sono meglio integrate in un'applicazione circolare?Come si deve integrare javascript in un'app Web Clojure/Ring?

In particolare:

  • Dove saremmo mettere i file .js nostri?
  • Come e dove dovrebbero essere installati i test unitari?
  • Qual è il modo migliore per impostare i test di accettazione per la funzionalità che attraversa i lati client e server?

Esistono best practice per javascript con applicazioni ad anello? Una possibile risposta sarebbe quella di sviluppare separatamente i lati client e server, per separare essenzialmente tutto in due progetti separati, ma non sono completamente soddisfatto di questa idea.

(sono anche consapevole di ClojureScript, anche se sto pensando principalmente di codice javscript che è stato scritto come JavaScript.)

risposta

-6

Io non sono un esperto di web clojure ma darò un colpo.

Penso che non abbia nulla a che fare con Ring sul linguaggio dei modelli che si usa.

modelli Lingue

  • Enlive: proberly seperat tutto (non in un progetto sepred) e tirare insieme con enlive
  • Flotta: Proprio come si dovrebbe farlo in PHP o qualcosa del genere.
  • Hiccup: Scrivi le tue funzioni di clojure con html in linea e js hanno solo librerie js grandi in file sepret.

Non posso davvero parlare di test.

1

Ring ha il supporto per servire i file direttamente da una cartella (ring.middleware.file o ring.middleware.static che è quello che userei) o da una risorsa nel jar/war. La soluzione migliore è utilizzare questi meccanismi per pubblicare il contenuto statico (javascript/immagini). Se si ha la libertà di fare questo, io metterò in un percorso simile a questo per servire tutte le richieste HTTP in /static/ da tale cartella:

(def *route* 
    (ring/wrap-static "c:/statics/" ["/static/"])) 

Una volta che sai come gestire la richiesta di una risorsa statica (come una risorsa javascript) è uguale a qualsiasi altra cosa come PHP o ASP.

Un'altra alternativa è quella di definire i percorsi di risorse come al solito, e poi nel "catch-all" (normalmente qualcosa di simile a questo percorso (ring/GET * request (handle-static-request request)), gestire qualsiasi richiesta unserviced rimanendo con una richiesta statica.

-1

avrei scelto il percorso di "separazione completa delle preoccupazioni" Il tuo codice clojure lato server esporrà solo servizi json e il tuo javascript interrogherà i dati e li aggiungerà all'html. Clojure ti facilita la creazione di tali servizi e traduci le sue strutture di dati in json Di questo approccio ha i lati negativi, si dipenderà molto da javascript

0

Per iniziare q In effetti, probabilmente il modo più semplice per iniziare a servire file statici in un ambiente di sviluppo clojure/ring è utilizzare ring.util.response/file-response.

se si utilizza i baffi si potrebbe aggiungere un percorso come questo per la fine della vostra lista percorso (come un percorso di caduta-through):

[&] (fn [req] (file-response (req :uri) {:root "resources/public"})) 

Sarà scegliere qualsiasi percorso e cercare di trovare un file che confronta l'uri fornito nella directory "[proj-root]/resources/public".

Nel tag di script html è possibile utilizzare, ad esempio, src="/js/all.js" e quindi assicurarsi di disporre di un file come questo "[proj-root] /resources/public/js/all.js".

vedi http://mmcgrana.github.com/ring/ring.util.response.html

Problemi correlati