试用clojure的web框架Compojure
Compojure 是一个小巧,开源的,类似web.py 和Sinatra的 Clojure web框架。
Compojure 构建在Ring的基础之上, 而Ring提供了Http Request和Reponse的抽象层。
这次试用就参照其官方Getting Start。
使用Leiningen构建工具(类似Java的Maven)开始 Compojure的体验之旅。
[第一步]:创建project
lein new hello-www
cd hello-www
此时通过lein创建了一个骨架project。project.clj是项目的定义文件(相当于maven的pom.xml), 直接用clojure语言定义Compojure依赖 和 Ring Jetty 适配器(内嵌启动jetty):
(defproject hello-www "1.0.0-SNAPSHOT"
:description "A Compojure 'Hello World' application"
:dependencies [org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
[compojure "0.4.1"]
[ring/ring-jetty-adapter "0.2.3"])
[ 第二步]:更新下载上述定义的所有依赖:
lein deps
此时,可以在lib目录下看到已下载好的所有依赖jar
[ 第三步]:写点代码:
(ns hello-www.core
(:use compojure.core
ring.adapter.jetty)
(:require [compojure.route :as route]))
(defroutes example
(GET "/" [] "<h1>Hello World Wide Web!</h1>")
(route/not-found "Page not found"))
(run-jetty example {:port 8080})
首先定义路由 get / 输出hello... ,route/not-found对应404响应 。在8080端口启动jetty 服务器。
[第四步]:运行
Getting start中使用lein repl src/hello-www/core.clj启动, 但是我这出现错误。 原因可能还是clojure或lein版本差异的问题(在此不去深究了)。换一种运行方式:
java -cp "lib/*" clojure.main src/hello_www/core.clj
应该看到jetty启动日志信息了, 访问http://localhost:8080/
$ curl http://localhost:8080
<h1>Hello World Wide Web!</h1>
$ curl http://localhost:8080/badurl
Page not found
一切正常!
相对java世界的web框架,简单几步就启动服务器,并运行web应用,实属快捷。(当然相比之前体验过的nodejs,还是繁琐了点点)。
Compojure 构建在Ring的基础之上, 而Ring提供了Http Request和Reponse的抽象层。
这次试用就参照其官方Getting Start。
使用Leiningen构建工具(类似Java的Maven)开始 Compojure的体验之旅。
[第一步]:创建project
lein new hello-www
cd hello-www
此时通过lein创建了一个骨架project。project.clj是项目的定义文件(相当于maven的pom.xml), 直接用clojure语言定义Compojure依赖 和 Ring Jetty 适配器(内嵌启动jetty):
(defproject hello-www "1.0.0-SNAPSHOT"
:description "A Compojure 'Hello World' application"
:dependencies [org.clojure/clojure "1.2.0"]
[org.clojure/clojure-contrib "1.2.0"]
[compojure "0.4.1"]
[ring/ring-jetty-adapter "0.2.3"])
[ 第二步]:更新下载上述定义的所有依赖:
lein deps
此时,可以在lib目录下看到已下载好的所有依赖jar
[ 第三步]:写点代码:
(ns hello-www.core
(:use compojure.core
ring.adapter.jetty)
(:require [compojure.route :as route]))
(defroutes example
(GET "/" [] "<h1>Hello World Wide Web!</h1>")
(route/not-found "Page not found"))
(run-jetty example {:port 8080})
首先定义路由 get / 输出hello... ,route/not-found对应404响应 。在8080端口启动jetty 服务器。
[第四步]:运行
Getting start中使用lein repl src/hello-www/core.clj启动, 但是我这出现错误。 原因可能还是clojure或lein版本差异的问题(在此不去深究了)。换一种运行方式:
java -cp "lib/*" clojure.main src/hello_www/core.clj
应该看到jetty启动日志信息了, 访问http://localhost:8080/
$ curl http://localhost:8080
<h1>Hello World Wide Web!</h1>
$ curl http://localhost:8080/badurl
Page not found
一切正常!
相对java世界的web框架,简单几步就启动服务器,并运行web应用,实属快捷。(当然相比之前体验过的nodejs,还是繁琐了点点)。
热门话题 · · · · · · ( 去话题广场 )
- 我们为什么需要书店? 2.1万次浏览
- 解锁我的夏日旅行足迹地图 活动 56.8万次浏览
- 你有哪些保持精力充沛的方法? 2516次浏览
- 我这偷感十足的一生 新话题 · 1927次浏览
- 哪一刻你真正感觉到了自己身体的存在? 5.8万次浏览
- 如何阅读一片叶子 1718次浏览