Pug
7021 ワード
設定
$ npm install pug
インストールが完了すると、src/viewsというフォルダが作成されます.ファイルは.拡張子pugを付ける
設定とフォルダの指定
app.set(「views」>「置換するフォルダ名」);
process.cwd():現在の作業ディレクトリ(現在符号化されているディレクトリ)
app.set('view engine', 'pug');
app.set('views', process.cwd() + '/src/views');
const home = (req,res) => res.render('Home');
doctype html
html(lang="ko")
head
title Web Play
body
h1 Welcome Web Play
footer © #{new Date().getFullYear()} Web Play
#{newDate().getFullYear():pugでJavaScript#{...}を有効にするInclude=含む:https://pugjs.org/language/includes.html
<footer>© #{new Date().getFullYear()} Web Play</footer>
©:予期せぬテキスト「©」エラー、前述の通りPUGはHTMLコードで記述できます
doctype html
html(lang="ko")
head
title Web Play
body
h1 Welcome Web Play
include partials/footer.pug
Exterspent=継承1. base.pugを作る.
doctype html
html(lang="ko")
head
title Web Play
body
h1 Welcome Web Play
include partials/footer.pug
extends base.pug
Block=継承するファイルのこの部分のみを置換1. base.pugから「block contents」を追加
doctype html
html(lang="ko")
head
title Web Play
body
block content
include partials/footer.pug
extends base.pug
block content
h1 Home
伝達変数(variable)値(value)
doctype html
html(lang="ko")
head
title #{pageTitle} | Web Play
Pugでは両者が同じtitle=pageTitle
title #{pageTitle}
const home = (req, res) => {
res.render(`home`, {pageTitle : 'Home'});
};
履歴書1. Controller.js:fakeUserオブジェクト作成とテスト
const fakeUser = {
username: 'nature',
loggedIn: false,
};
const home = (req, res) => {
res.render(`home`, { pageTitle: 'Home', fakeUser });
};
if fakeUser.loggedIn
doctype html
html(lang="ko")
head
link(href="https://cdn.skypack.dev/sanitize.css" rel="stylesheet")
title #{pageTitle} | Web Play
body
header
if fakeUser.loggedIn
small Hello #{fakeUser.username}
nav
ul
if fakeUser.loggedIn
li
a(href="/logout") Log out
else
li
a(href="/login") Login
1)loggedIn:falseの場合
Literation array
https://runebook.dev/ko/docs/pug/language/iteration
export const home = (req, res) => {
const customers = [1,2,3,4,5]
res.render(`home`, { pageTitle: 'Home', customers });
};
extends base.pug
block content
h1 Home
ul
each customer in customers
li #{customer}
export const home = (req, res) => {
const customers = [{ name: 'aaa' }, { name: 'bbb' }, { name: 'ccc' }];
res.render(`home`, { pageTitle: 'Home', customers });
};
extends base.pug
block content
h1 Home
ul
each customer in customers
li #{customer.name}
export const home = (req, res) => {
const customers = [
{
name: 'aaa',
age: 12,
sex: 'man',
},
{
name: 'bbb',
age: 12,
sex: 'man',
},
];
res.render(`home`, { pageTitle: 'Home', customers });
};
extends base.pug
block content
h1 Home
ul
each customer in customers
div
h2 #{customer.name}
ul
li #{customer.age}
li #{customer.sex}
1.上記「Literation object(配列内の複数のオブジェクトの場合重複)」と同じ
2.mixinファイルの作成
mixins/customerInfo.pug
extends base.pug
mixin customerMixin(info)
div
h2 #{info.name}
ul
li #{info.age}
li #{info.sex}
extends base.pug
include mixins/customerInfo.pug
block content
h1 Home
ul
each customer in customers
+customerMixin(customer)
書類を整理する1. home.pug
1-1. base.pug:継承するファイル
1-2. customerInfo.pug(mixinファイル):再利用可能なブロックファイル
1-1-1. footer.pug:含めるファイル
Reference
この問題について(Pug), 我々は、より多くの情報をここで見つけました https://velog.io/@esnature/Pugテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol