Vapor 大型教程
工程结构
上一节用 vapor new 以通用 api 模板创建了 HelloVapor 项目。本文看一下模板项目的目录结构,理解功能模块是如何划分的。
目录结构一览
$ pwd
/Users/joker/Desktop/vapor/HelloVapor
$ brew install tree
$ tree .
.
├── Dockerfile
├── Package.resolved
├── Package.swift
├── Public
├── Sources
│ ├── App
│ │ ├── Controllers
│ │ ├── configure.swift
│ │ └── routes.swift
│ └── Run
│ └── main.swift
├── Tests
│ └── AppTests
│ └── AppTests.swift
└── docker-compose.yml
7 directories, 8 files
Vapor 使用 Swift Package Manager(SPM) 作为依赖管理系统,类似 iOS 平台上的 Cocoapods。配置好的 Vapor 项目可以调用 swift 工具链编译链接,生成可执行程序或三方库。
一个 SPM 项目定义在 Package.swift 文件中,里面声明了目标(Target)、依赖(Dependencies),以及它们如何被链接在一起。项目布局也和传统 Xcode 项目有所不同。
Source 与模块
Source 目录存放源文件,Package.swift 中定义的每个 Target 都对应 Source 下的一个子模块目录。模板项目声明了两个子模块:App 和 Run。
App模块:存放应用代码逻辑。Run模块:仅有一个main.swift,是 swift 项目运行时的启动入口。开发过程中我们一般不会动Run模块。
Tests 与测试模块
Tests 存放所有测试子模块,Package.swift 中定义的每个 testTarget 对应一个测试子模块,专门用来测试 Sources 中对应的应用子模块。
其它文件
Package.resolved:对Package.swift中依赖关系解析后的结果,保存依赖模块的具体版本信息。Dockerfile与docker-compose.yml:服务运行于 Docker 容器时所需的构建配置,目前可以先不关心。
生成可在 Xcode 中开发的工程
之前我们一直在命令行下运行 Vapor。如果在 macOS 下,也可以用 Vapor 生成 Xcode 工程,直接用 Xcode 开发:
$ cd HelloVapor
$ vapor xcode
Opening project in Xcode.