亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Swift Web 開(kāi)發(fā)之 Vapor - 入門(mén)(一)

2019-11-06 06:47:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

簡(jiǎn)介

Vapor 是一個(gè)基于純 Swift 構(gòu)建出的 Web 開(kāi)發(fā)框架,目前可以運(yùn)行在 macOS 和 Ubuntu ,用于構(gòu)建出漂亮易用的網(wǎng)站或者 API 服務(wù)。

官方稱是用的最多的 Swift web 框架,理由是因其在 IBM Swift Package CatalogBETA - Most Essential 排名第一。But 對(duì)于一些星星黨并不這么覺(jué)得,Perfect 星星還是多一些的 ;]。 個(gè)人覺(jué)得對(duì)于初心者朋友們選擇一款主流、優(yōu)雅、更新活躍的框架學(xué)習(xí)就好了,不必太在意那些。

當(dāng)我第一眼看到 Vapor 的時(shí)候最吸引我的是 vapor.codes 這個(gè)網(wǎng)站,做的很漂亮,包括文檔頁(yè)面風(fēng)格,很符合我的胃口,域名也很有個(gè)性,都說(shuō) vapor 是受 Laravel 啟發(fā),了解框架主要部件和一些語(yǔ)法后讓我想起了 Python 的 Flask 框架,包括組件化思想、中間件,想起來(lái)都應(yīng)該非常容易上手即擴(kuò)展。

文檔

Vapor 有一份比較完整的文檔在 docs.vapor.codes,你也可以在 Github 上對(duì)文檔提出 issue 和 PR,不過(guò)目前看來(lái) exmple 還比較缺少,稍稍高級(jí)一點(diǎn)的 API 或著最佳實(shí)踐很難找到,估計(jì)也是因?yàn)檎麄€(gè)這一塊還比較新穎,成熟度不高,用戶也相對(duì)較少的原因,不過(guò)相信在 Swift 日趨成熟的狀態(tài)下,各個(gè)框架也會(huì)發(fā)展得越來(lái)越好。特別是在 Server APIs Project 完成之后,相信會(huì)有一個(gè)大的轉(zhuǎn)變,對(duì)了 Vapor 的核心開(kāi)發(fā)成員 Logan Wright(@LoganWright) 也是Server APIs Project 團(tuán)隊(duì)的一員,所以看好 Vapor 的未來(lái)應(yīng)該是沒(méi)有錯(cuò)的。

另外推薦一下 Ray Wenderlich 的一系列 Vapor ship教程,每個(gè)視頻都是簡(jiǎn)短截說(shuō),非常實(shí)用,你可以在 vapor.university 上找到,當(dāng)然上面還有其他優(yōu)秀的視頻教程和文章。

組件

Vapor AuthsessionsCookiesRoutingVapor ToolboxFluentEngine HTTPURIWebSocketsSMTPLeafJSONConsoleTLSCryptoNodeSocks

Vapor 使用 Swift Package Manager 做依賴和包管理,不過(guò)以我個(gè)人目前的使用感受來(lái)看 Swift Package Manager 還不是很好用。

Vapor 封裝了幾乎常見(jiàn)的所有 web 開(kāi)發(fā)部件,比如路由、授權(quán)認(rèn)證、模版引擎、中間件、數(shù)據(jù)庫(kù)ORM、JSON解析、Web sockets… 足以拿來(lái)讓我們應(yīng)付普通的 web 設(shè)計(jì),讓我們只需要更多的關(guān)心業(yè)務(wù)邏輯便可快速開(kāi)發(fā)出自己的網(wǎng)站。該系列后面的文章會(huì)詳細(xì)深入對(duì)每個(gè)部件進(jìn)行探究。

從 Toolbox 開(kāi)始

安裝

Mac 用戶推薦用 Homebrew 安裝 vapor toolbox,toolbox 也是 Swift 寫(xiě)的,倉(cāng)庫(kù)在這里。

# install Vapor Toolboxbrew install vapor/tap/toolbox

