项目结构
上一节我们通过使用vapor new
命令,以通用api模板创建了一个项目HelloVapor
,下面看一下模板项目的目录结构,了解应用的功能模块是如何划分的。
Bash
$ 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应用项目。配置好的Vapor项目之后可以通过调用swift
工具链进行编译链接,生成可执行程序或者三方库。
一个SPM项目定义在Package.swift框架文件中,这个文件中声明了目标(Target)、依赖(Dependencies)以及怎样把它们链接在一起。项目的布局也和传统的Xcode项目有所不同。
Source
目录用来存放源文件,Package.swift
中定义的每一个Target
都对应Source
目录下的一个子模块目录。模板项目中声明了两个子模块: App
和Run
。
App
模块下存放应用代码逻辑Run
模块下仅有一个main.swift
文件,这是swift项目运行时的启动入口。我们在开发过程中不会修改Run
模块。
Tests
中存放所有的测试子模块,Package.swift
中定义的每一个testTarget
对应一个测试子模块,一个测试子模块针对Sources
中的一个应用子模块进行测试。
Package.resolved
文件是对Package.swift
中描述的依赖关系解析后的结果,用来保存依赖模块的具体信息。
Dockerfile
和docker-compose.yml
文件是服务运行于Docker容器所需要的构建配置文件,目前可不必关心。
生成可以在Xcode中进行开发的vapor工程
之前运行Vapor是在命令行下进行的,如果我们是在MacOS系统下,也可以使用Vapor生成Xcode工程项目,直接使用Xcode进行Vapor应用开发