Clojure - 應用



Clojure 有一些貢獻的庫,這些庫可以建立桌面基於 Web 的應用程式。讓我們討論一下它們中的每一個。

序號 應用及描述
1 桌面 – See-saw

See-saw 是一個可用於建立桌面應用程式的庫。

2 桌面 – 更改文字的值

視窗中內容的值可以透過使用‘config!’選項來更改。在下面的示例中,config!選項用於將視窗內容更改為“Good Bye”的新值。

3 桌面 – 顯示模式對話方塊

可以透過使用 see-saw 類的 alert 方法顯示模式對話方塊。該方法接受需要在模式對話方塊中顯示的文字值。

4 桌面 – 顯示按鈕

按鈕可以在 button 類的幫助下顯示。

5 桌面 – 顯示標籤

標籤可以在 label 類的幫助下顯示。

6 桌面 – 顯示文字欄位

文字欄位可以在 text 類的幫助下顯示。

Web 應用 - 簡介

要在 Clojure 中建立 Web 應用,您需要使用 Ring 應用庫,該庫可在以下連結找到 https://github.com/ring-clojure/ring

您需要確保從網站下載必要的 jar 檔案,並確保將其作為 Clojure 應用的依賴項新增。

Ring 框架提供以下功能 -

  • 設定使 http 請求作為常規 Clojure HashMap 進入您的 Web 應用,並且同樣地使您可以將響應作為 HashMap 返回。

  • 提供一個規範,準確描述這些請求和響應對映應該是什麼樣子。

  • 自帶一個 Web 伺服器(Jetty)並將您的 Web 應用連線到它。

Ring 框架可以自動啟動 Web 伺服器並確保 Clojure 應用在此伺服器上執行。然後還可以使用 Compojure 框架。這允許您建立路由,現在大多數現代 Web 應用都是這樣開發的。

建立您的第一個 Clojure 應用 - 下面的示例顯示瞭如何在 Clojure 中建立您的第一個 Web 應用。

(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))

讓我們看一下程式的以下方面 -

  • ‘defroutes’用於建立路由,以便對 Web 應用的不同路由的請求可以定向到 Clojure 應用中的不同函式。

  • 在上面的示例中,“/”被稱為預設路由,因此當您瀏覽到 Web 應用的根目錄時,字串“Hello World”將傳送到 Web 瀏覽器。

  • 如果使用者訪問任何 Clojure 應用無法處理的 url,則它將顯示字串“Not Found”。

當您執行 Clojure 應用時,預設情況下您的應用將載入為 localhost:3000,因此如果您瀏覽到此位置,您將收到以下輸出。

Clojure Application

Web 應用 – 向您的 Web 應用新增更多路由

您還可以向您的 Web 應用新增更多路由。以下示例顯示瞭如何實現此目的。

(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))

您可以看到,在應用中新增路由就像新增另一個帶有 url 路由的 GET 函式一樣簡單。(GET "/Tutorial" [] "This is a tutorial on Clojure")

如果您瀏覽到https://:3000/Tutorial位置,您將收到以下輸出。

Localhost
廣告