第一次安裝的時(shí)候遇到問(wèn)題,卡在 unset CC; swift build -c release 很久不動(dòng),后來(lái)又可以了,估計(jì)還是因?yàn)榫W(wǎng)絡(luò)問(wèn)題,建議大家安裝時(shí)都開(kāi)上代理。#11

介紹

vapor toolbox 是封裝的一套命令行工具,基礎(chǔ)命令如下:

Usage: vapor <new|build|run|fetch|clean|test|xcode|version|self|heroku|docker>new - 新建項(xiàng)目build - 編譯(內(nèi)部會(huì)執(zhí)行 swift build)run - 運(yùn)行項(xiàng)目fetch - 拉取定義在 Package.swift 中的依賴clean - 清除緩存test - 執(zhí)行測(cè)試xcode - 生成 .xcodeproj 用于使用 xcode 進(jìn)行開(kāi)發(fā)version - 查看 vapor toolbox 版本號(hào)self - vapor self <install|update> 用來(lái)自更新heroku - 部署到 herokudocker - 部署到 docker

Xcode

我們可以使用 vapor xcode 生成 xcode 項(xiàng)目,然后就可以直接使用 xcode 進(jìn)行 web 開(kāi)發(fā)了,編輯源代碼,Command + R 一切還是那么熟悉(對(duì)于 iOS 開(kāi)發(fā)者來(lái)說(shuō))。:]

注意:因?yàn)檫@個(gè) .xcodeproj 項(xiàng)目的目錄結(jié)構(gòu)都是 vapor 自動(dòng)生成的,所以目錄結(jié)構(gòu)有變動(dòng)我們可以再執(zhí)行一次 vapor xcode 命令重新生成,并且在為了不干擾其他協(xié)同人員在 linux 環(huán)境下開(kāi)發(fā),推薦在 .gitignore 中加入這一行 *.xcodeproj 以忽略其進(jìn)入 git。

Hello, World

前面講了這么多介紹、環(huán)境、工具,這里主要帶大家跑起來(lái)一個(gè) hello,world 項(xiàng)目。

Toolbox

整個(gè)流程都會(huì)基于 Vapor Toolbox 的命令完成,所以你的第一步應(yīng)該是裝好這個(gè)東西。

Mac 用戶推薦用 Homebrew 安裝 vapor toolbox,toolbox 也是 Swift 寫(xiě)的,倉(cāng)庫(kù)在 Github。

# macOSbrew install vapor/tap/toolbox# Ubuntucurl -sL swift.vapor.sh/ubuntu | bash

第一次安裝的時(shí)候遇到問(wèn)題,卡在 unset CC; swift build -c release 很久不動(dòng),后來(lái)又可以了,估計(jì)還是因?yàn)榫W(wǎng)絡(luò)問(wèn)題,建議大家安裝時(shí)都開(kāi)上代理。#11

更多可以參考官方文檔頁(yè)面 install Toolbox

New Project

如果你是 iOS 開(kāi)發(fā)者,這里請(qǐng)暫時(shí)先忘掉 Xcode,因?yàn)樗协h(huán)境和開(kāi)發(fā)都能在 Linux 中完成。

vapor new Hello

執(zhí)行完成后大概會(huì)看到這樣的界面:

Cloning Template [Done] ** **~~** **~~~~~~** **~~~~~~~~~~** **~~~~~~~~~~~~~~** **~~~~~~~~~~~~~~~~~~** **~~~~~~~~~~~~~~~~~~~~~~** **~~~~~~~~~~~~~~~~~~~~~~~~** **~~~~~~~~~~~~~~~~~~~~~~~~~~** **~~~~~~~~~~~~~~~~~~~~~~~~~~~~** **~~~~~~~~~~~~~~~~~~~~~~~~~~~~** **~~~~~~~~~~~~~~~~~~~~~++++~~~** **~~~~~~~~~~~~~~~~~~~++++~~~** ***~~~~~~~~~~~~~~~++++~~~*** ****~~~~~~~~~~++++~~**** *****~~~~~~~~~***** ************* _ __ ___ ___ ___ / / / / // | |_) / / / | |_) /_// /_/--/ |_| /_/_/ |_| / a web framework for Swift Project "Hello" has been created. Type `cd Hello` to enter the project directory. Enjoy!

