2011-03-15 37 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

相關問題