Clojure - 应用程序

Clojure 有一些贡献的库,可以创建桌面基于 Web 的应用程序。 让我们逐一讨论一下。

序号 应用与描述
1 Desktop – See-saw

See-saw 是一个可用于创建桌面应用程序的库。

2 Desktop - 更改文本值

可以使用'config!'选项更改窗口中内容的值。 在下面的示例中,配置! 选项用于将窗口内容更改为"Good Bye"的新值。

3 Desktop - 显示模态对话框

使用see-saw类的alert方法可以显示模式对话框。 该方法获取文本值,该文本值需要显示在模式对话框中。

4 Desktop - 显示按钮

按钮可以在按钮类的帮助下显示。

5 Desktop – 显示标签

可以借助标签类来显示标签。

6 Desktop - 显示文本字段

文本字段可以在文本类的帮助下显示。

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 应用程序

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" [] "这是关于 Clojure 的教程")

如果您浏览到位置 http://localhost:3000/Tutorial,您将收到以下输出。

Localhost