项目结构

上一节我们通过使用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目录下的一个子模块目录。模板项目中声明了两个子模块: AppRun

  • App模块下存放应用代码逻辑
  • Run模块下仅有一个main.swift文件,这是swift项目运行时的启动入口。我们在开发过程中不会修改Run模块。

Tests中存放所有的测试子模块,Package.swift中定义的每一个testTarget对应一个测试子模块,一个测试子模块针对Sources中的一个应用子模块进行测试。

Package.resolved文件是对Package.swift中描述的依赖关系解析后的结果,用来保存依赖模块的具体信息。

Dockerfiledocker-compose.yml文件是服务运行于Docker容器所需要的构建配置文件,目前可不必关心。

生成可以在Xcode中进行开发的vapor工程

之前运行Vapor是在命令行下进行的,如果我们是在MacOS系统下,也可以使用Vapor生成Xcode工程项目,直接使用Xcode进行Vapor应用开发

Bash
$ cd HelloVapor
$ vapor xcode
Opening project in Xcode.
vapor xcode

评论