vapor-docs/docs/leaf/getting-started.zh.md

95 lines
3.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Leaf
Leaf 是一种强大的模板语言,其语法受 Swift 启发。你可以使用它为前端网站生成动态 HTML 页面或生成内容丰富的电子邮件并通过 API 发送。
## Package
使用 Leaf 的第一步是将其作为依赖项添加到你项目的 SPM 清单文件中。
```swift
// swift-tools-version:5.2
import PackageDescription
let package = Package(
name: "MyApp",
platforms: [
.macOS(.v10_15)
],
dependencies: [
/// Any other dependencies ...
.package(url: "https://github.com/vapor/leaf.git", from: "4.0.0"),
],
targets: [
.target(name: "App", dependencies: [
.product(name: "Leaf", package: "leaf"),
// Any other dependencies
]),
// Other targets
]
)
```
## 配置
将包添加到项目后,通常在 [`configure.swift`](../getting-started/folder-structure.md#configureswift) 中进行配置,这样 Vapor 就可以使用它了。
```swift
import Leaf
app.views.use(.leaf)
```
当你调用 `req.view` 时,就是在告诉 Vapor 需要使用 `LeafRenderer` 渲染页面。
!!! 注意
Leaf 有一个用于渲染页面的内部缓存。当 `Application` 的运行环境设置为 `.development` 时,此缓存被禁用,因此对模板的更改会立即生效。在 `.production` 环境和所有的其它环境中,默认启用缓存;应用重启之前,对模板所做的任何更改都不会生效。
!!! 警告
从 Xcode 运行项目时为了 Leaf 能够找到模板,你必须为你的 Xcode 工作区设置[自定义工作目录](../getting-started/xcode.md#working-directory)。
## 目录结构
一旦你配置了 Leaf你需要确保有一个 `Views` 文件夹来存储 `.leaf` 文件。默认情况下Leaf 期望文件夹位于相对于项目根目录的 `./Resources/Views` 中。
例如,如果你计划提供 Javascript 和 CSS 文件,你可能还希望启用 Vapor 的 [`FileMiddleware`](https://api.vapor.codes/vapor/main/Vapor/FileMiddleware/) 服务来提供 `/Public` 文件夹中的文件。
```
VaporApp
├── Package.swift
├── Resources
│   ├── Views
│   │   └── hello.leaf
├── Public
│   ├── images (images resources)
│   ├── styles (css resources)
└── Sources
   └── ...
```
## 渲染视图
现在已经配置了 Leaf让我们渲染你的第一个模板。在 `Resources/Views` 文件夹中,创建一个新文件,命名为 `hello.leaf`,其内容如下:
```leaf
Hello, #(name)!
```
然后,注册一个路由(通常在 `routes.swift` 中或一个控制器中完成注册)来渲染视图。
```swift
app.get("hello") { req -> EventLoopFuture<View> in
return req.view.render("hello", ["name": "Leaf"])
}
// or
app.get("hello") { req async throws -> View in
return try await req.view.render("hello", ["name": "Leaf"])
}
```
使用 `Request` 上的通用 `view` 属性,而不是直接调用 Leaf。这允许你在测试中切换到不同的渲染器。
打开浏览器并访问 `/hello` 路径。你应该看到 `Hello, Leaf!`。恭喜你成功渲染了你的第一个 Leaf 视图!