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

首頁 > 學院 > 開發設計 > 正文

Swift Web 開發之 Vapor - 入門(一)

2019-11-06 06:47:32
字體:
來源:轉載
供稿:網友

簡介

Vapor 是一個基于純 Swift 構建出的 Web 開發框架,目前可以運行在 macOS 和 Ubuntu ,用于構建出漂亮易用的網站或者 API 服務。

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

當我第一眼看到 Vapor 的時候最吸引我的是 vapor.codes 這個網站,做的很漂亮,包括文檔頁面風格,很符合我的胃口,域名也很有個性,都說 vapor 是受 Laravel 啟發,了解框架主要部件和一些語法后讓我想起了 Python 的 Flask 框架,包括組件化思想、中間件,想起來都應該非常容易上手即擴展。

文檔

Vapor 有一份比較完整的文檔在 docs.vapor.codes,你也可以在 Github 上對文檔提出 issue 和 PR,不過目前看來 exmple 還比較缺少,稍稍高級一點的 API 或著最佳實踐很難找到,估計也是因為整個這一塊還比較新穎,成熟度不高,用戶也相對較少的原因,不過相信在 Swift 日趨成熟的狀態下,各個框架也會發展得越來越好。特別是在 Server APIs Project 完成之后,相信會有一個大的轉變,對了 Vapor 的核心開發成員 Logan Wright(@LoganWright) 也是Server APIs Project 團隊的一員,所以看好 Vapor 的未來應該是沒有錯的。

另外推薦一下 Ray Wenderlich 的一系列 Vapor ship教程,每個視頻都是簡短截說,非常實用,你可以在 vapor.university 上找到,當然上面還有其他優秀的視頻教程和文章。

組件

Vapor AuthsessionsCookiesRoutingVapor ToolboxFluentEngine HTTPURIWebSocketsSMTPLeafJSONConsoleTLSCryptoNodeSocks

Vapor 使用 Swift Package Manager 做依賴和包管理,不過以我個人目前的使用感受來看 Swift Package Manager 還不是很好用。

Vapor 封裝了幾乎常見的所有 web 開發部件,比如路由、授權認證、模版引擎、中間件、數據庫ORM、JSON解析、Web sockets… 足以拿來讓我們應付普通的 web 設計,讓我們只需要更多的關心業務邏輯便可快速開發出自己的網站。該系列后面的文章會詳細深入對每個部件進行探究。

從 Toolbox 開始

安裝

Mac 用戶推薦用 Homebrew 安裝 vapor toolbox,toolbox 也是 Swift 寫的,倉庫在這里。

# install Vapor Toolboxbrew install vapor/tap/toolbox

第一次安裝的時候遇到問題,卡在 unset CC; swift build -c release 很久不動,后來又可以了,估計還是因為網絡問題,建議大家安裝時都開上代理。#11

介紹

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

Usage: vapor <new|build|run|fetch|clean|test|xcode|version|self|heroku|docker>new - 新建項目build - 編譯(內部會執行 swift build)run - 運行項目fetch - 拉取定義在 Package.swift 中的依賴clean - 清除緩存test - 執行測試xcode - 生成 .xcodeproj 用于使用 xcode 進行開發version - 查看 vapor toolbox 版本號self - vapor self <install|update> 用來自更新heroku - 部署到 herokudocker - 部署到 docker

Xcode

我們可以使用 vapor xcode 生成 xcode 項目,然后就可以直接使用 xcode 進行 web 開發了,編輯源代碼,Command + R 一切還是那么熟悉(對于 iOS 開發者來說)。:]

注意:因為這個 .xcodeproj 項目的目錄結構都是 vapor 自動生成的,所以目錄結構有變動我們可以再執行一次 vapor xcode 命令重新生成,并且在為了不干擾其他協同人員在 linux 環境下開發,推薦在 .gitignore 中加入這一行 *.xcodeproj 以忽略其進入 git。

Hello, World

前面講了這么多介紹、環境、工具,這里主要帶大家跑起來一個 hello,world 項目。

Toolbox

整個流程都會基于 Vapor Toolbox 的命令完成,所以你的第一步應該是裝好這個東西。

Mac 用戶推薦用 Homebrew 安裝 vapor toolbox,toolbox 也是 Swift 寫的,倉庫在 Github。

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

