试用clojure的web框架Compojure
https://www.douban.com/note/90202379/
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,还是繁琐了点点)。