近日,在Medium上看到Vapor出了2.0版本,而且出了新的文檔,新的網站。因而忍不住試了一下,而且此次打算不在本地測試,想在Ubuntu系統上嘗試。javascript
經過學習這篇文章,你將學習到:java
由於絕大部分公司是不可能會用蘋果系統來做服務器的,考慮到實用性,此次使用雲服務器來運行咱們的服務端Swift代碼。恰好做爲學生可以以廉價買阿里雲和騰訊雲服務器,因此下手測試了兩家雲端服務器。git
騰訊雲服務器CVM
阿里雲服務器ECS
因爲Swift暫時只支持Ubuntu運行環境,因此雲服務器系統咱們選擇安裝Ubuntu16.04 64位版本,請肯定安裝正確的系統。json
對比兩種服務器,阿里雲的速度慢騰訊雲可不止一兩倍,並且,搞了好久,阿里雲打開不了80窗口,這樣咱們的服務端代碼就起不了做用了,親測騰訊雲成功運行。ubuntu
ssh [name]@公網iP
而後輸入密碼便可登陸。name
爲管理員名,或者你也能夠在騰訊雲管理中心遠程鏈接服務器。swift
eval "$(curl -sL https://apt.vapor.sh)"
vim
sudo apt-get install swift vapor
安裝Vapor2.0。
須要注意的是,這兩行指令已經默認給咱們配置了Swift3.1的環境,咱們不須要手動下載Swift3.1,很是方便。api
經過一行指令再次確認Vapor2.0是否安裝成功eval "$(curl -sL check.vapor.sh)"
瀏覽器
經過一行命令新建一個工程vapor new HelloWorld
服務器
第一次新建的時候,你可能會看到
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
vapor new [name]
cd
到咱們的工程文件中,運行vapor build
vapor build
大約都要等個5到10分鐘。在阿里雲測試咱們的Vapor時,我大約也要等10來分鐘,可是騰訊雲我測試大約要3分鐘,速度明顯差別。
Hello
├── 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.swift
│ └── Run
│ └── main.swift
├── Tests
│ ├── AppTests
│ │ ├── PostControllerTests.swift
│ │ ├── RouteTests.swift
│ │ └── Utilities.swift
│ └── LinuxMain.swift
├── circle.yml
└── license複製代碼
須要注意的是,Vapor2.0的文件結構和Vapor1稍有差異,確實是Less Code,More Power.cd Sources/App
cd 到App目錄下
運行vim Routes.swift
查看該文件代碼,咱們能夠發現
import Vapor
final class Routes: RouteCollection {
func build(_ builder: RouteBuilder) throws {
builder.get("hello") { req in
var json = JSON()
try json.set("hello", "world")
return json
}
builder.get("plaintext") { req in
return "Hello, world!"
}
// response to requests to /info domain
// with a description of the request
builder.get("info") { req in
return req.description
}
builder.get("*") { req in return req.description }
try builder.resource("posts", PostController.self)
}
}
/// Since Routes doesn't depend on anything
/// to be initialized, we can conform it to EmptyInitializable
///
/// This will allow it to be passed by type.
extension Routes: EmptyInitializable { }複製代碼
對比上個版本,確實是簡潔了不少。
補充:退出vim Routes.swift
命令能夠按Shift健+Q
再輸入wq!
退出來。
先cd回工程根目錄下,並執行vapor run serve
在瀏覽器上輸入[你的雲服務器公網IP]:8080/hello
Vapor2添加了不少新的庫
本次是Vapor2.0的開篇,你們能夠上Vapor2.0新文檔查看新版介紹。日後會詳細講Vapor2的功能介紹和應用,喜歡請給紅心,也是對個人鼓勵。