目录

Clojure - 应用程序(Applications)

Clojure有一些贡献的库,可以创建DesktopWeb-based applications 。 我们来讨论它们中的每一个。

Sr.No. 应用和描述
1 桌面 - 跷跷板

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

2 桌面 - 更改文本的值

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

3 桌面 - 显示模态对话框

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

4 桌面 - 显示按钮

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

5 桌面 - 显示标签

可以在标签类的帮助下显示标签。

6 桌面 - 显示文本字段

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

Web应用程序 - 简介

要在Clojure中创建Web应用程序,您需要使用Ring应用程序库,该库可从以下链接获得https://github.com/ring-clojure/ring

您需要确保从站点下载必要的jar并确保将其添加为Clojure应用程序的依赖项。

Ring framework提供以下功能 -

  • 进行设置,使得http请求作为常规Clojure HashMap进入Web应用程序,同样使得它可以将响应作为HashMap返回。

  • 提供准确描述这些请求和响应映射应该是什么样的规范。

  • 沿着Web服务器(Jetty)运行并将Web应用程序连接到它。

Ring框架自动启动Web服务器并确保Clojure应用程序在此服务器上运行。 然后还可以使用Compojure框架。 这允许人们创建路线,这是现在大多数现代Web应用程序的开发方式。

Creating your first Clojure application - 以下示例说明如何在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函数一样简单。 (获取“/ Tutorial”[]“这是关于Clojure的教程”)

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

本地主机
↑回到顶部↑
WIKI教程 @2018