首先下载一个脚本lein(https://raw.github.com/technomancy/leiningen/stable/bin/lein)并把它放到你的环境变量里,我直接把它丢到了/usr/local/bin下面,然后在命令行下运行lein self-install命令,就会自动下载一个leiningen-2.x.x-standalone.jar等的jar包到$USER_HOME/.lein/目录下,非常方便。我最开始使用它的1.7版本的时候,还要自己下载和配置。
Web框架Luminus(http://www.luminusweb.net/),可以非常方便地帮我们生成Web工程的框架代码,只需要执行一条命令就可以在当前目录生成一个叫myapp的工程目录:
lein new luminus myapp
myapp的目录结构如下:
$ tree myapp/
myapp/
├── Procfile
├── README.md
├── project.clj
├── resources
│ └── public
│ ├── css
│ │ └── screen.css
│ ├── img
│ ├── js
│ └── md
│ └── docs.md
├── src
│ └── myapp
│ ├── handler.clj
│ ├── repl.clj
│ ├── routes
│ │ └── home.clj
│ ├── util.clj
│ └── views
│ ├── layout.clj
│ └── templates
│ ├── about.html
│ ├── base.html
│ └── home.html
└── test
└── myapp
└── test
└── handler.clj
其中project.clj是类似Maven的pom.xml的文件,唯一区别的是使用Clojure的语法来组织管理,定义了工程名称、版本、描述以及依赖关系,使用到的lein插件等,在运行时也像Maven一样自动到仓库里下载依赖的组件。
一些基础的框架像lib-noir、compojure等都已加进来了,插件用了lein-ring,可以用来启动、打包。
不用修改任何代码,我们在命令行执行
(如果遇到提示:
如果想用其它端口可以在后面追加自定义端口号。启动后浏览器会自动打开默认主页,这在开发环境非常有用,但在服务器环境中因为没有桌面,会报错,可以使用如下命令来启动:
(如果你服务器的3000端口被另一个程序占用了, 这条命令:
Luminus也提供了一个guestbook的演示代码,最好能看一下加深理解。
演示站点:as3.brite.biz:3001
项目地址:https://github.com/yogthos/luminus
https://github.com/yogthos/luminus-template
使用指南:
Web框架Luminus(http://www.luminusweb.net/),可以非常方便地帮我们生成Web工程的框架代码,只需要执行一条命令就可以在当前目录生成一个叫myapp的工程目录:
lein new luminus myapp
myapp的目录结构如下:
$ tree myapp/
myapp/
├── Procfile
├── README.md
├── project.clj
├── resources
│ └── public
│ ├── css
│ │ └── screen.css
│ ├── img
│ ├── js
│ └── md
│ └── docs.md
├── src
│ └── myapp
│ ├── handler.clj
│ ├── repl.clj
│ ├── routes
│ │ └── home.clj
│ ├── util.clj
│ └── views
│ ├── layout.clj
│ └── templates
│ ├── about.html
│ ├── base.html
│ └── home.html
└── test
└── myapp
└── test
└── handler.clj
其中project.clj是类似Maven的pom.xml的文件,唯一区别的是使用Clojure的语法来组织管理,定义了工程名称、版本、描述以及依赖关系,使用到的lein插件等,在运行时也像Maven一样自动到仓库里下载依赖的组件。
一些基础的框架像lib-noir、compojure等都已加进来了,插件用了lein-ring,可以用来启动、打包。
resource/public
目录下放的是静态的资源文件,像css、js,以及用到的图片文件、h2数据库文件等。src
目录下放的是源代码,其中repl.clj
实现了应用的启动和停止以及资源文件所在目录的定义,就是上面提到的resource目录,基本不会动到这里的代码。handler.clj
主要实现了对一个HTTP请求生命周期的管理,可以指定初始化信息,路由处理信息,以及自己实现的middleware。route/home.clj
使用了Compojure里的路由功能把不同URI映射到不同的处理模块上。util.clj
定义了一些工具函数。html源文件是放在views/templates
下面,layout.clj
主要调用模板引擎clabango实现模板的渲染,把动态内容转成静态html页面。不用修改任何代码,我们在命令行执行
lein ring server
启动预览服务器,默认端口是3000,(如果遇到提示:
WARNING: You're currently running as root; probably by accident. Press control-C to abort or Enter to continue as root. Set LEIN_ROOT to disable this warning.
则export LEIN_ROOT=1)
如果想用其它端口可以在后面追加自定义端口号。启动后浏览器会自动打开默认主页,这在开发环境非常有用,但在服务器环境中因为没有桌面,会报错,可以使用如下命令来启动:
lein ring server-headless
,也可以修改project.clj
文件,把open-browser
设置成true
。第一次启动时会自动下载依赖的jar包.(如果你服务器的3000端口被另一个程序占用了, 这条命令:
lein ring server 会在3001端口启动预览服务器。)用nohup lein ring server > /dev/null &让命令在后台运行。
Luminus也提供了一个guestbook的演示代码,最好能看一下加深理解。
演示站点:as3.brite.biz:3001
项目地址:https://github.com/yogthos/luminus
https://github.com/yogthos/luminus-template
使用指南:
- HTML templating
- Accessing the database
- Serving static resources
- Setting response types
- Defining routes
- Adding middleware
- Sessions and cookies
- Security
- Deploying the application