2011-03-15 8 views
9

¿Cómo se integran mejor los recursos Javascript en una aplicación de anillo?¿Cómo se debe integrar javascript en una aplicación web Clojure/Ring?

Específicamente:

  • Dónde habría que poner los archivos .js nuestros?
  • ¿Cómo y dónde deben configurarse las pruebas unitarias?
  • ¿Cuál es la mejor manera de configurar pruebas de aceptación para la funcionalidad que atraviesa el lado del cliente y del servidor?

¿Existe alguna práctica recomendada para javascript con aplicaciones en anillo? Una respuesta posible sería desarrollar los lados del cliente y del servidor completamente por separado, para separar esencialmente todo en dos proyectos separados, pero no estoy completamente satisfecho con esa idea.

(también soy consciente de clojurescript, aunque estoy pensando sobre todo de código javscript que se ha escrito como Javascript.)

Respuesta

-6

No soy un experto en web clojure pero voy a darle un tiro.

Creo que no tiene nada que ver con Ring, es sobre el lenguaje de plantillas que utiliza.

plantilla Idiomas

  • Enlive: proberly seperat todo (no en un proyecto sepred) y tire de ella junto con Enlive
  • Flota: ¿Cuán que lo haría en PHP o algo así.
  • Hipo: escriba sus funciones de clojure con html en línea y js solo tienen grandes bibliotecas js en archivos sepret.

No puedo hablar realmente de las pruebas.

1

Ring tiene soporte para servir archivos directamente desde una carpeta (ring.middleware.file o ring.middleware.static que es lo que usaría) o desde un recurso en el jar/war. Su mejor opción es usar estos mecanismos para servir su contenido estático (javascript/images). Si usted tiene la libertad de hacer esto, voy a poner en una ruta similar a éste para servir a todas las peticiones HTTP a /static/ de una carpeta como:

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

Una vez que sepa cómo manejar una solicitud de un recurso estático (como un recurso de javascript) es lo mismo que con cualquier otra cosa como PHP o ASP.

Otra alternativa es definir sus rutas de recursos con normalidad, y luego en el "catch-all" (normalmente algo como esta ruta (ring/GET * request (handle-static-request request)), manejar cualquier solicitud unserviced restante con una solicitud estática.

-1

yo elegiría la ruta de "separación completa de las preocupaciones." Su código clojure del lado del servidor solo expondrá los servicios json y su javascript consultará los datos y los agregará al html. Clojure hace que sea muy fácil para usted crear dichos servicios y traducir sus estructuras de datos a json. Por supuesto, este enfoque tiene sus desventajas, dependerá en gran medida de javascript.

0

Para empezar q Rápidamente, probablemente la forma más fácil de empezar a servir archivos estáticos en un entorno de desarrollo clojure/ring es usar ring.util.response/file-response.

Si utiliza el bigote se podría añadir una ruta como esta para el final de la lista de rutas (como ruta de paso al siguiente):

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

Se recogerá cualquier ruta y tratar de encontrar un archivo que coincide con el uri proporcionado en el directorio "[proj-root]/resources/public".

En su etiqueta de script html puede simplemente usar, por ejemplo, src="/js/all.js", y luego asegúrese de tener un archivo como este "[raíz-proj] /resources/public/js/all.js".

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

Cuestiones relacionadas