Clojure有一些有用的庫(kù),它們能夠創(chuàng)建桌面和基于Web的應(yīng)用程序。 讓我們來(lái)討論它們中的每一個(gè)。
S.No. | 方法和說(shuō)明 |
---|---|
Desktop – See-saw | See-saw是一個(gè)可用于創(chuàng)建桌面應(yīng)用程序的庫(kù)。 |
Desktop – Changing the Value of Text | 可以使用“config!”選項(xiàng)更改窗口中內(nèi)容的值。 在下面的示例中配置! 選項(xiàng)用于將窗口內(nèi)容更改為新值“Good Bye”。 |
Desktop – Displaying a Modal Dialog Box | 可以使用蹺蹺板類的警報(bào)方法顯示模態(tài)對(duì)話框。該方法采用文本值,需要在模態(tài)對(duì)話框中顯示。 |
Desktop – Displaying Buttons | 按鈕可以在按鈕類的幫助下顯示。 |
Desktop – Displaying Labels | 可以在標(biāo)簽類的幫助下顯示標(biāo)簽。 |
Desktop – Displaying Text Fields | 文本字段可以在文本類的幫助下顯示。 |
要在Clojure中創(chuàng)建Web應(yīng)用程序,您需要使用Ring應(yīng)用程序庫(kù),該應(yīng)用程序庫(kù)在以下鏈接中提供 https://github.com/ring-clojure/ring
您需要確保從網(wǎng)站下載必要的jar,并確保將其添加為Clojure應(yīng)用程序的依賴關(guān)系。
Ring框架提供以下功能:
設(shè)置事情,使得http請(qǐng)求作為常規(guī)的Clojure HashMap進(jìn)入您的Web應(yīng)用程序,同樣使得您可以返回作為HashMap的響應(yīng)。
提供一個(gè)規(guī)范,描述那些請(qǐng)求和響應(yīng)映射應(yīng)該是什么樣子。
沿著Web服務(wù)器(Jetty)啟動(dòng),并將您的Web應(yīng)用程序連接到它。
Ring框架可以自動(dòng)啟動(dòng)Web服務(wù)器,并確保Clojure應(yīng)用程序在此服務(wù)器上工作。 然后還可以使用Compojure框架。 這允許創(chuàng)建路線,現(xiàn)在是大多數(shù)現(xiàn)代web應(yīng)用程序的開(kāi)發(fā)。
創(chuàng)建您的第一個(gè)Clojure應(yīng)用程序 -以下示例顯示如何在Clojure中創(chuàng)建第一個(gè)Web應(yīng)用程序。
(ns my-webapp.handler (:require [compojure.core :refer :all] [compojure.route :as route] [ring.middleware.defaults :refer [wrap-defaults site-defaults]])) (defroutes app-routes (GET "/" [] "Hello World") (route/not-found "Not Found")) (def app (wrap-defaults app-routes site-defaults))
讓我們來(lái)看看程序的以下方面
'defroutes'用于創(chuàng)建路由,以便對(duì)Web應(yīng)用程序?qū)Σ煌酚傻恼?qǐng)求可以指向您的Clojure應(yīng)用程序中的不同函數(shù)。
在上面的示例中,“/”被稱為默認(rèn)路由,因此當(dāng)您瀏覽到Web應(yīng)用程序的基礎(chǔ)時(shí),字符串“Hello World”將被發(fā)送到Web瀏覽器。
如果用戶命中任何無(wú)法由Clojure應(yīng)用程序處理的URL,那么它將顯示字符串“未找到”。
當(dāng)運(yùn)行Clojure應(yīng)用程序時(shí),默認(rèn)情況下,應(yīng)用程序?qū)⒆鳛閘ocalhost:3000加載,因此如果瀏覽到此位置,您將收到以下輸出。
您還可以向您的Web應(yīng)用程序添加更多路由。 以下示例顯示如何實(shí)現(xiàn)此。
(ns my-webapp.handler (:require [compojure.core :refer :all] [compojure.route :as route] [ring.middleware.defaults :refer [wrap-defaults site-defaults]])) (defroutes app-routes (GET "/" [] "Hello World") (GET "/Tutorial" [] "This is a tutorial on Clojure") (route/not-found "Not Found")) (def app (wrap-defaults app-routes site-defaults))
你可以看到,在應(yīng)用程序中添加一個(gè)路由就像添加另一個(gè)GET函數(shù)一樣簡(jiǎn)單。 (GET“/ Tutorial”[]“這是一個(gè)關(guān)于Clojure的教程”)
如果瀏覽到位置http:// localhost:3000 / Tutorial,您將收到以下輸出。
更多建議: