Vapor에서 Leaf를 사용하여 예제 애플리케이션 구현
Leaf is a powerful templating language with Swift-inspired syntax. You can use it to generate dynamic HTML pages for a front-end website or generate rich emails to send from an API.
Leaf Overview
웹 모드에서 항목을 작성한 후 즉시 Leaf를 사용할 수 있습니다.
Vapor의 환경 구축과 프로젝트 제작은 여기서 ↓
Swift 웹 프레임워크 Vapor 소개 2019
프로젝트 완료 후 먼저 확인
routes.swift
.routes.swift
// "It works" page
router.get { req in
return try req.view().render("welcome")
}
// Says hello
router.get("hello", String.parameter) { req -> Future<View> in
return try req.view().render("hello", [
"name": req.parameters.next(String.self)
])
}
두 개의 라우팅이 설정되어 있습니다.하나는 첫 페이지입니다.
/
it works 방문!의 양곡 탄젠트 값입니다.또 하나는
/hello/{String}
./hello
뒤에 이 경로와 일치하는 문자열 매개 변수를 입력하십시오.구체적으로 말하면
http://localhost:8080/hello/Kabigon
이 주소를 방문하면 Hello, Kabigon!
표시됩니다.다음으로 봅시다
base.leaf
.welcome.leaf
에서 읽기base.leaf
, 제목과 바디를 삽입합니다.base.leaf
hello.leaf
에서도 사용되는 기본 파일은 거의 HTML입니다.아주 간단하네.
base.leaf
<!DOCTYPE html>
<html>
<head>
<title>#get(title)</title>
<link rel="stylesheet" href="/styles/app.css">
</head>
<body>
#get(body)
</body>
</html>
welcome.leaf#set("title") { It works }
#set("body") {
<div class="welcome">
<img src="/images/it-works.png">
</div>
}
#embed("base")
이번에 Vapor로 제작2ch 요약한 기술 블로그판 같은 사이트.나는 먼저 기술 블로그의 제목을 표시하고 싶다.쿠크파드 씨와 반방법 씨의 기술 블로그를 특히 좋아하기 때문에 우선 그 두 사이트의 블로그 이름을 표시해 보세요.
2chmm.leaf
의 파일입니다.블로그 문자열을 포함하는 그룹을 받아들이고 블로그의 요소수에 따라 목록을 표시합니다.2chmm.leaf
#set("title") { 技術ブログまとめ }
#set("body") {
<ul>
#for(blog in blogs) {
<li>#(blog)</li>
}
</ul>
}
#embed("base")
routes.swift
에서 문자열을 포함하는 블로그 수조를 2chmm.leaf
에 전달합니다.이렇게 하면 블로그 이름을 나란히 표시할 수 있다.
routes.swift
import Vapor
public func routes(_ router: Router) throws {
// 2chmm page
router.get { req -> Future<View> in
return try req.view().render("2chmm", [
"blogs": ["クックパッド開発者ブログ", "クラスメソッド発「やってみた」系技術メディア | Developers.IO"]
])
}
}
하지만 문자열만으로는 사용하기 어려워서 제가 정의한 Struct를 leaf에게 맡기고 싶습니다.먼저
Blog
라는 구조를 만듭니다.leaf에 전달되는 Struct는 Encodable 프로토콜을 준수해야 합니다.Blog.swift
struct Blog: Encodable {
let name: String
let url: String
}
routes.swiftimport Vapor
public func routes(_ router: Router) throws {
// 2chmm page
router.get { req -> Future<View> in
return try req.view().render("2chmm", [
"blogs": [
Blog(name: "クックパッド開発者ブログ", url: "https://techlife.cookpad.com/"),
Blog(name: "クラスメソッド発「やってみた」系技術メディア | Developers.IO", url: "https://dev.classmethod.jp/")
]
])
}
}
2chmm.leaf#set("title") { 技術ブログまとめ }
#set("body") {
<ul>
#for(blog in blogs) {
<li>
<a href="#(blog.url)">#(blog.name)</a>
</li>
}
</ul>
}
#embed("base")
다음 HTML을 내보냅니다.<!DOCTYPE html>
<html>
<head>
<title> 技術ブログまとめ </title>
<link rel="stylesheet" href="/styles/app.css">
</head>
<body>
<ul>
<li>
<a href="https://techlife.cookpad.com/">クックパッド開発者ブログ</a>
</li>
<li>
<a href="https://dev.classmethod.jp/">クラスメソッド発「やってみた」系技術メディア | Developers.IO</a>
</li>
</ul>
</body>
</html>
Reference
이 문제에 관하여(Vapor에서 Leaf를 사용하여 예제 애플리케이션 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takoikatakotako/items/abf76613e9ee73241e8f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)