Vapor 3 + Leaf 3でHTML表示
VaporでHTMLどうすればいいのかと思って一回やって見た結果はこちらです。
Step 1 - パッケージのセットアップ
Package | Version |
---|---|
Vapor | 3.0.0-rc |
Leaf | 3.0.0-rc |
FluentSQLite | 3.0.0-rc |
Validation | 2.0.0 |
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "project_name",
dependencies: [
// 💧 A server-side Swift web framework.
.package(url: "https://github.com/vapor/vapor.git", from: "3.0.0-rc"),
.package(url: "https://github.com/vapor/leaf.git", from: "3.0.0-rc"),
// 🔵 Swift ORM (queries, models, relations, etc) built on SQLite 3.
.package(url: "https://github.com/vapor/fluent-sqlite.git", from: "3.0.0-rc")
],
targets: [
.target(name: "App", dependencies: ["FluentSQLite", "Vapor", "Leaf"]),
.target(name: "Run", dependencies: ["App"]),
.testTarget(name: "AppTests", dependencies: ["App"])
]
)
Step 2 - LeafRender作成
- configファイルにLeafProvider取得
try services.register(LeafProvider())
- LeafRenderingルート作成
public func routes(_ router: Router) throws {
router.get { req -> Future<View> in
let leaf = try req.make(LeafRenderer.self)
let context = [String: String]()
return leaf.render("home", context)
}
}
try services.register(LeafProvider())
public func routes(_ router: Router) throws {
router.get { req -> Future<View> in
let leaf = try req.make(LeafRenderer.self)
let context = [String: String]()
return leaf.render("home", context)
}
}
いくつかの項目あるんですが説明しましょう。
contextの入れるべき物はLeafRendererに何の情報渡したい。
例えば:
let context = ["name": "monolithic-adam"]
これをRendererに渡して
return leaf.render("home", context)
この二行でhome.leaf
っていうファイルにname
の値渡してレンダリングする
Step 3 - .leafファイル作成
上の例homeに見ているからhome.leaf
作って見ましょう
Resources > Views > _____.leaf
に入れましょう!
問題はXcode側で.leafファイルパースできないので外部エディター使った方が効率的にいいかも
Hi my name is #(name)
これでhome.leaf
作って上記の一行入れて見ましょう。
Leaf
ファイルにcontext
使いたい時#()
で値名入れれば表示される。
コンパイルしてランしたら
Hi my name is monolithic-adam
が出てくるはず
結果・まとめ
HTMLページ表示するのはVapor+Leafで簡単で楽しくServer Side Swiftで色々作れます。
続きで入力ページ次回やって見たいと思います。
Author And Source
この問題について(Vapor 3 + Leaf 3でHTML表示), 我々は、より多くの情報をここで見つけました https://qiita.com/monolithic-adam/items/173d29e14af4f9931455著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .