在Vapor奇幻之旅(02部署)一篇中,我介紹了如何在ubuntu上部署并運行vapor項目仆抵,這篇文章我來講講怎么樣來上手開發(fā)Vapor項目跟继。
作為一個服務端程序,可以做的事情包括:
- 提供接口供客戶端訪問
- 提供網(wǎng)頁供瀏覽器訪問
- 處理前端的請求镣丑,包括處理業(yè)務和提供數(shù)據(jù)
- 連接數(shù)據(jù)庫對數(shù)據(jù)進行操作
- 安全相關(guān)舔糖,如加密解密
- websocket
- 接入其他服務,如支付莺匠、推送等
服務器端App能夠作為App的業(yè)務部分金吗,可以將一些耗時耗cpu的運算任務交給服務器,也能給用戶提供內(nèi)容服務,一個好的服務器程序是App和網(wǎng)站穩(wěn)定友好的重要一環(huán)摇庙。
Vapor采用模塊化來組建web應用旱物,利用Swift Package Manager來管理不同的組建,在Package.swift里可以添加需要的package來引入新的模塊卫袒,一旦package被引入宵呛,這個package包含的所有模塊都可以被使用。
當我們運行
vapor new HelloWorld
vapor xcode
會生成一個新的Vapor程序
我們用xcode打開來看看這個程序有哪些東西:
1夕凝、Package.swift
可以看到這里面加入了兩個依賴宝穗,一個是Vapor, 這個是Vapor項目的核心模塊,另一個是FluentProvider码秉,這是提供數(shù)據(jù)模型和數(shù)據(jù)操作的模塊逮矛。
Package: Vapor
首先我來介紹一下Vapor模塊,前面說到了转砖,一旦引入了package须鼎,這個package內(nèi)包含的子模塊都會被引入,Vapor包含若干個模塊府蔗,只需要引入Vapor就可以構(gòu)建一個基本的web應用了晋控,作為核心的web框架,Vapor可以說幾乎包含了web開發(fā)所需要的所有必要的模塊礁竞。
下面介紹一下這個package包含的幾個主要的模塊:
-
Routing
顧名思義糖荒,這個模塊是用來提供路由的,也就是提供接口訪問的uri模捂,接受用戶的請求(get, post, put...),返回需要的結(jié)果蜘矢。 -
JSON
提供服務端的JSON支持狂男,包括生成、處理和解析json串品腹。 -
Node
在web應用開發(fā)的過程中我們的model可能會應用到多種場景岖食,包括生成json,映射數(shù)據(jù)庫舞吭,或者用于view泡垃,這時候就需要一個抽象的中間層,這個角色就是node了羡鸥,它會讓數(shù)據(jù)在你的手中像指尖陀螺一樣蔑穴,唯一而又瞬息萬變。 -
Core
用來處理各類任務的模塊惧浴,包括后臺線程任務存和,異步操作以及RFC1123時間格式。 -
Bits
bytes處理,方便數(shù)據(jù)轉(zhuǎn)換以及序列化捐腿。 -
Debugging
通過Debuggable協(xié)議纵朋,可以在控制臺更好的打印錯誤。 - Cache
提供內(nèi)存級別的緩存茄袖,也可以通過引入Fluent Provider或RedisProvider來提供本地數(shù)據(jù)庫級別的緩存操软。
Package: FluentProvider
這是一個管理數(shù)據(jù)庫連接的庫,相當于java的hybernate和mybatis宪祥,默認數(shù)據(jù)庫是sqlite寺鸥,現(xiàn)在可以支持Memory級別的數(shù)據(jù)庫和MySQL,引入這個package則會默認依賴上一個SQLite的模塊品山,如果想要支持更多的庫則添加相應的provider就可以胆建,下面是現(xiàn)有的provider:
Package: LeafProvider
可以通過web模版新建項目,會包含leaf肘交,也可以獨立加入Package.swift
Leaf是一個生成頁面的框架笆载,有點像jsp,可以把參數(shù)或者運算直接寫到xxx.leaf文件里涯呻,如果有大量交互的頁面這個是很有必要的凉驻。
Package: ValidationProvider
提供數(shù)據(jù)的校驗,如用戶名密碼等复罐。
2涝登、目錄結(jié)構(gòu)
下面一一介紹這些文件的作用
- Commands 提供命令行的命令,這個文件夾是我加上去的效诅,默認并沒有生成
- Controllers 請求處理的地方
- Models 放置數(shù)據(jù)庫模型和業(yè)務模型
- Routes 路由胀滚,設置和接收各類請求
- Setup 初始化的內(nèi)容,包括組裝routes乱投,初始化provider咽笼,初始化數(shù)據(jù)庫等
- Run 包含一個可執(zhí)行的main.swift,里面包含啟動vapor的代碼
-
Config放各類配置文件
config文件夾 - Public 各類公共資源戚炫,如css,js,圖片等都放這里面
- Resources 放置html或者.leaf資源
本篇總結(jié)
什么剑刑,就給我講這個?朋友別急双肤,更多的教程在后面會發(fā)出來施掏。
本篇介紹了一個Vapor程序所包含的依賴以及目錄結(jié)構(gòu),希望通過本篇的了解你能夠?qū)apor項目有更清晰的理解茅糜,英文好的朋友可以移步 官方文檔七芭。
國際慣例,Demo請見HelloVapor
目前vapor還在2.0限匣,3.0不久也會放出來抖苦,我也會更新相應的教程的毁菱。
關(guān)于Vapor其他知識,可以參考以下文章:
Vapor奇幻之旅(01開始)
Vapor奇幻之旅(02部署)
Vapor奇幻之旅(03上手)
Vapor奇幻之旅(04Routing)
Vapor奇幻之旅(05 Fluent)
Vapor奇幻之旅(06 PostgreSQL)
Vapor奇幻之旅(07 連接服務端PostgreSQL)
Vapor奇幻之旅(08 連接服務端MongoDB)
Vapor奇幻之旅(09 連接MySQL)
希望你對我的教程能夠喜歡锌历,你們的贊是我持續(xù)的動力贮庞,歡迎加入QQ群參與互動:431296189