Web Development with Clojure CH1 (1)

略過了廢話不想翻譯...

使用 Leiningen 來管理你的項目

Leiningen 能夠幫助你去建立、構建、測試、打包還有部署你的項目。換句話說,它是你須要的一個能夠一站式管理應用相關內容的工具。html

這段不想翻譯啦。就是說 Clojure 的 Leiningen 相似於 Maven。

使用了 Leiningen 後,你就能夠不用擔憂任何的關於下載你的應用所使用包的問題了。你只要在一開始說明關於包最高層級的依賴,它就會會自動幫你自動的加載進來。web

安裝 Leiningen 也是十分簡單的。你能夠在官網上下載腳本,運行它就能夠了。瀏覽器

安裝我也不想翻譯啦。

使用下面的命令就能夠簡單的建立一個項目了:app

lein new myapp

打開新建項目的文件夾以後,在 src 文件夾下,咱們能看到一個叫作 myapp 的文件夾,裏面就有一個源代碼文件 core.clj:eclipse

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

注意,這個命名空間的聲名和文件的結構是匹配的,由於core文件在myapp文件夾中,因此它的名字是:myapp.corewebapp

在 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須要一個參數,因此咱們能夠傳入一個:this

lein run First
;-> First Hello, World!

在前面這個例子之中,咱們建立了一個很是簡單的應用,只依賴於Clojure就能夠運行。若是咱們要使用它來建立一個互聯網應用,咱們須要寫不少的樣板文件來確保它能夠正確的運行。讓咱們來看看如何使用Leiningen來建立一個已經爲咱們設置好樣板的webapp。url

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

如今,你應該知道如何去建立和運行你的應用程序了,咱們來看看怎麼去編輯它。

相關文章
相關標籤/搜索