vapor new 命令將會(huì)從 vapor/basic-template 拉取初始工程,目錄結(jié)構(gòu)如下:

.├── Config│ └── production├── Localization├── Public│ ├── images│ └── styles├── Resources│ └── Views└── Sources └── App ├── Controllers └── Models

項(xiàng)目采用 MVC 架構(gòu),ModelControllerSource/App 下,同級(jí)還有個(gè) main.swift,這就是整個(gè)程序的主文件,Resources/Views 里放的是頁(yè)面模版。

main.swift

import Vaporlet drop = Droplet()drop.get("hello") { req in return "Hello, world."}drop.run()

大家感受一下路由,最終這份代碼將會(huì)在瀏覽器中呈現(xiàn)出 “Hello, world.” 這個(gè)字符串,這一篇文章暫時(shí)并不會(huì)說(shuō)太多代碼,只是讓大家了解感受下 Vapor 開(kāi)發(fā)的整個(gè)流程,后面會(huì)深入其中。

Fetch

編譯之前需要拉取項(xiàng)目所有的第三方庫(kù),也就是依賴包,Vapor 使用 Swift Package Manager 來(lái)管理包,使用 toolbox 中的 vapor fetch 命令進(jìn)行拉取依賴,拉取到本地后后所有的包源碼將會(huì)在 Packages 目錄中,如下:

CLibreSSL-1.0.0 Fluent-1.1.0 Node-1.0.1 Turnstile-1.0.3CMySQL-1.0.0 FluentMySQL-1.0.1 PathIndexable-1.0.0 Vapor-1.2.0Console-1.0.1 JSON-1.0.1 Polymorphic-1.0.1 VaporMySQL-1.1.0Core-1.0.0 Jay-1.0.0 Routing-1.0.1Crypto-1.0.1 Leaf-1.0.3 Socks-1.2.0Engine-1.3.0 MySQL-1.0.2 TLS-1.1.0

這一步就像是 iOS 開(kāi)發(fā)中的 pod install … ;]

Build

拉取完依賴之后就可以執(zhí)行 vapor build 開(kāi)始編譯項(xiàng)目,然而其實(shí) vapor build 也會(huì)去 Fetching Dependencies,所以直接執(zhí)行這個(gè)命令也是可以的。

編譯完成后你會(huì)在項(xiàng)目根目錄下發(fā)現(xiàn)一個(gè) .build 目錄,這里面將會(huì)存放項(xiàng)目所有源碼編譯后的文件。

如果使用 xcode 只要不更新依賴,直接 Command+B 進(jìn)行編譯, Command+R 運(yùn)行。

Run

編譯成功后通過(guò)下面這條命令來(lái)啟動(dòng)服務(wù)器。

vapor run serve

如果看到 Server starting... 的字樣,那就可以通過(guò)瀏覽器訪問(wèn) http://localhost:8080 進(jìn)行訪問(wèn)了。

部署

Vapor 支持任何能運(yùn)行 Swift 環(huán)境的地方,輕松搭配 Nginx 等通用服務(wù)器程序進(jìn)行部署。比如 Digital Ocean、Docker、Heroku、AWS 等等,甚至還支持一鍵部署到 Heroku,Heroku 為個(gè)人用戶提供了一個(gè)免費(fèi)沙盒(512 MB RAM │ 1 web/1 worker),只是會(huì)在閑置30分鐘后自動(dòng)睡眠,如果你想嘗試,Just do it,非常簡(jiǎn)單。

社區(qū)

GithubSlack

捐贈(zèng)

作為一個(gè)非營(yíng)利開(kāi)源項(xiàng)目組織,他們非常愿意接受資金贊助以保持項(xiàng)目積極發(fā)展,所以如果你喜歡這個(gè)項(xiàng)目并想支持 Vapor,這將會(huì)是一個(gè)很好的方式。

Vapor 在 OpenCollective 開(kāi)通了捐贈(zèng)頁(yè)面,在其 Github 主頁(yè)可以找到相關(guān)鏈接,

