一款令人惊艳的Web开发模板语言,用于 Swift Squirrel Web框架(参见:Swift Squirrel)
在您的 Package.swift 文件中添加 NutView 作为依赖项
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "Your app",
products: [
// Your products
],
dependencies: [
.package(url: "https://github.com/Swift-Squirrel/NutView.git", from: "1.0.2"),
// Other dependencies
],
targets: [
.target(
name: "Your Target",
dependencies: [..., "NutView"]),
]
)
并在源代码中添加 import 语句
import NutView
NutView 在 .nut.html 文件中使用特殊的类似 Swift 的语法,这为 Swift 开发者提供了极佳的可读性。
NutView 使用两个重要的目录。
您可以使用以下方法更改这些目录:
NutConfig.nuts = "SomeDir/SomeAnotherDir1/NutsDir"
NutConfig.fruits = "SomeDir/SomeAnotherDir2/FruitDir"
包含页面特定内容。例如,如果我们有一个博客,并且我们想要有一个包含特定帖子的页面,那么我们的视图将只包含帖子信息,而不包含布局、头部、尾部等...
包含页面的可重用部分。例如,头部或尾部。
这实际上是我们的 Web 布局。您可以从 Views 引用布局,这会将 View 内容固定到 Layout 中 \View()
所在的位置。
命令以 \ 符号开头。您可以使用 \\ 转义 \ 符号
名称 | 语法 | 语义 |
---|---|---|
表达式 | \(<expression>) |
评估括号中的表达式并转义 HTML 字符 |
原始表达式 | \RawValue(<expression>) |
评估表达式 |
块结束 | \} |
指示 if、for 语句中的块结束 |
If Else if Else |
\if <expression> { \} else if <expression> { \} else { |
如果表达式为 true ,则运行给定块中的命令,否则运行 else if 或 else 块(如果存在) |
If let Else if let |
\if let <variableName> = <expression> { \} else if let <variableName> = <expression> { |
如果表达式不是 nil ,则将结果存储在 variableName 中,并运行给定块中的命令,否则运行 else if 或 else 块(如果存在) |
Subview | \Subview(<expression>) |
在此命令的位置添加给定子视图的内容。注意:name 使用点表示法,因此不要写 MySubviewSubdirectory/Mysubview.nut.html ,而是写 MySubviewSubdirectory.Mysubview 。 |
For | \for <variable> in <Array> \for (<key>, <value>) in <Dictionary> |
迭代数组 ([Any] ) 或字典 ([String: Any] ) |
Date | \Date(<expression>) \Date(<expression>, fromat: <expression> ) |
评估表达式并以给定格式打印日期。如果未设置 format ,NutView 将使用在 NutConfig.dateDefaultFormat: String { set get } 中指定的默认日期格式 |
Layout | \Layout(<expression>) |
将 View 引用到 Layout。 name 使用点表示法,因此不要写 MyLayoutSubdirectory/MyLayout.nut.html ,而是写 MyLayoutSubdirectory.MyLayout 。 |
Title | \Title(<expression>) |
设置 HTML 文档的 <title><\title> 头部 |
Head | \Head(<expression>) |
将表达式结果添加到 HTML head 标签中 |
Body | \Body(<expression>) |
将表达式结果添加到 HTML body 标签的末尾 |
View | \View() |
指示放置 View 的位置 |
注意: 对于评估表达式,我们使用 Evaluation
有些变量是隐式的,因此您不必将其作为数据发送。
view
- 此变量包含 View 名称Sources/main.swift
import NutView
let indexView = View(name: "Index") // We don't have to write .nut.html
let indexContent = try indexView.getContent()
print(indexContent) // prints generated content of index
struct PostData {
let title: String,
let body: String,
let isNew: Bool
}
let postData = PostData(title: "Squirrels", body: "Squirrels are best!", isNew: false)
let postView = try View(name: "Posts.Post", with: postData) // note we write . instead of /
let postContent = try postView.getContent()
print(postContent) // prints generated content of page with given data
let postContentData = try postView.present() // Data representation of view
有关更多示例,请查看 Examples 或 Squirrel docs -> Views
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
另请参阅 CONTRIBUTORS 以获取参与此项目的贡献者列表。
本项目根据 Apache License Version 2.0 许可证授权 - 有关详细信息,请参见 LICENSE 文件