Swift國(guó)內(nèi)社區(qū): SwiftMic
Droplet 是一個(gè)比較綜合的類(lèi),它負(fù)責(zé)路由的注冊(cè)、服務(wù)的啟動(dòng)和中間件的添加等等。
初始化
編輯 main.swift
import Vapor
let drop = Droplet()
drop.serve()
使用默認(rèn)參數(shù)配置的 Droplet 就被構(gòu)造出來(lái)了。
同時(shí),也可以自定義構(gòu)造 Droplet
public init(
// non-providable
arguments: [String]? = nil,
workDir workDirProvided: String? = nil,
config configProvided: Config? = nil,
localization localizationProvided: Localization? = nil,
// providable
server: ServerProtocol.Type? = nil,
sessions: Sessions? = nil,
hash: Hash? = nil,
console: ConsoleProtocol? = nil,
log: Log? = nil,
client: ClientProtocol.Type? = nil,
database: Database? = nil,
// database preparations
preparations: [Preparation.Type] = [],
// providers
providers providerTypes: [Provider.Type] = [],
initializedProviders: [Provider] = []
)
環(huán)境
定義
Environment 是一個(gè)枚舉類(lèi)型,具體定義如下
/**
Represents the current environment the
droplet is running in. This information
can be used to conditionally show debug or testing information.
*/
public enum Environment: Equatable {
case production
case test
case development
case custom(String)
init(id string: String) {
switch string.lowercased() {
case "production", "prod":
self = .production
case "test":
self = .test
case "development", "dev":
self = .development
default:
self = .custom(string)
}
}
}
分為 production 、 test 、development 和 custom 環(huán)境類(lèi)型。
使用
let env = drop.config.environment
if .production == env {
print("environment = production")
} else if .test == env {
print("environment = test")
} else if .development == env {
print("environment = development")
} else {
print("environment = \(env)")
}
可通過(guò)執(zhí)行如下命令來(lái)指定當(dāng)前環(huán)境類(lèi)型
- production
vapor run serve --env=production
或
vapor run serve --env=prod
輸出
environment = production
- test
vapor run serve --env=test
輸出
environment = test
- development
vapor run serve --env=development
或
vapor run serve --env=dev
輸出
environment = development
- ** custom**
vapor run serve --env=myenv
輸出
environment = myenv
其中, myenv 也可以是其它任意字符串。
注意:
- 如果未明確指定環(huán)境的話(huà),默認(rèn)將以
development環(huán)境執(zhí)行。 -
production環(huán)境下可以過(guò)濾 Debug 日志以提高性能,建議最終部署的時(shí)候選擇production環(huán)境。
工作目錄
可通過(guò) drop.workDir 獲取當(dāng)前工作目錄。
print("workDir = \(drop.workDir)")
輸出
workDir = /Users/Cary/Documents/Swift/Vapor/Project/vapor_test/
注意: 輸出的路徑由執(zhí)行時(shí)所在路徑?jīng)Q定。
Go to Vapor系列教程 - 目錄