✎ Edit on GitHub

# Vapor Documentation

這是 Vapor 的說明文件, Vapor 是一個可以在 iOS, macOS 及 Ubuntu 上執行的 Web framework，以及其他相關的套件。

Vapor 是一個在 Swift 上很受歡迎的 Web framework。它提供了清楚易用的 API 及許多方便的基礎功能，方便我們用它建立網站或是後台。

我們可以在 Vapor's GitHub 查看原始碼及說明文件。

閱讀 English

閱讀 Spanish

閱讀 简体中文

## 如何閱讀說明文件

在 GitHub 上瀏覽每個資料夾，特別是 markdown 檔(副檔名為 .md 的檔案)。或是看 GitHub Pages 上的文件。

## 套件

以下是 Vapor 提供的套件及模組(我們也可以直接使用它們，不透過 Vapor。)

- Vapor: Swift 上最常被使用到的 web framework。
  - Auth: 使用者的認證及存續控制(persistance)。
  - Sessions: 建立在 cookie 機制上安全、短暫的資料儲存。
  - Cookies: HTTP cookies.
  - Routing: 可透過變數類型確定(type-safe)的參數設定來設定路徑。
- Fluent: 用來操作 SQL 或 NoSQL 資料庫。
- Engine: 傳輸的核心層。
  - HTTP: HTTP 用戶端及主機端。
  - URI: URI 的分解及組成。
  - WebSockets: 在一個 TCB 連線中進行雙向的溝通管道。
  - SMTP: 透過 Sendgrid 及 Gmail 發送郵件。
- Leaf: 一種可擴張的樣本語言(extensible templating language)。(譯註: 這可以用來建立使用者介面。)
- JSON: 用 Jay JSON 解析工具產生Vapor物件。
- Console: 用來處理 console 的輸入、輸出及指令的 Swift 工具。
- TLS: 用來處理 CLibreSSL 的新型 TLS 的 Swift 工具。
- Crypto: 在 LibreSSL 及 Swift 上進行加密的工具。
  - Digests: 無論有沒有認證(authentication)都可以進行雜湊(hash)。
  - Ciphers: 編碼及解碼。
  - Random: 安全的隨機性。
  - BCrypt: 完全用 Swift 實作。
- Node: 可以輕易地進行類型轉換的資料結構。
  - Polymorphic: 如同 JSON 一般可以輕易取用資料的語法。
  - Path Indexable: 如同 JSON 一樣可以用來處理複雜的資料結構。
- Core: 主要的 extension 群，例如: 變數類型的重新命名、在許多地方都會被使用的 function 等。
- Socks: 將 C 語言的 Socket API 包裝成 Swift 語言。

## 可合併使用的套件

以下是可以和 Vapor 合併運用的套件列表。(譯註：原文裡這裡還有個東西叫 Provider，那是一種 protocol，讓我們可以掛到 Vapor 中如同第三方元件一樣使用。)

- MySQL: 可透過 Swift 操作 MySQL 的套件。
  - MySQL Driver: 透過 Fluent 操作 MySQL 的套件。
  - MySQL Provider: 讓 MySQL 可以在 Vapor 上運作的 provider。
- SQLite: 可透過 Swift 操作 SQLite 3 的套件。
  - SQLite Driver: 透迥 Fluent 操作 SQLite 的工具。
  - SQLite Provider: 讓 SQLite 可以在 Vapor 上運作的 provider。
- PostgreSQL: 用 Swift 操作 PostgreSQL 的工具。
  - PostgreSQL Driver: 用 Fluent 操作 PostgreSQL 的套件。
  - PostgreSQL Provider: 讓 PostgreSQL 可以運作在 Vapor 上的 provider。
- MongoKitten*: 用 Swift 寫的 MongoDB driver。
  - Mongo Driver: Fluent 用的 MongoKitten driver。
  - Mongo Provider: Vapor 用的 MongoKitten provider.
  - MainecoonVapor: Vapor 的 MongoKitten 物件關聯管理。
- Redbird: 遵循原始協定的規格實作出來的 Swift Redis client 端。
  - Redis Provider: Vapor 的 Redis cache provider。
- Kitura Provider: 在 Vapor 中使用 IBM 的 Kitura HTTP Server。
- SwiftyBeaver: 在 Vapor 中使用 SwiftBeaver 的套件。(譯註: 就像強化版的 NSLog() 或 print())
- APNS: 用來操作 Apple 推播的工具。
- VaporFCM: 用于发送FCM通知的简单库。
- JWT: 讓我們可以設定一些規則以取得特定資源的工具。
- VaporS3Signer: 用來產生 HTTP request 的 headers 及已經簽證過的 URL，用來 request AWS S3 的 REST API。
- Flock: 自動將 Swift 專案發佈上主機。
  - VaporFlock: 利用 Flock 發佈 Vapor applications。
- VaporForms: 讓我們在處理前端送來的 form request 時可以輕鬆一點的套件。
- Jobs: 在某個特定的時間點執行某些程式碼的套件。
- Heimdall: 用來將收到的 http request 記錄到某個檔案的套件，且這個寫好的檔可以用試算表類型(ex: excel, google sheets)的軟體開啟。

## 作者們

Tanner Nelson, Logan Wright，以及其他上百位 Vapor 的貢獻者們。