2
略过了废话不想翻译...

使用 Leiningen 来管理你的项目

Leiningen 可以帮助你去创建、构建、测试、打包还有部署你的项目。换句话说,它是你需要的一个可以一站式管理应用相关内容的工具。

这段不想翻译啦。就是说 Clojure 的 Leiningen 类似于 Maven。

使用了 Leiningen 后,你就可以不用担心任何的关于下载你的应用所使用包的问题了。你只要在一开始说明关于包最高层级的依赖,它就会会自动帮你自动的加载进来。

安装 Leiningen 也是十分简单的。你可以在官网上下载脚本,运行它就可以了。

安装我也不想翻译啦。

使用下面的命令就可以简单的创建一个项目了:

lein new myapp

打开新建项目的文件夹之后,在 src 文件夹下,我们能看到一个叫做 myapp 的文件夹,里面就有一个源代码文件 core.clj:

(ns myapp.core)
(defn foo
    "I don't do a whole lot." [x]
    (println x "Hello, World!"))

注意,这个命名空间的声名和文件的结构是匹配的,因为core文件在myapp文件夹中,所以它的名字是:myapp.core

在 Leiningen 的 project 文件中有一些什么东西

在项目myapp之中,有一个文件project.clj,这个文件之中包含了对于我们这个应用的描述。
在仔细审视这个文件之后,你会发现这个他是使用标准的Clojure语法写成的包括了应用名称、版本号、url地址以及依赖的包。

(defproject myapp "0.1.0-SNAPSHOT" 
    :description "FIXME: write description"
    :url "http://example.com/FIXME"
    :license {:name "Eclipse Public License"
              :url "http://www.eclipse.org/legal/epl-v10.html"}
    :dependencies [[org.clojure/clojure "1.5.1"]])

project.clj 文件也支持我们进行各种个样方面的对于应用程序的管理。举一个例子,我们可以设置在myapp.core中的foo方法作为其在应用中的入口点,使用:main关键词进行设置。

(defproject myapp "0.1.0-SNAPSHOT" 
    :description "FIXME: write description"
    :url "http://example.com/FIXME"
    :license {:name "Eclipse Public License"
              :url "http://www.eclipse.org/legal/epl-v10.html"}
    :dependencies [[org.clojure/clojure "1.5.1"]]
    ;;this will set foo as the main function
    :main myapp.core/foo)

现在在终端之中就可以使用lein run命令来运行这个应用。因为foo需要一个参数,所以我们可以传入一个:

lein run First
;-> First Hello, World!

在前面这个例子之中,我们创建了一个非常简单的应用,只依赖于Clojure就可以运行。如果我们要使用它来创建一个互联网应用,我们需要写很多的样板文件来确保它可以正确的运行。让我们来看看如何使用Leiningen来创建一个已经为我们设置好样板的webapp。

Leiningen 模版

将模版名称提供给lein脚本,在创建项目之后就可以使用它了。
这些模版自身是使用了lein-newnew plug-in的Clojure项目,晚些时候我们将看看怎么自己来做『模版』。

而现在,我们将要使用compojure-app来创建我们接下来的一个应用。
在执行lein脚本的时候,模版的名称要跟在关键词new的后面,然后再跟上应用的名称。所以,我们只需要做下面这一步,然后再等待应用构建完成就可以了:

lein new compojure-app guestbook

当我们运行这个应用的时候,我们可以看到终端会有如下的输出,然后终端会打开一个新的浏览器窗口来显示它的主页:

lein ring server
guestbook is starting
2013-07-14 18:21:06.603:INFO:oejs.Server:jetty-7.6.1.v20120215
2013-07-14 18:21:06.639:INFO:oejs.AbstractConnector:
StartedSelectChannelConnector@0.0.0.0:3000
Started server on port 3000

现在,你应该知道如何去创建和运行你的应用程序了,我们来看看怎么去编辑它。


__SSSamuel
109 声望0 粉丝

知乎ID:Samuel


引用和评论

0 条评论