OpenCollective 是一個(gè)用于開(kāi)源社區(qū)募集資金的平臺(tái),主張財(cái)務(wù)透明,可在其頁(yè)面上看到任何人的捐贈(zèng)記錄。

個(gè)人覺(jué)得支持一個(gè)項(xiàng)目的更好方式是為其“添磚加瓦”,把你更多的靈感和代碼注入到項(xiàng)目里。

推薦閱讀

Super Spectacular Server-Side Swift!Benchmarks for the Top Server-Side Swift Frameworks vs. Node.jsLinux (Ubuntu) Benchmarks for Server Side Swift vs Node.jsvapor.university

后記

【Swift Web 開(kāi)發(fā)之 Vapor】第一篇就這樣了,Vapor 內(nèi)容很多,“入門(mén)”旨在爭(zhēng)取看完能夠搭建好環(huán)境和跑起來(lái)示例程序并對(duì)這個(gè)框架有個(gè)初步認(rèn)識(shí)就可以了,后續(xù)我會(huì)繼續(xù)分享 Vapor 相關(guān)的其他組件和使用經(jīng)驗(yàn)。

用了近一個(gè)月的 Vapor,開(kāi)了一個(gè)坑準(zhǔn)備寫(xiě)一個(gè)博客程序 NSPress,類似 Wordpress、Typecho,后面的坑很多,比如插件、模版系統(tǒng)的架構(gòu),也是一次 Swift server-side 的學(xué)習(xí)與嘗試,希望有興趣的朋友可以一起學(xué)習(xí)與交流,你可以在 微博、 Github 關(guān)注我,或者給我發(fā)郵件 isaced@163.com。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
黄网站app在线观看下载视频大全官网| 2018高清国产日本一道国产| 视频区 图片区 小说区| 99热手机在线| 亚洲成人网在线观看| 17c精品麻豆一区二区免费| 丁香花电影在线观看完整版| 国内在线免费高清视频| 欧美日韩亚洲自拍| 国产超碰在线| 波多野结衣三级视频| 色综合一区二区日本韩国亚洲| 日韩亚洲国产中文字幕欧美| 久久视频一区二区三区| 韩国三级hd中文字幕| 日韩精品一区二区在线播放| 成人免费av在线| 欧美伦理视频网站| 欧美日韩精品在线观看| 日本一区二区三区高清不卡| 国产一区二区在线网站| 亚洲精品粉嫩美女一区| 中文字幕免费高清网站| 神马影院一区二区| 国产精品久久久久久亚洲伦| 色综合999| 四虎影视一区二区| 亚洲国产精品国自产拍久久| 成人午夜短视频| 中文字幕福利片| 欧美日韩www| xxxx.国产| av在线免费播放网址| 国产三级做爰高清在线| 国产三级三级在线观看| 夜夜爽久久精品91| 黄色aaa毛片| jlzzjlzz亚洲日本少妇| 天堂av免费在线观看| 中文字幕在线看片| 亚洲av成人精品一区二区三区在线播放| 欧美亚洲国产怡红院影院| 日本免费在线视频不卡一不卡二| 先锋影音久久| 国产尤物一区二区| av手机天堂| 精品国产91久久久久久浪潮蜜月| 色欲综合视频天天天| 中文字幕精品—区二区日日骚| 91日本在线视频| 久久在线播放| 亚洲成色777777女色窝| 热久久99这里有精品| 少妇av一区二区三区无码| 成人高清在线视频| 波多野结衣a v在线| 91麻豆精品激情在线观看最新| 五十路中文字幕| 91美女主播在线视频| 岛国成人av| 日韩欧美在线一区二区| 日韩精品91亚洲二区在线观看| 中文字幕无码日韩专区免费| 国产一级片免费观看| 男人的天堂网页| 天堂a中文在线| 91久久久久久国产精品| 国产精品视频最多的网站| 在线看片不卡| 国产麻豆精品95视频| 免费欧美日韩| 在线观看免费视频黄| 国产精品va在线观看无码| 亚洲综合成人网| 国产乱码一区二区三区四区| 成人免费观看在线视频| 亚洲人成免费电影| 中文资源在线播放| 四虎精品成人免费观看| 欧美理论一区二区| 97在线观看视频免费| 国产黄大片在线观看| 亚洲日本成人网| 欧美精选一区二区| 激情丁香婷婷| 亚洲深夜av| 日韩精品中文字幕在线不卡尤物| 国产精品伦理一区| 国产精品777一区二区| 日韩欧美在线一区二区| 一级香蕉视频在线观看| 亚洲精品国产精品国自产在线| 亚洲精品一区二区三区在线观看| 日韩av卡一卡二| 舐め犯し波多野结衣在线观看| 右手影院亚洲欧美| 中文字幕成人在线观看| 国产精品三级| 你懂得视频在线观看| 亚洲一二三四久久| 欧美激情女人20p| 色婷婷一区二区三区在线观看| 国产一区二区福利| 丰满少妇一区二区三区专区| 亚洲女人天堂视频| 午夜a成v人精品| 日韩毛片无码永久免费看| 中文字幕免费不卡| 日韩制服丝袜av| 一本久久综合亚洲鲁鲁| 日韩av在线免费播放| 超碰在线资源站| 日韩一区二区在线视频| 日本福利视频在线| 国产精品资源网站| 欧美一区二区三区四区久久| 国产无套精品一区二区| 免费网站观看www在线观看| 久久99久久久久久久噜噜| 亚洲午夜国产一区99re久久| 久久国产精品99久久久久久丝袜| 97se国产在线视频| 欧美91福利在线观看| 国产精品国产自产拍高清av王其| 国产一区二区99| 日韩福利视频在线观看| 9色精品在线| 国产欧美一级片| 污网站在线免费| 欧美日韩激情一区二区三区| 国产精品入口免费视频一| 一区二区三区日韩视频| 蜜臀91精品一区二区三区| 久久综合久久久久| 国产盗摄xxxx视频xxx69| 欧美18—19sex性hd| 伊人影院蕉久552| 国产精品一区二区a| 91精品国产91久久久久久吃药| 九九视频直播综合网| 91亚洲精品在看在线观看高清| 一区二区三区中文在线观看| 亚洲一区在线日韩在线深爱| 欧美hdxxxxx| 色播五月激情五月| 国产成人无码一二三区视频| 久久99精品久久久野外观看| 精品一区二区三区四区在线| 精品动漫av| 精品人伦一区二区| 成人国产精品入口免费视频| 日本亚洲欧洲精品| 国产精品theporn动漫| 免费在线观看的av| 网爆门在线观看| 欧美一性一乱一交一视频| 日本中文字幕高清视频| 少妇性bbb搡bbb爽爽爽欧美| 天天射天天拍| 国产高清不卡二三区| 在线看女人毛片| 日韩精品免费观看视频| 国产成人精品1024| 欧美一级淫片a免费视频| 精品一区二区三区影院在线午夜| 欧美第一黄色网| 亚洲一区在线视频| 桃色一区二区| 精品视频在线看| 性一交一乱一区二区洋洋av| 国产精品女主播| 黄色aaa毛片| 亚洲精品自拍视频| 国产叼嘿网站免费观看不用充会员| 成年片费网站色大全免费视频| avlululu| 国产欧美在线一区| 中文字幕一区二区三区四区在线视频| www浪潮av99com| 26uuu日韩精品一区二区| 99久久精品费精品国产| 亚洲精品乱码久久久久久| 丁香网亚洲国际| 欧美艳星kaydenkross| 538在线一区二区精品国产| 韩国av电影在线观看| 日本免费看黄色| 国产精品免费视频一区二区| 超碰人人cao| 日韩视频欧美视频| 国产乱妇无码大片在线观看| 欧美视频在线观看一区二区三区| 午夜精品久久久久久99热| 羞羞的视频在线| 久久手机在线视频| 亚洲国产一区二区在线观看| 午夜69成人做爰视频| 91在线观看免费高清完整版在线观看| 国产日韩一区二区三免费高清| 国产丝袜一区二区三区| 99视频在线视频| 欧美精品入口蜜桃| 337p日本欧洲亚洲大胆色噜噜| 亚洲乱码国产乱码精品精天堂| 国产午夜精品久久久久久久| 精品国产第一区二区三区观看体验| 久久亚洲欧美| 亚洲美女免费在线| 欧美极品少妇xxxxⅹ免费视频| 亚洲跨种族黑人xxx| 美国黄色一级毛片| 91在线视频免费| 欧美大胆一级视频| 日本高清免费电影一区| 国产一区二区丝袜| 日日夜夜国产| 成人在线免费播放视频| 欧美日韩国产综合网| 宅男噜噜噜66一区二区| 成人毛片在线精品国产| 疯狂试爱三2浴室激情视频| 日韩中文字幕免费看| 一级黄色av片| 欧美日韩影院| 日本天堂影院在线视频| 亚洲精品永久www嫩草| 欧美一区少妇| 男插女视频久久久| 日韩欧美国产高清91| 一本色道久久综合亚洲精品不卡| 久久人妻少妇嫩草av无码专区| 亚洲特级片在线| 户外露出精品视频国产| 欧美日韩中文在线视频| 可以直接看的无码av| 天堂视频在线| 国产视频一区在线播放| 欧美性受xxxx| 欧美日韩一区二区高清| aa亚洲一区一区三区| jizzjizzjizzjizz日本| 亚洲中文字幕无码不卡电影| 国产精品无码在线| 欧美电影在线观看网站| 8848hh四虎| 九色91av视频| 香蕉久久99| 97dyy97影院理论片在线| 亚洲天堂黄色片| 91精品国产福利尤物| 日本一区二区在线看| 一区二区成人| 凹凸成人精品亚洲精品密奴| 美洲天堂一区二卡三卡四卡视频| av爱爱亚洲一区| 在线免费av观看| av三级在线观看| 国产在线观看免费视频软件| 成人做爰www免费看视频网站| 亚洲第一精品夜夜躁人人躁| 欧美日韩小视频| 日韩一区中文字幕| freehdxxxx| 亚洲免费成人av在线| jizz免费视频| 亚洲色图另类色图| 亚洲中国最大av网站| 免费观看亚洲天堂| 日本a级c片免费看三区| 亚洲综合网狠久久| 日韩黄色三级在线观看| 自拍偷自拍亚洲精品被多人伦好爽| 久久久久久免费观看| 久久国产成人精品国产成人亚洲| 亚洲一区日韩精品中文字幕| 波多野结衣先锋影音| 日本不卡免费一区| 三区在线观看| 在线播放精品一区二区三区| 曰本三级在线| 女人高潮一级片| 精品国产91洋老外米糕| 粗暴91大变态调教| jizzjizz日本护士视频| 91在线视频一区| 91精品国产一区二区三区动漫| 一区二区三区四区视频精品免费| 午夜亚洲性色视频| 亚洲成人激情av| 午夜欧美精品久久久久久久| 日本免费一区二区三区最新| 图片区乱熟图片区亚洲| 激情视频免费观看在线| 日韩电影一区二区三区| 欧美成人精品一区二区三区在线看| 精品日韩av一区二区| 黄色小视频大全| 欧美丰满艳妇bbwbbw| av网站免费在线看| 国产人成一区二区三区影院| 成人污污视频在线观看| 日本一区免费视频| 国产亚洲欧美一区在线观看| 在线日韩中文字幕| 欧美jizzhd欧美精品巨大| 欧美成人基地| 欧美性生活一级片| 亚洲精品在线观| 日韩三级av在线播放| 福利在线白白| 欧美成人猛片aaaaaaa| 国产视频www| 中文字幕免费观看一区| 日本一区美女| 亚洲av成人精品一区二区三区在线播放| 国产精品久久久久久无人区| 免费的很黄很污的视频网站| 色噜噜狠狠色综合网| 综合激情视频| av小说在线| 日韩精品乱码免费| 91社区在线观看| 国产三级电影在线播放| 亚洲精品乱码久久久久久不卡| 国产一区二区不卡老阿姨| 99视频免费在线观看| 伊人75在线| 一区二区三区中文免费|