第一次安裝的時候遇到問題,卡在 unset CC; swift build -c release 很久不動,后來又可以了,估計還是因為網絡問題,建議大家安裝時都開上代理。#11

更多可以參考官方文檔頁面 install Toolbox

New Project

如果你是 iOS 開發者,這里請暫時先忘掉 Xcode,因為所有環境和開發都能在 Linux 中完成。

vapor new Hello

執行完成后大概會看到這樣的界面:

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

vapor new 命令將會從 vapor/basic-template 拉取初始工程,目錄結構如下:

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

項目采用 MVC 架構,ModelControllerSource/App 下,同級還有個 main.swift,這就是整個程序的主文件,Resources/Views 里放的是頁面模版。

main.swift

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

大家感受一下路由,最終這份代碼將會在瀏覽器中呈現出 “Hello, world.” 這個字符串,這一篇文章暫時并不會說太多代碼,只是讓大家了解感受下 Vapor 開發的整個流程,后面會深入其中。

Fetch

編譯之前需要拉取項目所有的第三方庫,也就是依賴包,Vapor 使用 Swift Package Manager 來管理包,使用 toolbox 中的 vapor fetch 命令進行拉取依賴,拉取到本地后后所有的包源碼將會在 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 開發中的 pod install … ;]

Build

拉取完依賴之后就可以執行 vapor build 開始編譯項目,然而其實 vapor build 也會去 Fetching Dependencies,所以直接執行這個命令也是可以的。

編譯完成后你會在項目根目錄下發現一個 .build 目錄,這里面將會存放項目所有源碼編譯后的文件。

如果使用 xcode 只要不更新依賴,直接 Command+B 進行編譯, Command+R 運行。

Run

編譯成功后通過下面這條命令來啟動服務器。

vapor run serve

如果看到 Server starting... 的字樣,那就可以通過瀏覽器訪問 http://localhost:8080 進行訪問了。

部署

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

社區

GithubSlack

捐贈

作為一個非營利開源項目組織,他們非常愿意接受資金贊助以保持項目積極發展,所以如果你喜歡這個項目并想支持 Vapor,這將會是一個很好的方式。

Vapor 在 OpenCollective 開通了捐贈頁面,在其 Github 主頁可以找到相關鏈接,

OpenCollective 是一個用于開源社區募集資金的平臺,主張財務透明,可在其頁面上看到任何人的捐贈記錄。

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

推薦閱讀

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 開發之 Vapor】第一篇就這樣了,Vapor 內容很多,“入門”旨在爭取看完能夠搭建好環境和跑起來示例程序并對這個框架有個初步認識就可以了,后續我會繼續分享 Vapor 相關的其他組件和使用經驗。

