添加Leaf中间件
- Package.swift添加资源路径
.Package(url: "https://github.com/vapor/leaf-provider.git", majorVersion: 1)
- 在droplet.json文件声明
"view" : "leaf"
- 在
Config+Setup.swift
文件中添加到Droplet
中
/// Configure providers
private func setupProviders() throws {
try addProvider(FluentProvider.Provider.self)
try addProvider(MySQLProvider.Provider.self)
try addProvider(LeafProvider.Provider.self)
}
- 创建
Resources
文件,文件夹下创建views
文件夹保存模板文件
Leaf的语法
- leaf的标签有四种元素构成
-
#
leaf模板标签的标识 -
name
字符串类型标签名 -
()
参数列表,可接受0个或多个参数 -
{}
标签功能执行体,可选,但是与必须参数列表用一个空格隔开
-
- 实例
#()
#(variable)
#import("template")
#export("link") { <a href="#()"></a> }
#index(friends, "0")
#loop(friends, "friend") { <li>#(friend.name)</li> }
#raw() { <a href="#raw">Anything goes!@#$%^&*</a> }
#import("footer")
<body>
<h1>Welcome #(name)</h1>
<h2>#(description)</h2>
#loop(users,"userName"){
<li>#(userName)</li>
}
</body>
#import("head")
- 模板的渲染
static func indexUser(_request: Request) throws -> ResponseRepresentable {
let user = try User.makeQuery().all() // 表的字段或对应的值最好不要包含`.` DotKey
for us in user {
print(us.name)
}
let userName = user.map{$0.name}
return try droplet.view.make("index", ["name" : "SunnyHC","description" : "Leaf","users" : userName])
}
查看更多Leaf资料