mirror of https://github.com/vapor/docs.git
update cn getting-started translation (#730)
This commit is contained in:
parent
bf31073021
commit
d8df5f5798
|
|
@ -1,8 +1,6 @@
|
|||
# 项目结构
|
||||
|
||||
现在,你已经创建并运行了第一个 Vapor 应用程序,让我们稍微花点时间熟悉一下 Vapor 的项目结构。
|
||||
|
||||
该结构是在 [SPM](spm.md) 的基础上演化而来;因此,如果你曾经使用过 SPM,应该会很熟悉。
|
||||
现在,你已经创建并运行了第一个 Vapor 应用程序,让我们稍微花点时间熟悉一下 Vapor 的项目结构。该结构是在 [SPM](spm.zh.md) 的基础上演化而来;因此,如果你曾经使用过 SPM,应该会很熟悉。
|
||||
|
||||
|
||||
```
|
||||
|
|
@ -27,9 +25,7 @@
|
|||
|
||||
## Public
|
||||
|
||||
如果你使用了 `FileMiddleware` 中间件,那么此文件夹包含你的应用程序提供的所有公共文件,通常是图片、`.css`样式和浏览器脚本等。
|
||||
|
||||
例如,对 `localhost:8080/favicon.ico` 发起的请求将检查是否存在 `Public/favicon.ico` 图片并回应。
|
||||
如果你使用了 `FileMiddleware` 中间件,那么此文件夹包含你的应用程序提供的所有公共文件,通常是图片、`.css` 样式和浏览器脚本等。 例如,对 `localhost:8080/favicon.ico` 发起的请求将检查是否存在 `Public/favicon.ico` 图片并回应。
|
||||
|
||||
在 Vapor 可以提供公共文件之前,你需要在 `configure.swift` 文件中启用`FileMiddleware`,参考如下所示:
|
||||
|
||||
|
|
@ -43,7 +39,7 @@ app.middleware.use(fileMiddleware)
|
|||
|
||||
## Sources
|
||||
|
||||
该文件夹包含项目的所有 Swift 代码源文件。文件夹 `App`和 `Run`反应软件包的模块,例如这篇 [SPM](spm.md) 文章中所述。
|
||||
该文件夹包含项目的所有 Swift 代码源文件。文件夹 `App` 和 `Run` 反应软件包的模块,例如这篇 [SPM](spm.zh.md) 文章中所述。
|
||||
|
||||
### App
|
||||
|
||||
|
|
@ -73,12 +69,13 @@ models 文件夹常用于存放 `Content` 和 Fluent `Model` 的类或结构体
|
|||
|
||||
这是主要的可执行目标,只包含启动和运行应用程序所需的代码。
|
||||
|
||||
#### main.swift
|
||||
|
||||
这个文件创建并运行一个配置好的 `Application` 实例。
|
||||
|
||||
## Tests
|
||||
|
||||
`Sources` 文件夹中的每个不可运行的模块在 `Tests` 中都可以创建一个对应的文件夹,包含 `XCTest` 模块上构建的用例,用来测试你的代码。
|
||||
|
||||
可以在命令行使用 `swift test`或在 Xcode 中按 `⌘+U` 来进行测试。
|
||||
|
||||
`Sources` 文件夹中的每个不可运行的模块在 `Tests` 中都可以创建一个对应的文件夹,包含 `XCTest` 模块上构建的用例,用来测试你的代码。可以在命令行使用 `swift test`或在 Xcode 中按 `⌘+U` 来进行测试。
|
||||
|
||||
### AppTests
|
||||
|
||||
|
|
@ -86,5 +83,6 @@ models 文件夹常用于存放 `Content` 和 Fluent `Model` 的类或结构体
|
|||
|
||||
## Package.swift
|
||||
|
||||
最后,是这个项目运行所依赖的第三方库配置。
|
||||
最后是 [SPM](spm.zh.md) 文件,是这个项目运行所依赖的第三方库配置。
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,14 +5,12 @@
|
|||
|
||||
如果尚未安装 Swift 和 Vapor Toolbox,请查看安装部分。
|
||||
|
||||
- [安装 → macOS](../install/macos.md)
|
||||
- [安装 → Linux](../install/linux.md)
|
||||
- [安装 → macOS](../install/macos.md)
|
||||
- [安装 → Linux](../install/linux.md)
|
||||
|
||||
## 创建
|
||||
|
||||
首先,在电脑上创建 Vapor 项目。
|
||||
|
||||
打开终端并使用以下 Toolbox 的命令行,这将会在当前目录创建一个包含 Vapor 项目的文件夹。
|
||||
首先,在电脑上创建 Vapor 项目。打开终端并使用以下 Toolbox 的命令行,这将会在当前目录创建一个包含 Vapor 项目的文件夹。
|
||||
|
||||
```sh
|
||||
vapor new hello -n
|
||||
|
|
@ -21,6 +19,8 @@ vapor new hello -n
|
|||
!!! tip "建议"
|
||||
使用 `-n` 为所有的问题自动选择 no 来为您提供一个基本的模板。
|
||||
|
||||
!!! tip "建议"
|
||||
Vapor 以及自带的模板默认使用 `async`/`await`。如果你的系统不能更新到 macOS 12 或者想继续使用 `EventLoopFuture`。运行命令时可以添加此标志 `--branch macos10-15`。
|
||||
|
||||
命令完成后,切换到新创建的文件夹
|
||||
|
||||
|
|
@ -39,11 +39,11 @@ open Package.swift
|
|||
```
|
||||
|
||||
|
||||
Xcode 将自动开始下载Swift包管理器依赖,在第一次打开一个项目时,这可能需要一些时间,当依赖下载后,Xcode将显示可以用的 Scheme。
|
||||
Xcode 将自动开始下载 Swift 包管理器依赖,在第一次打开一个项目时,这可能需要一些时间,当依赖下载后,Xcode 将显示可以用的 Scheme。
|
||||
|
||||
在窗口的顶部,在Play和Stop按钮的右侧,单击项目名称以选择项目的Scheme,并选择一个适当的target——大概率是“My Mac”。单击play按钮编译并运行项目。
|
||||
在窗口的顶部,在 Play 和 Stop 按钮的右侧,单击项目名称以选择项目的 Scheme,并选择一个适当的 target ——大概率是 “My Mac”。单击 play 按钮编译并运行项目。
|
||||
|
||||
你应该会在Xcode窗口的底部看到控制台弹出。
|
||||
你应该会在 Xcode 窗口的底部看到控制台输出以下信息。
|
||||
|
||||
```sh
|
||||
[ INFO ] Server starting on http://127.0.0.1:8080
|
||||
|
|
@ -51,7 +51,7 @@ Xcode 将自动开始下载Swift包管理器依赖,在第一次打开一个项
|
|||
|
||||
### Linux
|
||||
|
||||
在 Linux 和其他操作系统上(甚至在 macOS 上如果你不想使用 Xcode ),你可以在你喜欢的编辑器中编辑项目,比如 Vim 或 VSCode 。关于设置其他ide的最新细节,请参阅 [Swift Server Guides](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md)。
|
||||
在 Linux 和其他操作系统上(甚至在 macOS 上如果你不想使用 Xcode),你可以在你喜欢的编辑器中编辑项目,比如 Vim 或 VSCode 。关于设置其他 IDE 的最新细节,请参阅 [Swift Server Guides](https://github.com/swift-server/guides/blob/main/docs/setup-and-ide-alternatives.md)。
|
||||
|
||||
在终端运行以下命令来编译和运行你的项目。
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ swift run
|
|||
[ INFO ] Server starting on http://127.0.0.1:8080
|
||||
```
|
||||
|
||||
## Visit Localhost
|
||||
## 访问 Localhost
|
||||
|
||||
打开你的浏览器,然后访问 <a href="http://localhost:8080/hello" target="_blank">localhost:8080/hello</a> 或者 <a href="http://127.0.0.1:8080" target="_blank">http://127.0.0.1:8080</a>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# Swift Package Manager
|
||||
|
||||
[Swift Package Manager](https://swift.org/package-manager/)(SPM)用于构建项目的源代码和依赖项。由于 Vapor 严重依赖 SPM,因此最好了解其工作原理。
|
||||
[Swift Package Manager](https://swift.org/package-manager/)(SPM) 用于构建项目的源代码和依赖项。由于 Vapor 严重依赖 SPM,因此最好了解其工作原理。
|
||||
|
||||
SPM 与 Cocoapods,Ruby gems 和 NPM 相似。您可以在命令行中将 SPM 与 `swift build`、`swift test` 等命令或兼容的 IDE 结合使用。但是,与其他软件包管理器不同,SPM 软件包没有中央软件包索引。SPM 使用 [Git 标签](https://git-scm.com/book/en/v2/Git-Basics-Tagging) 和 URL 来获取 Git 存储库和依赖版本。
|
||||
SPM 与 Cocoapods,Ruby gems 和 NPM 相似。你可以在命令行中将 SPM 与 `swift build`、`swift test` 等命令或兼容的 IDE 结合使用。但是,与其他软件包管理器不同,SPM 软件包没有中央软件包索引。SPM 使用 [Git 标签](https://git-scm.com/book/en/v2/Git-Basics-Tagging) 和 URL 来获取 Git 存储库和依赖版本。
|
||||
|
||||
## Package Manifest
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ let package = Package(
|
|||
|
||||
### Tools Version
|
||||
|
||||
第一行表示需要使用的 Swift tools 版本号,它指明了 Swift 的最低可用版本。Package 描述 API 可能随着 Swift 版本而改变,所以这一行将让 Swift 确认怎么取解析你的配置文件。
|
||||
第一行表示需要使用的 Swift tools 版本号,它指明了 Swift 的最低可用版本。Package 描述 API 可能随着 Swift 版本而改变,所以这一行将让 Swift 确认怎么去解析你的配置文件。
|
||||
|
||||
### Package Name
|
||||
|
||||
|
|
@ -47,15 +47,15 @@ let package = Package(
|
|||
|
||||
### Platforms
|
||||
|
||||
`platforms` 数组指定此程序包支持的平台和版本。通过指定 `.macOS(.v10_14)`,说明此软件包需要 macOS Mojave 或更高版本。 Xcode 加载该项目时,它将最低部署版本设置为 10.14,以便您可以使用所有可用的 API。
|
||||
`platforms` 数组指定此程序包支持的平台和版本。通过指定 `.macOS(.v10_14)`,说明此软件包需要 macOS Mojave 或更高版本。 Xcode 加载该项目时,它将最低部署版本设置为 10.14,以便你可以使用所有可用的 API。
|
||||
|
||||
### Products
|
||||
|
||||
products 字段代表 package 构建的时候要生成的 targets。示例中,有两个 target,一个是 `library`,另一个是 `executable`。
|
||||
products 字段代表 package 构建的时候要生成的 targets。示例中,有两个 target,一个是库,另一个是可执行文件。
|
||||
|
||||
### Dependencies
|
||||
|
||||
dependencies 字段代表项目需要依赖的 package。所有 Vapor 应用都依赖 Vapor package ,但是你也可以添加其它想要的 dependency。
|
||||
dependencies 字段代表项目需要依赖的 package。所有 Vapor 应用都依赖 Vapor package ,但是你也可以添加其它想要的依赖库。
|
||||
|
||||
如上面这个示例,[vapor/vapor](https://github.com/vapor/vapor) 4.0 或以上版本是这个 package 的 dependency。当在 package 中添加了 dependency 后,接下来你必须设置是哪个 targets 依赖了新的可用模块。
|
||||
|
||||
|
|
@ -64,9 +64,9 @@ dependencies 字段代表项目需要依赖的 package。所有 Vapor 应用都
|
|||
Targets 是你的 package 里包含 modules、executables 以及 tests 总和。虽然可以添加任意多的 targets 来组织代码,但大部分 Vapor 应用有 3 个 target 就足够了。每个 target 声明了它依赖的 module。为了在代码中可以 import 这些 modules ,你必须在这里添加 module 名字。一个 target 可以依赖于工程中其它的 target 或者任意你添加在 [dependencies](#dependencies) 数组中且暴露出来的 modules。
|
||||
|
||||
!!! tip "建议"
|
||||
可运行 targets (包含 `main.swift` 文件的 target) 不能被其它 modules 导入。这就是为什么 Vapor 会有 `App` 和 `Run` 两种 target。任何包含在 App 中的代码都可以在 `AppTests` 中被测试验证。
|
||||
可运行 targets(包含 `main.swift` 文件的 target)不能被其它 modules 导入。这就是为什么 Vapor 会有 `App` 和 `Run` 两种 target。任何包含在 App 中的代码都可以在 `AppTests` 中被测试验证。
|
||||
|
||||
## Folder Structure
|
||||
## 目录结构
|
||||
|
||||
以下是典型的 SPM package 目录结构。
|
||||
|
||||
|
|
@ -87,7 +87,7 @@ Targets 是你的 package 里包含 modules、executables 以及 tests 总和。
|
|||
|
||||
## Package.resolved
|
||||
|
||||
第一次构建成功后,SPM 将会自动创建一个 `Package.resolved` 文件。`Package.resolved` 保存了当前项目所有用到的 `dependency` 版本。下一次当你构建你的项目时将会同样的版本,甚至是这些依赖有更新的版本也不会也使用更新的版本。
|
||||
第一次构建成功后,SPM 将会自动创建一个 `Package.resolved` 文件。`Package.resolved` 保存了当前项目所有用到的依赖库版本。下一次当你构建你的项目时将会同样的版本,甚至是这些依赖有更新的版本时也不会使用。
|
||||
|
||||
更新依赖, 运行 `swift package update`.
|
||||
|
||||
|
|
@ -97,4 +97,4 @@ Targets 是你的 package 里包含 modules、executables 以及 tests 总和。
|
|||
|
||||
如果要更新到最新的依赖项,请使用 File → Swift Packages → 更新到最新的 Swift Package 版本。
|
||||
|
||||
您可能还想将 `.swiftpm` 文件添加到您的 `.gitignore` 文件中(Xcode 在此处存储 Xcode 项目配置)。
|
||||
你可能还想将 `.swiftpm` 文件添加到你的 `.gitignore` 文件中(Xcode 在此处存储 Xcode 项目配置)。
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
# Xcode
|
||||
|
||||
这页将显示一下使用Xcode的提示和技巧。如果你使用不同的开发环境,你可以跳过此页。
|
||||
这篇将介绍一些使用 Xcode 的提示和技巧。如果你使用不同的开发环境,你可以跳过此篇。
|
||||
|
||||
## 自定义工作目录(Working directory)
|
||||
|
||||
Xcode 将默认在 _DerivedData_ 目录运行项目。这与项目的根目录(你的 _Package.swift_ 文件所在的目录)不在同一个目录,这意味着 Vapor 将找不到像 _.env_ 或者 _Public_ 等一些文件和目录。
|
||||
Xcode 将默认在 _DerivedData_ 目录运行项目。这与项目的根目录(你的 _Package.swift_ 文件所在的目录)不在同一个目录,这意味着 Vapor 将找不到像 _.env_ 或者 _Public_ 等一些文件和目录。
|
||||
|
||||
如果在运行应用程序时看到以下警告,您就可以知道这正在发生。
|
||||
如果在运行应用程序时看到以下警告,你就可以知道这正在发生。
|
||||
|
||||
```fish
|
||||
[ WARNING ] No custom working directory set for this scheme, using /path/to/DerivedData/project-abcdef/Build/
|
||||
```
|
||||
|
||||
要解决这个问题,你可以在 Xcode schem 中为你的项目设置一个自定义的工作目录。
|
||||
要解决这个问题,你可以在 Xcode scheme 中为你的项目设置一个自定义的工作目录。
|
||||
|
||||
首先,编辑项目的 scheme。
|
||||
|
||||
|
|
@ -22,16 +22,16 @@ Xcode 将默认在 _DerivedData_ 目录运行项目。这与项目的根目录(
|
|||
|
||||

|
||||
|
||||
在 scheme 编辑器中,选择 _Run_ action 以及 _Options_ tab页。选中 _Use custom working directory_ 然后输入你项目根目录。
|
||||
在 scheme 编辑器中,选择 _Run_ action 以及 _Options_ tab 页。选中 _Use custom working directory_ 然后输入你项目根目录。
|
||||
|
||||

|
||||
|
||||
你可以在终端中运行 `pwd` 来获取你项目根目录的绝对目录
|
||||
你可以在终端中运行 `pwd` 来获取你项目根目录的绝对目录。
|
||||
|
||||
```fish
|
||||
# 确认我们在 vapor 项目目录
|
||||
vapor --version
|
||||
# get path to this folder
|
||||
# 获取当前目录的路径
|
||||
pwd
|
||||
```
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue