Vapor

Vapor

在 Swift 開源之後,開發者們便開始將這語言往更多層面去發展,而 web app 便是其中一項。 Vapor 是一款以 Swift 作為主要語言的 Server 建構服務,讓我們可以透過它來開發 Web 相關的應用; 對於 iOS 開發人員而言,Swift 可以用來開發 web app 是一件有趣的事情, 其代表著我們可以使用同一個語言來開發一個產品,從 server 到 client。

安裝方式

不同於在安裝 iOS 第三方套件的流程,Vapor 需要透過 terminal 來安裝相關內容: 首先,得先安裝 Vapor 的 CLI

curl -sL toolbox.qutheory.io | sh

安裝完之後,便可以在 terminal 底下使用 vapor 的指令。

建立新專案

我們可以透過下方的指令,來建立一個新專案:

vapor new ProjectName

其中第三方套件的管理方式,是使用 Swift Package Manager, 所以我們會在目錄下看到一個 Package.swift 和 Package.pins, 這方面倒是有些像 CocoaPods 所使用的 Podfile 的概念。

使用 Xcode 開發

有了專案後,你可以選擇直接打開 main.swift 來進行開發, 但如果比較喜歡使用 Xcode 開啟一個專案,而非單一檔案, 則可以透過下方指令才建立 .project。

vapor xcode

這樣系統就會幫我們產生 .project 檔,開發起來就和原本寫 iOS 差不多了。

Server 的相關設定

Vapor 的 server 相關設定會放置在 Config 的資料夾底下, 其中包含五個 .json 檔案:

  • app.json
  • crypto.json
  • droplet.json
  • fluent.json
  • server.json 像是我們可以在 server.json 裡頭看到 host、port 的相關內容。

Build & Run

若你是開啟 Xcode 專案的方式,那麼 build 和 run 的方式就和以往開發 iOS 的方式一樣; 但若是沒有建立 .project 的話,也可以透過 vapor build 以及 run 的方式,就是在目錄下執行:

vapor build && vapor run

Droplet

在看到 Vapor 的 icon 之後,不難想像為何其主要的核心物件名稱為 droplet。 在初始時,main.swift 會有基本的 demo code, 我們可以直接在 try drop.setup() 下方加入一些內容。

drop.get("/") {
    request in
    return "Hello World!"
}

這樣便會在 0.0.0.0:8080/ 時,得到 Hello World!, 而也可以透過路徑來帶入參數,像是 0.0.0.0:8080/name/Archie 的寫法:

drop.get("/name", ":name", handler: {
    request in
    if let name = request.parameters["name"]?.string {
        return "Hello \(name)!"
    }
    return "Error retrieving parameters."
})

當連過去時,便會顯示 Hello Archie!。

Views Vapor 將 Views 放置在 /Resources/Views 裡頭,並可以使用 drop.view(“檔案名稱”) 的方式回傳畫面:

drop.get("/view") { request in
    return try drop.view("demoView.html")
}

以上便是 Vapor 的一些基本的簡單介紹,有興趣的人可以一起研究研究!

comments powered by Disqus