用了近一個月的 Vapor,開了一個坑準備寫一個博客程序 NSPress,類似 Wordpress、Typecho,后面的坑很多,比如插件、模版系統的架構,也是一次 Swift server-side 的學習與嘗試,希望有興趣的朋友可以一起學習與交流,你可以在 微博、 Github 關注我,或者給我發郵件 isaced@163.com


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品中文字幕在线播放| 久久亚洲私人国产精品va| 亚洲成人久久网| 久久影视电视剧免费网站清宫辞电视| 国产成人高清激情视频在线观看| 久久久久久久爱| 青草成人免费视频| 成人免费xxxxx在线观看| 日韩美女毛茸茸| 精品久久久91| 亚洲经典中文字幕| 欧美成人午夜剧场免费观看| 久久综合色88| 国产婷婷色综合av蜜臀av| 亚洲乱码国产乱码精品精天堂| 亚洲成色www8888| 日韩经典一区二区三区| 亚洲国产私拍精品国模在线观看| 亚洲精品国产精品国产自| 久久久久久网站| 日本精品一区二区三区在线播放视频| 国产噜噜噜噜噜久久久久久久久| 国产精品日韩在线一区| 中文字幕亚洲欧美一区二区三区| 亚洲天堂精品在线| 91免费版网站入口| 91久久久久久久久久久久久| 久久99亚洲精品| 欧美一级淫片播放口| 国产欧美精品日韩精品| 久久久久久久91| 欧美疯狂xxxx大交乱88av| 日韩电影中文字幕在线观看| 在线播放国产一区中文字幕剧情欧美| 精品久久香蕉国产线看观看gif| 欧美成人午夜免费视在线看片| 国产精品中文字幕久久久| 精品视频在线播放免| 久久精品久久久久久| 欧美高清电影在线看| 欧美性猛交xxxx乱大交3| 亚洲欧美激情精品一区二区| 中文字幕精品一区久久久久| 1769国内精品视频在线播放| 精品在线观看国产| 好吊成人免视频| 性色av一区二区三区红粉影视| 91精品久久久久久久久中文字幕| 97视频人免费观看| 91夜夜揉人人捏人人添红杏| 尤物99国产成人精品视频| 久久久久久久亚洲精品| 不用播放器成人网| 欧美wwwxxxx| 久久久999精品免费| 综合久久五月天| 欧美中文在线免费| 亚洲人在线观看| 26uuu日韩精品一区二区| 中文字幕欧美国内| 色视频www在线播放国产成人| 国产69久久精品成人| 亚洲精品免费av| 97成人超碰免| 国产精品爱久久久久久久| 国产精品欧美一区二区| 欧美另类暴力丝袜| 在线观看视频亚洲| 这里只有精品在线观看| 蜜臀久久99精品久久久久久宅男| 欧美激情久久久久| 亚洲第一页中文字幕| 超碰91人人草人人干| 91精品在线观| 日韩精品视频中文在线观看| 国产精品主播视频| 欧美成人免费在线视频| 欧美日韩国产成人在线观看| 欧美日韩国产在线| 亚洲精品国精品久久99热一| 久久久久中文字幕| 欧美在线视频观看| 国产精品三级在线| 91精品国产沙发| 姬川优奈aav一区二区| 国产日韩欧美91| 国产精品自产拍高潮在线观看| www国产亚洲精品久久网站| 国产精品丝袜一区二区三区| 国产精品27p| 国产精品私拍pans大尺度在线| 亚洲日韩欧美视频一区| 国产一区欧美二区三区| 亚洲美女福利视频网站| 欧美黑人狂野猛交老妇| 欧美日韩激情视频8区| 最近2019中文字幕大全第二页| 亚洲欧美一区二区三区久久| 美女黄色丝袜一区| 91国产美女视频| 欧美日韩中文字幕在线| 亚洲成人精品视频在线观看| 欧美高清视频免费观看| 欧美亚洲国产视频小说| 日韩中文字幕亚洲| 97福利一区二区| 日韩久久免费电影| 91色在线观看| 国产精品久久久久久久久久久久久久| 亚洲毛片在线看| 国内外成人免费激情在线视频网站| 国产成人精品av| 欧美人成在线视频| 95av在线视频| 91av网站在线播放| 乱亲女秽乱长久久久| 欧美性受xxxx白人性爽| 一个人看的www欧美| 欧美激情一区二区三区高清视频| 精品国产欧美成人夜夜嗨| 91成人国产在线观看| 亚洲国产精品99| 精品欧美国产一区二区三区| 国产精品福利网| 奇米四色中文综合久久| 久久av红桃一区二区小说| 色婷婷久久一区二区| 亚洲国产欧美在线成人app| 亚洲成成品网站| 91精品国产自产91精品| 亚洲欧美日韩久久久久久| 欧美激情成人在线视频| 大荫蒂欧美视频另类xxxx| 欧美成人免费在线视频| 国产xxx69麻豆国语对白| 伊人伊成久久人综合网站| 国产亚洲精品久久久| 亚洲黄色免费三级| 一区二区成人精品| 九九综合九九综合| 国产成人午夜视频网址| 国模精品系列视频| 日韩av男人的天堂| 91欧美精品成人综合在线观看| 91免费在线视频网站| 日韩中文字幕免费视频| 国产日韩欧美日韩| 久久成人亚洲精品| 欧美精品久久久久久久久| 日本成人在线视频网址| 91sao在线观看国产| 日韩av在线高清| 亚洲黄色片网站| 国产成人精品在线| 亚洲第一区第二区| 欧美激情成人在线视频| 日韩免费在线免费观看| 国产精品pans私拍| 操日韩av在线电影| 欧美激情2020午夜免费观看| 在线日韩第一页| 国产在线精品成人一区二区三区| 日韩欧美福利视频| 欧美精品手机在线|