试用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,还是繁琐了点点)。
热门话题 · · · · · · ( 去话题广场 )
- 纪念艾丽丝·门罗 1.8万次浏览
- 我能回忆起来的最早的记忆 7.4万次浏览
- 那些叹为观止的人体精妙设计 26.9万次浏览
- 你收到过最奇葩的情人节礼物 184.6万次浏览
- 那些年被户口困扰过的问题 22.6万次浏览
- 你最喜爱的武侠小说 17.3万次浏览