簡(jiǎn)介
Vapor 是一個(gè)基于純 Swift 構(gòu)建出的 Web 開發(fā)框架,目前可以運(yùn)行在 macOS 和 Ubuntu ,用于構(gòu)建出漂亮易用的網(wǎng)站或者 API 服務(wù)。
Vapor的官網(wǎng)做的很漂亮音诈,文檔也比較完整,是一款比較主流狂秦、優(yōu)雅、更新活躍的框架推捐,非常適合初學(xué)者裂问。
環(huán)境配置
- Xcode 9.3
- Swift 4.1
- Vapor Toolbox: 3.1.4
安裝
安裝官方文檔安裝步驟即可。
macOS下牛柒,首先要安裝Xcode9
安裝Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝Vapor堪簿。
brew install vapor
新建項(xiàng)目
創(chuàng)建一個(gè)名為“helloWorld”的項(xiàng)目。
vapor new helloWorld
vapor的文件結(jié)構(gòu)類似于其他Web框架皮壁。
helloWorld
├── Config
│ ├── app.json
│ ├── crypto.json
│ ├── droplet.json
│ ├── fluent.json
│ └── server.json
├── Package.pins
├── Package.swift
├── Public
├── README.md
├── Sources
│ ├── App
│ │ ├── Config+Setup.swift
│ │ ├── Controllers
│ │ │ └── PostController.swift
│ │ ├── Droplet+Setup.swift
│ │ ├── Models
│ │ │ └── Post.swift
│ │ └── Routes
│ │ └── Routes.swift
│ └── Run
│ └── main.swift
├── Tests
│ ├── AppTests
│ │ ├── PostControllerTests.swift
│ │ ├── RouteTests.swift
│ │ └── Utilities.swift
│ └── LinuxMain.swift
├── circle.yml
└── license
項(xiàng)目主體目錄層級(jí)
helloWorld
└── Sources
└── App
└── Routes.swift
編譯之前需要拉取項(xiàng)目所有的依賴包椭更,Vapor使用Swift Package Manager 來管理包,使用vapor fetch
命令進(jìn)行拉取依賴蛾魄,拉取到本地后后所有的包源碼將會(huì)在 Packages 目錄中虑瀑,如下:
CLibreSSL-1.0.0 Fluent-1.1.0 Node-1.0.1 Turnstile-1.0.3
CMySQL-1.0.0 FluentMySQL-1.0.1 PathIndexable-1.0.0 Vapor-1.2.0
Console-1.0.1 JSON-1.0.1 Polymorphic-1.0.1 VaporMySQL-1.1.0
Core-1.0.0 Jay-1.0.0 Routing-1.0.1
Crypto-1.0.1 Leaf-1.0.3 Socks-1.2.0
Engine-1.3.0 MySQL-1.0.2 TLS-1.1.0
這類似于iOS中使用cocoapods
管理依賴包時(shí)的pod install
。
編譯和運(yùn)行
使用vapor build
或者vapor build --release
編譯項(xiàng)目
使用vapor run serve
運(yùn)行項(xiàng)目滴须。
這時(shí)就可以通過在瀏覽器中輸入localhost:8080/plaintext
或者運(yùn)行curl localhost:8080/plaintext
來請(qǐng)求模板中的示例請(qǐng)求舌狗。
使用Xcode
cd進(jìn)入項(xiàng)目目錄下,我們可以使用 vapor xcode命令生成Xcode項(xiàng)目扔水,然后就可以直接使用 Xcode進(jìn)行web開發(fā)了痛侍,這對(duì)于iOS開發(fā)者是那么的熟悉。用Xcode打開項(xiàng)目铭污,選擇Run
scheme來運(yùn)行恋日。
vapor模板中Routes.swift
中已經(jīng)有了幾個(gè)示例膀篮,例如:
get("hello") { req in
var json = JSON()
try json.set("hello", "world")
return json
}
我們運(yùn)行起來項(xiàng)目后嘹狞,直接在瀏覽器里輸入“0.0.0.0:8080/hello”這個(gè)get請(qǐng)求岂膳,就會(huì)返回響應(yīng)的json數(shù)據(jù)。
{
hello: "world"
}
最后
vapor初步了解磅网,感覺很不錯(cuò)的樣子√附兀現(xiàn)在我們已經(jīng)了解了vapor的基本操作,下一步我們學(xué)習(xí)一下使用Heroku部署服務(wù)器涧偷。Heroku為個(gè)人用戶提供了一個(gè)免費(fèi)沙盒(512 MB RAM │ 1 web/1 worker)簸喂,我們可以使用它免費(fèi)去部署一個(gè)屬于自己的服務(wù)器。訪問速度是有點(diǎn)慢燎潮,畢竟國(guó)外免費(fèi)喻鳄。新開的坑,希望接下來能夠慢慢填确封。