Vapor奇幻之旅(03上手)

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

image.png

可以看到這里面加入了兩個依賴宝穗,一個是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 ProviderRedisProvider來提供本地數(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)

這是我的一個demo項目的目錄結(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市究西,隨后出現(xiàn)的幾起案子窗慎,更是在濱河造成了極大的恐慌,老刑警劉巖卤材,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遮斥,死亡現(xiàn)場離奇詭異,居然都是意外死亡扇丛,警方通過查閱死者的電腦和手機术吗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帆精,“玉大人较屿,你說我怎么就攤上這事∽苛罚” “怎么了隘蝎?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長襟企。 經(jīng)常有香客問我嘱么,道長,這世上最難降的妖魔是什么顽悼? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任曼振,我火速辦了婚禮,結(jié)果婚禮上表蝙,老公的妹妹穿的比我還像新娘拴测。我一直安慰自己,他們只是感情好府蛇,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屿愚,像睡著了一般汇跨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妆距,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天穷遂,我揣著相機與錄音,去河邊找鬼娱据。 笑死蚪黑,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忌穿,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抒寂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掠剑?” 一聲冷哼從身側(cè)響起屈芜,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朴译,沒想到半個月后井佑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡眠寿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年躬翁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盯拱。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡盒发,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坟乾,到底是詐尸還是另有隱情迹辐,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布甚侣,位于F島的核電站明吩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏殷费。R本人自食惡果不足惜印荔,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望详羡。 院中可真熱鬧仍律,春花似錦、人聲如沸实柠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窒盐。三九已至草则,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蟹漓,已是汗流浹背炕横。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留葡粒,地道東北人份殿。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓膜钓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卿嘲。 傳聞我的和親對象是個殘疾皇子颂斜,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)腔寡,斷路器焚鲜,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 前往 Vapor 2.0 - 文檔目錄 Vapor的文檔 這是關(guān)于Vapor的文檔,它是一個適用于iOS放前、macO...
    韓云智VL閱讀 734評論 2 3
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • 前天幫俱樂部里面的一位加拿大女海歸主持一期周末親子英文party凭语,活動結(jié)束后留下來幫她葱她,順便一起吃了頓飯。一起吃飯...
    Fisterra閱讀 308評論 0 2
  • Let the goal live in the heart and the sight toward the d...
    flyflower1030閱讀 267評論 0 0