2011-03-15 26 views
9

Javascript资源如何最好地集成到环形应用程序中?应该如何将javascript集成到Clojure/Ring Web应用程序中?

具体做法是:

  • 会在哪里,我们把我们的.js文件?
  • 如何设置单元测试和应该在哪里设置?
  • 什么是最好的方式来设置功能的验收测试,跨越客户端和服务器端?

JavaScript与环形应用程序是否有任何最佳做法?一个可能的答案是完全分开开发客户端和服务器端,基本上将所有事情分成两个独立的项目,但我并不完全满意这个想法。

(我也知道clojurescript的,但我想主要的一个已经写成的javascript代码javscript)

回答

-6

我不是一个Clojure的网络专家,但我给它一个镜头。

我认为它没有任何关于您使用的模板语言Ring。

模板语言

  • Enlive:Proberly seperat一切(不进一家sepred项目),并与enlive
  • 舰队一起拉:你只想如何做到这一点在PHP或东西。
  • 打嗝:用内联html写你的clojure函数,js只有在sepret文件中有大的js librarys。

我真的不能谈论测试。

1

Ring支持直接从文件夹中提取文件(ring.middleware.filering.middleware.static这是我将使用的)或从jar/war中的资源提供文件。您最好的选择是使用这些机制来为您的静态(javascript /图像)内容提供服务。如果你可以自由地做到这一点,我要在类似这样一个从这样一个文件夹为所有的HTTP请求在/static/路线:

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

一旦你知道如何处理静态资源的请求(就像一个JavaScript资源),它与PHP或ASP等任何其他类似。

另一种方法是定义你的资源路线按正常,然后在“一揽子”(通常是这样的(ring/GET * request (handle-static-request request))路线,处理好与静态请求的任何剩余的无服务请求。

-1

我会选择“完全分离顾虑”的路径,你的服务器端clojure代码只会公开json服务,你的javascript将会查询数据并将其附加到html中,Clojure使你很容易创建这样的服务并将它的数据结构转换为json。 这种方法有缺点,你会严重依赖于javascript。

0

要开始q uikly,可能是在clojure/ring开发环境中开始提供静态文件的最简单方法是使用ring.util.response/file-response。

如果您使用的胡子,你可以像这样添加路由到您的路线列表的末尾(如落空路线):

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

它会挑选任何路线,并试图找到一个文件在“[proj-root]/resources/public”目录下匹配提供的uri。

在你的html脚本标记中,你可以使用例如src="/js/all.js",然后确保你有这样的文件“[proj-root] /resources/public/js/all.js”。

请参阅http://mmcgrana.github.com/ring/ring.util.response.html

相关问题