Bibi's DevLog ๐ค๐
[ํ ํ๋ฆฟ ์์ง] mustache ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๋ณธ๋ฌธ
mustache ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ ๋ฆฌํ๊ธฐ
๋ณต์กํ์ง ์์ผ๋ฏ๋ก ๊ณต๋ถ ๋ฐ ์ฐ์ตํด ๋ณธ๋ค!
๊ณต์ํ์ด์ง..๋ฅผ ๋ฒ์ญํ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ๊ณต๋ถํ์ต๋๋ค.
1. ๋ณ์
{{
, }}
์ฌ์ด์ ๋ณ์๋ช
์ ์
๋ ฅํ๋ค.
- ๋ฌธ์์ด์ ์๋ HTML ์ด์ค์ผ์ดํ ๋๋ค.
- ์ด์ค์ผ์ดํ Escape๋? ํน์ ๋ฌธ์๋ฅผ HTML๋ก ๋ณํํ๋ ํ์. (์ ๋ก์ด ์ฐธ๊ณ )
- ์ด์ค์ผ์ดํ๋์ง ์์ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ค๋ฉด
{{{
,}}}
์ ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ
{
"name" : "Chris",
"company" : "<b>Github</b>"
}
ํ ํ๋ฆฟ
{{name}}
{{age}}
{{company}}
{{{company}}}
๊ฒฐ๊ณผ
Chris
<b>Github</b>
<b>Github</b>
1-1. ๋ณต์กํ ๊ฐ์ฒด
: ๊ฐ์ฒด ์์ ๊ฐ์ฒด๊ฐ ํฌํจ๋์ด ์์ ๋๋ ์ ๋ฌธ๋ฒ(dot-syntax)์ ์ฌ์ฉํ๋ค.
๋ฐ์ดํฐ
{
"name" : "Chris",
"company" : {
"name" : "Github",
"address" : {
"country" : "USA"
}
}
}
ํ ํ๋ฆฟ
Country : {{company.address.country}}
๊ฒฐ๊ณผ
Country : USA
2. ์น์ (๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ)
์น์
section์ {{#๋ณ์๋ช
}}
์ผ๋ก ์์ํ๊ณ {{/๋ณ์๋ช
}}
์ผ๋ก ๋๋๋ค.
์น์ ์ ์ฃผ์ด์ง ๊ฐ์ ๋ฐ๋ผ ์กฐ๊ฑด๋ฌธ / ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ฌ์ฉ๋๋ค.
- ๋ณ์๊ฐ ๋ฐฐ์ด์ด๋ฉด ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ฌ์ฉ๋จ.
- ๋ณ์๊ฐ ๋ฐฐ์ด์ด ์๋๋ฉด ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ฌ์ฉ๋จ.
0
,false
,๋น ๋ฌธ์์ด
์ ๊ฑฐ์ง์ผ๋ก ํ๋จํ๋ฉฐ ์น์ ๋ด์ฉ์ด ์ถ๋ ฅ๋์ง ์๋๋ค.- ๋ฐฐ์ด์ด๋ผ๋ ๋น ๋ฐฐ์ด์ ๊ฑฐ์ง ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ทจ๊ธํ๋ฉฐ ์น์ ๋ด์ฉ์ด ์ถ๋ ฅ๋์ง ์๋๋ค.
2-1. ์น์ - ์กฐ๊ฑด๋ฌธ
๋ฐ์ดํฐ
{
"person" : false
}
ํ ํ๋ฆฟ
์ถ๋ ฅ๋ฉ๋๋ค.
{{#person}}
์ถ๋ ฅ์๋ฉ๋๋ค.
{{/person}}
๊ฒฐ๊ณผ
์ถ๋ ฅ๋ฉ๋๋ค.
๋ณ์๊ฐ ๊ฐ์ฒด์ผ ๋๋ ์น์ ๋ณ์์ ์์ฑ์ ๋ณ์์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅ.
๋ฐ์ดํฐ
{
"person" : {"name" : "Jon"}
}
ํ ํ๋ฆฟ
{{#person}}
{{name}}
{{/person}}
๊ฒฐ๊ณผ
Jon
์น์ ๋ด์์ ๊ฐ์ ์์ค์ ์๋ ๋ค๋ฅธ ๋ณ์์ ์ ๊ทผํ ๋
๋ฐ์ดํฐ
{
"person" : {"name" : "Jon"},
"company" : {"name" : "Google"}
}
ํ์ฌ ์ด๋ฆ์ผ๋ก Google์ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ด ์ฌ์ฉํด์ผ ํ๋ค.
ํ ํ๋ฆฟ
{{#person}}
{{name}}์ ํ์ฌ๋ {{company.name}}์
๋๋ค.
{{/person}}
๊ฒฐ๊ณผ
Jon์ ํ์ฌ๋ Google์
๋๋ค.
2-2. ์น์ - ๋ฐ๋ณต๋ฌธ
๋ณ์์ ๊ฐ์ด ๋ฐฐ์ด์ด๋ฉด ๋ฐ๋ณต๋ฌธ์ด ๋๋ค.
๋น ๋ฐฐ์ด์ ๊ฑฐ์ง ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ทจ๊ธ๋๋ค.
๋ฐ์ดํฐ
{
"repo" : [
{ "name" : "resque" },
{ "name" : "hub" },
{ "name" : "rip" }
]
}
ํ ํ๋ฆฟ
{{#repo}}
<b>{{name}}</b>
{{/repo}}
๊ฒฐ๊ณผ
<b>resque</b>
<b>hub</b>
<b>rip</b>
2-3. ๋ฐ์ ์น์
{{^๋ณ์๋ช
}}
์ผ๋ก ์์ํ๊ณ {{/๋ณ์๋ช
}}
์ผ๋ก ๋๋๋ค.
๋ฐ์ ์น์ ์ ์น์ ๊ณผ ๋ฐ๋๋๋ ์กฐ๊ฑด์์๋ง ์ถ๋ ฅ๋๋ ๋ธ๋ญ์ด๋ค.
- ์น์ ์ ์ฌ์ฉ๋ ์ ์ด ์๋ ๋ณ์์ผ ๋
- ๋ณ์์ ๊ฐ์ด
false
,0
,๋น ๋ฌธ์์ด
์ผ ๋ - ๋ณ์๊ฐ ๋น ๋ฐฐ์ด์ผ ๋
๋ฐ์ดํฐ
{
"repo": []
}
ํ ํ๋ฆฟ
{{#repo}}
<b>{{name}}</b>
{{/repo}}
{{^repo}}
์ ์ฅ์๊ฐ ์๋ค์. -_-
{{/repo}}
๊ฒฐ๊ณผ
์ ์ฅ์๊ฐ ์๋ค์. -_-
์ฃผ์
{{!
๋ก ์์ํ๊ณ , }}
๋ก ๋๋๋ค.
์ฃผ์์ ํ ํ๋ฆฟ ์ฝ๋์๋ ์กด์ฌํ์ง๋ง ํ๋ฉด์๋ ์ถ๋ ฅ๋์ง ์๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ค.
ํ ํ๋ฆฟ
<h1>Today{{! ์ฌ๊ธฐ๋ ์ ๋์ต๋๋ค. }}</h1>
๊ฒฐ๊ณผ
<h1>Today</h1>
๋ถ๋ถ ํ ํ๋ฆฟ
{{> ํ์ผ์ด๋ฆ}}
๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ค.
๋ถ๋ถํ ํ๋ฆฟ(Partials)์ ์ธ๋ถ ํ์ผ์ ํ ํ๋ฆฟ์ ์ผ๋ถ๋ก ๋ถ๋ฌ์ค๋ ๊ธฐ๋ฅ์ด๋ค.
ํ
ํ๋ฆฟ1 (base.mustache
)
<h2>Names</h2>
{{#names}}
{{> user}}
{{/names}}
ํ
ํ๋ฆฟ2 (user.mustache
)
<strong>{{name}}</strong>
๊ฒฐ๊ณผ ํ ํ๋ฆฟ
<h2>Names</h2>
{{#names}}
<strong>{{name}}</strong>
{{/names}}
๊ตฌ๋ถ์ ์ค์
ํ
ํ๋ฆฟ ํ๊ทธ {{
์ }}
๋ฅผ ์ ์ ๋ค๋ฅธ ๊ตฌ๋ถ์๋ก ๋ฐ๊ฟ ์ ์๋ค.
{{=๋ฐ๊ฟ์ฌ๋๊ตฌ๋ถ์ ๋ฐ๊ฟ๋ซ๋๊ตฌ๋ถ์=}}
๋ฐ๊ฟจ๋ ๊ตฌ๋ถ์๋ฅผ ๋ค์ ๋๋๋ฆด ๋๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก ๋๋๋ฆด ์ ์๋ค.
๋ฐ๊ฟจ๋์ฌ๋๊ตฌ๋ถ์={{ }}=๋ฐ๊ฟจ๋๋ซ๋๊ตฌ๋ถ์
ํ ํ๋ฆฟ
* {{default_tags}}
{{=<% %>=}}
* <% ERB_์คํ์ผ_ํ๊ทธ %>
<%={{ }}=%>
* {{ ์๋_ํ
ํ๋ฆฟ_์ฝ๋ }}
'๐ฅ BE ๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ์ ์น, ๋์ ์น, MVC ์น ํ๋ ์์ํฌ (0) | 2021.03.12 |
---|---|
[ํ ํ๋ฆฟ ์์ง] handlebars , handlebars๋ก HTML ํ์ผ ๋๋๊ธฐ (์ค๋ณต์ ๊ฑฐ) (0) | 2021.03.11 |
๋ฐ๋๋ฝ์ด๋? (0) | 2021.03.02 |
๋ชจ๋์ด๋? (0) | 2021.02.16 |
ํ์ผ ๋์ ๊ฐํ์ ์ถ๊ฐํด์ผ ํ๋ ์ด์ (0) | 2021.02.15 |