為什么選擇的是Perfect脖隶?
最近在關(guān)注Swift的服務(wù)器框架产艾,其中主流框架前三分別是:
Vapor是借鑒Laravel框架的,如果你之前是試用Laravel框架做開發(fā)讲逛,那么使用Vapor更容易一些傲绣。
IBM的Kitura咆爽,是一個(gè)Express.js 風(fēng)格的框架,知乎上有關(guān)于它的討論如何評(píng)價(jià)IBM云平臺(tái)支持蘋果Swift腮介,以及推出swift語言的web框架Kitura肥矢?
但我為什么選擇使用Perfect呢?主要是因?yàn)橛腥藢?duì)這幾個(gè)框架以及Node.js做了對(duì)比叠洗,Perfect各項(xiàng)表現(xiàn)非常優(yōu)異甘改,所以選擇了這個(gè)框架。具體對(duì)比數(shù)據(jù)可以看這篇文章:不服跑個(gè)分 - 頂級(jí) Swift 服務(wù)端框架對(duì)決 Node.js
配置
官方原版資料:http://www.perfect.org/docs/gettingStartedFromScratch.html
首先你需要安裝Swift 3.0
swift --version
// 打印
Apple Swift version 3.0 (swiftlang-800.0.33.1 clang-800.0.31)
Target: x86_64-apple-macosx10.9
如果你是Ubuntu Linux灭抑,還需要執(zhí)行下面命令安裝OpenSSL
,libssl-dev
, uuid-dev
sudo apt-get install openssl libssl-dev uuid-dev
你可以使用Perfect的PerfectTemplate
工程開始學(xué)習(xí)
git clone https://github.com/PerfectlySoft/PerfectTemplate.git
cd PerfectTemplate
進(jìn)去發(fā)現(xiàn)十艾,臥槽!沒有.xcodeproj文件名挥,這要怎么運(yùn)行呢???
其實(shí)Apple提供了一個(gè)package工具疟羹,swift的包管理工具(暫時(shí)不支持iOS主守,watchOS和tvOS),不需要下載榄融,swift里已經(jīng)自帶了参淫。有時(shí)間推薦研究一下。
github地址: https://github.com/apple/swift-package-manager
進(jìn)到PerfectTemplate
目錄下運(yùn)行下面命令
swift build
等待鏈接一堆git的倉庫之后愧杯,運(yùn)行下面命令
.build/debug/PerfectTemplate
你就可以看到輸出
Starting HTTP server on 0.0.0.0:8181 with document root ./webroot
訪問http://localhost:8181/ 就可以看到輸出了Hello, world!
經(jīng)過上面的步驟涎才,就已經(jīng)成功搭建了一個(gè)本地的Swift服務(wù)器了。但是力九,總不能讓我寫代碼時(shí)候一個(gè)一個(gè).swift寫代碼吧耍铜,作為蘋果自己的東西,怎么也得支持Xcode吧跌前,要不然我怎么開心的coding呢棕兼。
放心,蘋果當(dāng)然提供了這樣的功能抵乓,還是使用剛才那個(gè)swift-package-manager
伴挚。運(yùn)行:
swift package generate-xcodeproj
這是會(huì)自動(dòng)生成一個(gè)PerfectTemplate.xcodeproj
,打開點(diǎn)擊Run
就可以了灾炭。
如果你遇到了Perfect 2.0 -lCOpenSSL link error
的錯(cuò)誤
可以在PROJECT -> Build Setting -> Library Search Paths
中添加$(PROJECT_DIR)
并設(shè)置為Recursive
搭建自己的工程
寫的很好的官方文檔地址:
http://www.perfect.org/docs/gettingStartedFromScratch.html
搭建自己的工程很簡單茎芋,主要還是依賴蘋果的swift-package-manager
,而這個(gè)工具主要是依賴Package.swift
文件蜈出,作用跟cocoapods
的Podfile
類似田弥。
mkdir MyAwesomeProject
cd MyAwesomeProject
touch Package.swift // 創(chuàng)建
open Package.swift // 打開
輸入下面代碼
import PackageDescription
let package = Package(
name: "MyAwesomeProject",
dependencies: [
.Package(
url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git",
majorVersion: 2, minor: 0
)
]
)
主要的作用是說我們的工程需要依賴Perfect-HTTPServer.git
,Perfect現(xiàn)在版本是2.x的版本铡原,所以majorVersion
是2偷厦。
然后運(yùn)行下面命令,創(chuàng)建一個(gè)Sources
目錄和main.swift
眷蜈。
mkdir Sources
touch Sources/main.swift
open
輸入下面代碼
import PerfectLib
import PerfectHTTP
import PerfectHTTPServer
// Create HTTP server.
let server = HTTPServer()
// Register your own routes and handlers
var routes = Routes()
routes.add(method: .get, uri: "/", handler: {
request, response in
response.setHeader(.contentType, value: "text/html")
response.appendBody(string: "<html><title>Hello, world!</title><body>Hello, world!</body></html>")
response.completed()
}
)
// Add the routes to the server.
server.addRoutes(routes)
// Set a listen port of 8181
server.serverPort = 8181
do {
// Launch the HTTP server.
try server.start()
} catch PerfectError.networkError(let err, let msg) {
print("Network error thrown: \(err) \(msg)")
}
之后就需要build
一下了
swift build
.build/debug/MyAwesomeProject
訪問http://localhost:8181/ 就可以看到輸出的結(jié)果了沪哺。
到這里,基本的工程配置就完成了酌儒,之后我會(huì)講一下我的工程做的一些模塊選型辜妓,主要是模版模塊和orm模塊,以及他們的組裝忌怎。謝謝~籍滴!
參考文章
Perfect 官網(wǎng)
Perfact-github
Swift
Swift-github
swift-package-manager
令世人驚嘆的服務(wù)器端 Swift!