λλλ‘ μ°λ¦¬λ λ³μ μ΄λ¦μ μ€νλ₯Ό λ§λλλ€(autosuggestλ₯Ό μ¬μ©νλλΌλ).
mustache-jsκ° λΉ λ¬Έμμ΄μ λ°ννλ λμ (μ¬μμ μ€μνλλΌλ) 'μ μ μλ' λ³μμ λν κ²½κ³ λ₯Ό μμ±νλλ‘ κ΅¬μ±μ΄ μμΌλ©΄ μ’μ κ²μ
λλ€.
Mustache 맨 νμ΄μ§λ λ€μκ³Ό κ°μ΄ λ§ν©λλ€.
By default a variable "miss" returns an empty string. This can usually be configured in your Mustache library. The Ruby version of Mustache supports raising an exception in this situation, for instance.
λ‘컬μμ κ°λ°νλ λμ λ€λ₯Έ νλ μμν¬μ μ΄ κΈ°λ₯μ μ’μνλ―λ‘ μ μκ² +1νμμμ€! μ±λ₯μ μ΅μνμ μν₯μ λ―ΈμΉκ±°λ μ ν μν₯μ λ―ΈμΉμ§ μλ κ²μ΄ μ€μνλ€κ³ μκ°ν©λλ€. μ½μ΄λ₯Ό κ·Έλλ‘ μ μ§νλ©΄μ κ°λ₯ν κΉμ? μλ₯Ό λ€μ΄ κ°λ°νλ λμ μ΄λ¬ν μ’ λ₯μ λμμ νμ±ννκΈ° μν΄ μΌλΆ λ΄λΆ λ©μλλ₯Ό μ¬μ μν©λλ€.
mustache.dev.js
λ₯Ό μ¬μ©νμ¬ λΉλλ mustache.js
λ° κ²μ¬ λ
Όλ¦¬λ₯Ό ν¬ν¨νλ ν¨μ μ¬μ μκ° κ°λ₯ν κΉμ?
μλ₯Ό λ€μ΄ Expressμ ν¨κ» μ¬μ©ν λ μ΅μ’ μ¬μ©μκ° μλͺ» λ λλ§λ νμ΄μ§λ₯Ό λ³΄κ³ μλ λμ μ΄λκ°μ λ‘κ·Έκ° μλλΌ 500 μλ΅μ΄ λλλ‘ νλ κ²μ μ νΈν©λλ€. λ³μλ₯Ό μ¬μ©ν΄μΌ ν¨); μ΄κ²μ 500νμ΄μ§κ° μΌλ§λ μ’μμ§μ μλͺ» λ λλ§λ νμ΄μ§κ° μ ν리μΌμ΄μ μ κΈ°λ₯μ μΌλ§λ λμμ§μ λ°λΌ λ‘컬 κ°λ°λ³΄λ€ νλ‘λμ μμ ν¨μ¬ λ μ μ©ν μ μμ΅λλ€. μΉμ μ μ¬μ©νλ©΄ ν νλ¦Ώμμ μ§μ μ¬μ©νκΈ° μν νλ μ€λ₯κ° μλ κ²½μ°μλ λλ½λ λ³μλ₯Ό 무μν μ μμ΅λλ€. κ·Έλ¦¬κ³ λ¬Έμ λ₯Ό κΈ°λ‘ν΄μΌ νλ λ λμ μμ€μ μ¬μ©μ κΈ°λ‘ μμ€ν μ μ μ΄νλ―λ‘ ν μ€νΈ λ¬λ λλ μ΄μ μ μ¬ν κ²μ μΆλ ₯μ λ°©ν΄νλ Mustacheμ λ΄λΆ κ²½κ³ λ©μ»€λμ¦μ λν΄ κ±±μ ν νμκ° μμ΅λλ€.
https://github.com/ScottFreeCode/mustache.js μ νλ‘ν νμ μ΄ μμ΅λλ€. ν μ€νΈλ₯Ό μμ±νλ λ°©λ²μ μμλ΄λ λ° λμμ λ°μ μλ μμ§λ§μ.
ν , κ·Έλμ if
( {{#thing}}
)λ‘ κ°μ²΄μ μ‘΄μ¬λ₯Ό μ¬μ©νλ©΄ μ€λ₯κ° λ°μν©λκΉ? (λλ μ΄κ²μ΄ κ½€ νν μΌμ΄λΌκ³ μκ°νλ€)
μλλ©΄ λ³μμ μ€μ λ λλ§( {{ id }}
)μμλ§ μ€λ₯κ° λ°μν©λκΉ? λ¬΄μ¨ μκ°νκ³ μμλκ±°μΌ?
νΈμ§: λ²κ±°λ‘μ§ μμ κ²½μ°λ₯Ό λλΉνμ¬ μ 곡μμ κΈ°λ³Έμ μΌλ‘ νμ±ννλλ‘ +1ν μ μλ λ§€μ° λ©μ§ κΈ°λ₯μ λλ€.
λ΄ μκ°μ 첫 λ²μ§Έλ μ€λ₯μ΄κ³ λ λ²μ§Έλ 'κ²½κ³ 'μ¬μΌ ν©λλ€.
λ λ€ λλ½λ κ°μ΄ μλμ§ μκ³ μΆμ΅λλ€.
λ λ²μ§Έ κ²½μ°μλ κΈ°μ μ μΌλ‘ κΉ¨μ§μ§ μμ μ μμ§λ§ νμ΄μ§μ ν° μν₯μ λ―ΈμΉ μ μμ΅λλ€.
λν κ·Έ λ°λμ κ²½μ°λ μ’μ κ²μ λλ€. μ¬μ©νμ§ μλ λ³μ... νμ§λ§ ν¨μ¬ λ λ§μ μν₯μ λ―ΈμΉ μ μμ΅λλ€. :NS
2016λ 11μ 8μΌ 14μ 19λΆμ David da Silva [email protected]μ΄ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
ν , κ·Έλ λ€λ©΄ κ°μ²΄μ μ‘΄μ¬λ₯Ό if({{#thing}})λ‘ μ¬μ©νλ©΄ μ€λ₯κ° λ°μν©λκΉ? (λλ μ΄κ²μ΄ κ½€ νν μΌμ΄λΌκ³ μκ°νλ€)
μλλ©΄ λ³μμ μ€μ λ λλ§({{ id }})λ§ μ€λ₯κ° λ°μν©λκΉ? λ¬΄μ¨ μκ°νκ³ μμλκ±°μΌ?
β
μ€λ λλ₯Ό μμ±νκΈ° λλ¬Έμ μ΄ λ©μμ§λ₯Ό λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHub https://github.com/janl/mustache.js/issues/599#issuecomment -259133973μμ νμΈνκ±°λ μ€λ λ https://github.com/notifications/unsubscribe-auth/λ₯Ό μμκ±°
λ΄ μκ°μ 첫 λ²μ§Έλ μ€λ₯μ΄κ³ λ λ²μ§Έλ 'κ²½κ³ 'μ¬μΌ ν©λλ€.
λ λ€ λλ½λ κ°μ΄ μλμ§ μκ³ μΆμ΅λλ€.
@MatthijsZw μκ² μ΅λλ€ . λ°©κΈ μμ±μ λν΄ null
κ°μ μ μ₯ν μ μλ€λ κ²μ κΈ°μ΅νμ΅λλ€. μ΄λ μ’μ μΌμ΄λ―λ‘ μμΈκ° λ°μνμ§ μμ΅λλ€. (νΉν if
κ²½μ°μ λν΄ μΈκΈ)
νΈμ§: λ΄ νμ¬ μ
μ₯μ λ λ€ Errμ μ νΈνλ€λ κ²μ
λλ€. λλ μΌκ΄λ νλμ μ νΈνλ©° λΉ κ²°μΈ‘κ°μ λν΄ null
μ¬μ©μ μνν κ²μΈλ°, μ΄κ²μ΄ λ°λμ§νλ€κ³ μκ°ν©λλ€.
λν κ·Έ λ°λμ κ²½μ°λ μ’μ κ²μ λλ€. μ¬μ©νμ§ μλ λ³μ... νμ§λ§ ν¨μ¬ λ λ§μ μν₯μ λ―ΈμΉ μ μμ΅λλ€. :NS
ν νλ¦Ώμ΄ μμνλ λ°μ΄ν°μ λν μ€ν€λ§λ₯Ό μ΄λ»κ²λ κ°μ Έμ€κ³ μ΄λ₯Ό μ¬μ©νμ¬ GraphQL 쿼리λ₯Ό μμ±νκ±°λ... λλ μ΄μ μ μ¬ν κ²μ μ¬μ©νλ κ²μ΄ λ©μ§ κ²μ΄λΌκ³ μκ°ν©λλ€.
λ μκ°ν΄ 보면, μ¬κΈ°μ λ¬Έμ μ μΌλΆλ λλ½λ λ°μ΄ν°κ° _λλ¬Έμ_ μ ν¨νμ§ μλ€λ κ²μ λλ€. λ°λΌμ _λ§μ½_ ν νλ¦Ώμ΄ ν΄λΉ λ°μ΄ν°λ₯Ό _κΈ°λνλ_ κ²μ λλ€. λ°λΌμ ν νλ¦Ώμ΄ μΌλ° νμν μ μλ λλ½λ λ°μ΄ν°λ ν΄λΉ λ Όλ¦¬μ μν΄ νμ μ ν¨νμ§ μμ§λ§ ν νλ¦Ώμ΄ ν κ³³μμ νΉμ λ°μ΄ν°λ₯Ό μ¬μ©ν μ μκ³ μ΄λ₯Ό μΌμ’ μ μ°Έ/κ±°μ§ νλκ·Έλ‘ λΆκΈ°ν μ μλ€κ³ μκ°ν μ μμ΅λλ€. λλ½λ κ²λ§νΌ κ±°μ§μ΄ μλμ΄μ ν΄λΉ κΈ°λμΉλ₯Ό μΆ©μ‘±νμ§ λͺ»νλ κ²½μ° μ ν¨νμ§ μμ§λ§, λ€λ₯Έ λ°μ΄ν°μμλ λ°μ΄ν°κ° μ¬μ© κ°λ₯νκ±°λ μ¬μ© λΆκ°λ₯ν μ μμΌλ©° μ¬μ© κ°λ₯νμ§ μ¬λΆμ λ°λΌ λΆκΈ°ν μ μμ΅λλ€(μ΄ κ²½μ° μ ν¨νμ§ μμ).
κ·Έλ° κ΄μ μμ null
λ₯Ό μ¬μ©νμ¬ μ΄κ²μ μ μ΄νλ ββκ²μ λμκ² κ·Έλ€μ§ μλ―Έκ° μμ΅λλ€.
null
λ λ°μ΄ν°λ₯Ό κΈ°λνκ³ λ°μ΄ν° λλ½μ λν΄ μ ν¨νμ§ μμ κ²μΌλ‘ κ°μ£Όνλ μ§μ€μ±μ λν λΆκΈ°μ λν μλͺ»λ κ°μΌ μ μμ§λ§, μ¬μ ν λ°μ΄ν°κ° μ ν μ 곡λμλμ§ μ¬λΆμ λν λΆκΈ°κ° νμν©λλ€. λ°μ΄ν°κ° μ±μμ§μ§ μμ μ μλ€κ³ μμνμμμ€( null
μλλλΌλ λλ½λ λ°μ΄ν°μ λν΄ null
λ₯Ό μ¬μ©νλ μμ€μμ μ€λ κ²½μ°κ° μλλΌλ©΄, μλ₯Ό λ€μ΄ SQL -- κ·Έλ¦¬κ³ μ€μ λ‘, μ΄λ null
λ₯Ό λλ½λ κ²μΌλ‘ μ·¨κΈνκ±°λ λ°μ΄ν° μμ€λ₯Ό κΈ°λ°μΌλ‘ ꡬμ±ν μ μμ).μ°λ¦¬κ° νμλ‘ νλ κ²μ ν νλ¦Ώ λΆλΆμμ λ€λ₯Έ κΈ°λλ₯Ό μν λ κ°μ§ μ νμ λΆκΈ°μ λλ€. λ΄κ° μλ ν μΈμ΄μ ꡬμ λ°μ§ μλ Mustache μ¬μ λλ¬Έμ λΆνν μΌμ΄μ§λ§ λλ½ λ λ°μ΄ν°κ° μ€λ₯μΈμ§ μ¬λΆμ λν ꡬμ±μ νμ©νμ§λ§ λ€λ₯Έ μ νμ λΆκΈ°μ λν μ λ³΄κ° μλ€λ κ²μ μκ³ μμ΅λλ€. μ΄ μ μμ λ€λ₯Ό κ²μ΄λ€. ν ...
λ°λλ‘, λλ νμ¬ κ΄λ ¨ μλ/μμ¬/λ―Έμ¬μ© λ°μ΄ν°κ° μ€μ λ‘ μλͺ»λ λ°μ΄ν°μ λ¬Έμ κ° μλλΌ μμ© νλ‘κ·Έλ¨/λ°μ΄ν°/ λͺ¨λΈμ΄ μ¬μ©λ κ²μΌλ‘ μμλ©λλ€. μ¦, μΌλΆ νλͺ©μ΄ μ μ¬μ μΌλ‘ μ¬μ© κ°λ₯νμ§λ§ ν νλ¦Ώμ΄ κ΄λ ¨μ± μ¬λΆλ₯Ό κ²°μ ν μ μλ κ²½μ° ν νλ¦Ώμ΄ ν΄λΉ νλͺ©μ μΈμνλμ§ μ¬λΆλ μ€μνμ§ μμ§λ§ μΌλΆ νλͺ©μ΄ μ¬μ©μμκ² μ€μ λ‘ νμλμ΄μΌ _νμ_νλ€λ©΄ ν νλ¦Ώμ΄ t κ·Έκ²μ νμνλ κ²μ μ€λ₯μ λλ€. μΌμ’ μ λ°μ μΌλ‘μ κΈ°λλ ν νλ¦Ώ μΈλΆμ μκ³ (λͺ¨λΈμμ?) κ·Έ κΈ°λλ₯Ό μΆ©μ‘±νμ§ λͺ»νλ 무ν¨μ±μ ν νλ¦Ώμ μμ΅λλ€. μλ§λ λ³λλ‘ ν΄κ²°νλ κ²μ΄ κ°μ₯ μ’μ κ² κ°μ΅λλ€.
μμ λ΄μ©μ κ°ν μκ²¬μ΄ μ½νκ² μ μ§λκ³ μλ€κ³ μκ°ν©λλ€.
null
κ°μ μ‘΄μ¬νμ§ μλ κ°μΌλ‘ ν΄μνλ IMOλ μλͺ»λμμ΅λλ€.
{ name: null }
ν΄λΉ κ°μ²΄μλ μλͺ»λ κ°μ΄ μλ name
μμ±μ΄ μμΌλ―λ‘ μ ν¨νμ§ μμ κ²μΌλ‘ κ°μ£Όλμ΄μλ μ λλ―λ‘ λμ§ μ΄μ κ° μλλλ€.
λ μ μ ν κ²μ¬λ μμ²ν μμ±μ΄ mustache.hasProperty() μμμ κ°μ΄ μ μλμλμ§ νμΈνλ κ²μ λλ€.
κ·Έλ¬λ λ€λ₯Έ λ°μ΄ν°μμλ λ°μ΄ν°κ° μ¬μ© κ°λ₯νκ±°λ μ¬μ© λΆκ°λ₯ν μ μμΌλ©° μ¬μ© κ°λ₯ μ¬λΆμ λ°λΌ λΆκΈ°ν μ μμ΅λλ€(μ΄ κ²½μ° μ ν¨νμ§ μμ).
λ΄κ° μ λ¬νλ €λ κ²μ X
ν€μ λ°λΌ λΆκΈ°νλ κ²½μ°(μ: {{#X}}
, μ 곡λ λ°μ΄ν°λ X
ν€μ λν κ°μ΄ μμ΄μΌ ν©λλ€. κ±°μ§ κ°μ΄μ§λ§ νμ€ν undefined
μλλλ€.
null
"μ, κ°μ΄ μλ€λ κ²μ μκ³ μμ΅λλ€. κ°μ΄ μμμ λͺ
μμ μΌλ‘ νμνκ³ μμ΅λλ€"λ₯Ό μλ―Έν©λλ€.undefined
λλΆλΆ X
ν€κ° μ μλμ§ μμμμ μλ―Έν©λλ€( undefined
κ°μΌλ‘ ν€λ₯Ό μ μνλ κ²½μ° null
μ¬μ©νλ κ²μ΄ μ’μ΅λλ€) . κ·Έλ¦¬κ³ ν€κ° μ μλμ§ μμ κ²½μ° λ°μ΄ν° μ μΈμ΄ 'κ²μΌλ₯Έ'(μ: κ°μ²΄ μ°Έμ‘°κ° μμ λ null
μ¬μ©νμ§ μμ) λλ μ¬λμ μ€μ(μ€ν, λ―Έλλ¬μ§, νΌλ) λλ¬Έμ
λλ€.λ°λΌμ μ΄ κ²½μ° μ€λ₯λ₯Ό λμ§λ©΄ μ΄μ μ΄ μμ΅λλ€. (κ°μ΄ undefined
ν€μμ λΆκΈ°νλ €κ³ ν¨)
λ€λ₯Έ κ²½μ°μλ undefined
λλ null
λ₯Ό λ λλ§νλ €κ³ νλ©΄ μ΄μ λν μ¬μ© μ¬λ‘κ° μλμ§ νμ€νμ§ μμ΅λλ€. μλ§λ κ·Έ λΆλΆμμλ μ€λ₯κ° λ°μν μ μμ΅λλ€.
SQLκ³Ό κ°μ΄ λλ½λ λ°μ΄ν°μ nullμ μ¬μ©νλ μμ€μμ μ€λ κ²½μ°κ° μλλ©΄
Afaik, Mustache μ² νμ λͺ¨λΈμ μλ κ·Έλλ‘ μ¬μ©νλ κ²μ΄ μλλΌ λͺ¨λΈμμ '보기'λ₯Ό μμ±νλ κ²μ
λλ€. 곡κΈμκ° μ΄λ»κ² λ κ·Έλ μ§ μμ κ²½μ°λ₯Ό λλΉνμ¬ null
μΆκ°ν μ μμ΅λλ€.
λλ νμ¬ κ΄λ ¨ μλ/μμ¬/λ―Έμ¬μ© λ°μ΄ν°κ° μ€μ λ‘ μ ν¨νμ§ μμ λ°μ΄ν°μ λ¬Έμ κ° μλλΌ μ ν리μΌμ΄μ /λ°μ΄ν°/λͺ¨λΈμ΄ μμν λ ν΄λΉ λ°μ΄ν°λ₯Ό μ¬μ©νμ§ μλ κ²½μ° ν νλ¦Ώμ΄ μ ν¨νμ§ μλ€λ λ¬Έμ λΌκ³ μκ°νκ³ μμ΅λλ€. μ΄μ©λλ€
μ, μ 곡λ λ°μ΄ν°λ₯Ό λͺ¨λ μ¬μ©νμ§ μλ κ²μ΄ μΌλ°μ μ΄λΌκ³ μκ°ν©λλ€. μ λ μ κ° μ μν GraphQL 쿼리 μμ±κ³Ό κ°μ μ μ©ν ν΄λ§μ μν΄ μ£Όλ‘ μμ΄λμ΄λ₯Ό λμ‘μ΅λλ€.
μΌλΆ νλͺ©μ΄ μ€μ λ‘ μ¬μ©μμκ² νμλμ΄μΌ νλ κ²½μ° ν νλ¦Ώμ νμλμ§ μμΌλ©΄ μ€λ₯μ λλ€.
κ·Έλ¬λ "μ¬μ©μμκ² μ§μ μΌλ‘ νμλμ΄μΌ νλ κ²"μ΄ ββ무μμΈμ§ λκ°/무μμ κ²°μ ν©λκΉ? λ΄κ° μΆμΈ‘νλ ν νλ¦Ώ μκ°? μ¬λλ€μ΄ 보기μ λͺ¨λ λ°μ΄ν°λ₯Ό μ¬μ©νλλ‘ κ°μ νλ κ²½μ° λ λλ§νλ €λ κ° ν νλ¦Ώμ λν΄ λ§μΆ€ν 보기λ₯Ό μμ±νλλ‘ κ°μνλ κ²μ λλ€.
μ°Έκ³ λ‘ μ μ¬μ© μ¬λ‘λ λΆκΈ° μλ μλ μ€μ μ΄μμ΅λλ€.
λλ 'λ€λ₯Έ μ¬λλ€'μ΄ λ°μ΄ν°(μ΄λ²€νΈ)λ₯Ό μλμΌλ‘ μμ±νλλ‘ νκ³ κ·Έ κ²½μ° κ·Έλ€μ΄ λͺ¨λ νλλ₯Ό μ±μ°κ±°λ λ³μ μ΄λ¦μ μ€νλ₯Ό λ§λ€μλμ§ νμΈν λ°©λ²μ΄ μμμ΅λλ€.
λ΄ ν
νλ¦Ώμ "{{ event.name }} on {{ event.date }}"λΌκ³ νμλ©λλ€. μ΄ κ²½μ° λλ½λ κ°μ λμ°ν νμ΄μ§λ₯Ό μμ±ν©λλ€.
λͺ¨λ νλκ° νμμ΄λ―λ‘ {{ event.date }}λ₯Ό νμνμ§ μλ λ
Όλ¦¬λ₯Ό μΆκ°νλ κ²μ μλ―Έκ° μμ΅λλ€.
μ΄ κ²½μ° 'μ¬μ©λμ§ μλ' λ³μλ μκ³ , μ€νλ μΆκ°ν νλͺ©μ΄ νμ΄μ§μ 'λ§λ²μ²λΌ' λνλ κ²μ΄λΌκ³ μκ°νλ νλͺ©μ λ€μ νμΈνλ κ²μ΄ μ’μ΅λλ€. :)
λλ μ΄ μ¬μ© μ¬λ‘κ° μ΄λ»κ²λ Mustacheμ μ΄λ
μ μ΄κΈ°λ κ²μ΄λΌκ³ νμ νμ§λ§ μ€μ μλ리μ€μ
λλ€.
κ·Έλ¦¬κ³ λ κ°μ§ μν©(κ²°μΈ‘κ° + μ¬μ©νμ§ μμ κ°) λͺ¨λ κ²½κ³ λ₯Ό μμ±νλ κ²μ΄ μ’μ΅λλ€.
2016λ 11μ 9μΌ 10μ 53λΆμ David da Silva [email protected]μ΄ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
κ·Έλ¬λ λ€λ₯Έ λ°μ΄ν°μμλ λ°μ΄ν°κ° μ¬μ© κ°λ₯νκ±°λ μ¬μ© λΆκ°λ₯ν μ μμΌλ©° μ¬μ© κ°λ₯ μ¬λΆμ λ°λΌ λΆκΈ°ν μ μμ΅λλ€(μ΄ κ²½μ° μ ν¨νμ§ μμ).
λ΄κ° μ λ¬νλ €λ κ²μ ν€ Xμ λ°λΌ λΆκΈ°νλ κ²½μ°(μ: {{#X}}, μ 곡λ λ°μ΄ν°λ ν€ Xμ λν κ°μ΄ μμ΄μΌ ν©λλ€. μ°Έ λλ κ±°μ§ κ°μ΄μ§λ§ νμ€ν μ μλμ§ μμ κ°μ μλλλ€.
nullμ "μ, κ°μ΄ μλ€λ κ²μ μκ³ μμ΅λλ€. κ°μ΄ μμμ λͺ μμ μΌλ‘ νμνκ³ μμ΅λλ€"λ₯Ό μλ―Έν©λλ€.
undefinedλ λλΆλΆ ν€ Xκ° μ μλμ§ μμμμ μλ―Έν©λλ€(undefined κ°μΌλ‘ ν€λ₯Ό μ μνλ κ²½μ° nullμ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€). ν€κ° μ μλμ§ μμ κ²½μ° λ°μ΄ν° μ μΈμ΄ 'κ²μΌλ₯Έ'(μ: κ°μ²΄ μ°Έμ‘°κ° μλ κ²½μ° nullμ μ¬μ©νμ§ μμ) λλ μ¬λμ μ€μ(μ€ν, μ€μ, νΌλ) λλ¬Έμ λλ€.
λ°λΌμ μ΄ κ²½μ° μ€λ₯λ₯Ό λμ§λ©΄ μ΄μ μ΄ μμ΅λλ€. (κ°μ΄ μ μλμ§ μμ ν€μμ λΆκΈ°λ₯Ό μλν¨)λ€λ₯Έ κ²½μ°μλ μ μλμ§ μμκ±°λ nullμ λ λλ§νλ €κ³ μλνμ§λ§ μ΄μ λν μ¬μ© μ¬λ‘κ° μλμ§ νμ€νμ§ μμ΅λλ€. μλ§λ κ·Έ λΆλΆμμλ μ€λ₯κ° λ°μν μ μμ΅λλ€.
SQLκ³Ό κ°μ΄ λλ½λ λ°μ΄ν°μ nullμ μ¬μ©νλ μμ€μμ μ€λ κ²½μ°κ° μλλ©΄
Afaik, Mustache μ² νμ λͺ¨λΈμ μλ κ·Έλλ‘ μ¬μ©νλ κ²μ΄ μλλΌ λͺ¨λΈμμ '보기'λ₯Ό μμ±νλ κ²μ λλ€. 곡κΈμκ° μ΄λ»κ² λ κ·Έλ μ§ μμ κ²½μ°λ₯Ό λλΉνμ¬ nullμ μΆκ°ν μ μμ΅λλ€.
λλ νμ¬ κ΄λ ¨ μλ/μμ¬/λ―Έμ¬μ© λ°μ΄ν°κ° μ€μ λ‘ μ ν¨νμ§ μμ λ°μ΄ν°μ λ¬Έμ κ° μλλΌ μ ν리μΌμ΄μ /λ°μ΄ν°/λͺ¨λΈμ΄ μμν λ ν΄λΉ λ°μ΄ν°λ₯Ό μ¬μ©νμ§ μλ κ²½μ° ν νλ¦Ώμ΄ μ ν¨νμ§ μλ€λ λ¬Έμ λΌκ³ μκ°νκ³ μμ΅λλ€. μ΄μ©λλ€
μ, μ 곡λ λ°μ΄ν°λ₯Ό λͺ¨λ μ¬μ©νμ§ μλ κ²μ΄ μΌλ°μ μ΄λΌκ³ μκ°ν©λλ€. μ λ μ κ° μ μν GraphQL 쿼리 μμ±κ³Ό κ°μ μ μ©ν ν΄λ§μ μν΄ μ£Όλ‘ μμ΄λμ΄λ₯Ό λμ‘μ΅λλ€.
μΌλΆ νλͺ©μ΄ μ€μ λ‘ μ¬μ©μμκ² νμλμ΄μΌ νλ κ²½μ° ν νλ¦Ώμ νμλμ§ μμΌλ©΄ μ€λ₯μ λλ€.
κ·Έλ¬λ "μ¬μ©μμκ² μ§μ μΌλ‘ νμλμ΄μΌ νλ κ²"μ΄ ββ무μμΈμ§ λκ°/무μμ κ²°μ ν©λκΉ? λ΄κ° μΆμΈ‘νλ ν νλ¦Ώ μκ°? μ¬λλ€μ΄ 보기μ λͺ¨λ λ°μ΄ν°λ₯Ό μ¬μ©νλλ‘ κ°μ νλ κ²½μ° λ λλ§νλ €λ κ° ν νλ¦Ώμ λν΄ λ§μΆ€ν 보기λ₯Ό μμ±νλλ‘ κ°μνλ κ²μ λλ€.
β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHub https://github.com/janl/mustache.js/issues/599#issuecomment -259374603μμ νμΈνκ±°λ μ€λ λ https://github.com/notifications/unsubscribe-auth/λ₯Ό μμκ±°
λλ μ΄ μ¬μ© μ¬λ‘κ° μ΄λ»κ²λ Mustacheμ μ΄λ μ μ΄κΈ°λ κ²μ΄λΌκ³ νμ νμ§λ§ μ€μ μλ리μ€μ λλ€. κ·Έλ¦¬κ³ λ κ°μ§ μν©(κ²°μΈ‘κ° + μ¬μ©νμ§ μμ κ°) λͺ¨λ κ²½κ³ λ₯Ό μμ±νλ κ²μ΄ μ’μ΅λλ€.
λ λ€ κ°λ₯ν κ² κ°μ΅λλ€. CIμ μ μ©ν μ μμ΅λλ€.
λλ²κΉ μ μν΄ λ·°μμ μ§μ 맀κ°λ³μλ₯Ό 보λ κ²μ μ νΈν©λλ€.
λ΄ μ¬μ© μ¬λ‘λ μ½κ° λ€λ¦ λλ€. μ λ Mustacheλ₯Ό μ¬μ©νμ¬ Gulpλ₯Ό μ¬μ©νμ¬ Terraform ν νλ¦Ώμ λ³νν©λλ€. λ³μκ° μμΌλ©΄ νΉν μμ νμ λ¬Έμμ΄λ‘ λ체ν λ μΈμ€ν΄μ€κ° μ¬λ°λ₯΄κ² λΆν λμ§ μμ μ μμ΅λλ€. μ΄ κΈ°λ₯μ μ»κΈ° μν΄ λΉ λ₯Έ μμμ΄ ν¨μΉλ₯Ό μκ°ν΄ λμ§λ§ μ΄μμ μ΄μ§ μμ΅λλ€.
var mustache = require("mustache");
var errors = [];
var lookup = mustache.Context.prototype.lookup;
mustache.Context.prototype.lookup = function(name) {
var value = lookup.bind(this)(name);
if (value === undefined) {
console.error("Unknown symbol", name);
errors.push(name);
}
return value;
}
var render = mustache.render;
mustache.render = function(template, view, partials) {
var result = render.bind(this)(template, view, partials);
if (errors.length > 0) {
throw {message: "Unknown symbols: " + errors.join(", ")};
}
return result;
}
λ ΈνΈ:
κ·Έλ¬λ κ·Έκ²μ λ΄ λͺ©μ μ μν΄ μ μλνμΌλ©° νμν κ²½μ° λκ΅°κ°κ° μ‘°μ ν μ μλ€κ³ νμ ν©λλ€.
λͺ¨λ μ’ λ₯μ κ΅¬μ± κ΄λ¦¬ νκ²½μμ 콧μμΌμ ν νλ¦Ώ μμ§μΌλ‘ μ¬μ©νλ €λ©΄ λλ½λ λ³μμ λν νλ μ€λ₯κ° νμν©λλ€. μ λλ Kubernetesμκ² λ°°ν¬ λ¬Έμλ₯Ό λ³ν, @steverukutsμ μ¬μ©νλ κ²½μ°μ μ μ¬ν©λλ€. μ΄ μ¬μ© μ¬λ‘μμ λλ½λ λ³μλ νμ μ€λ₯μ λλ€.
@stefanegλ₯Ό μμ±ν μ§ λͺ λ¬ ν μ€μ λ‘ Terraformμ΄ JSON νμμΌλ‘ μμ±λ ꡬμ±μ μ§μνλ€λ κ²μ λ°κ²¬νκΈ° λλ¬Έμ μ΄μ Mustacheλ₯Ό μ¬μ©νλ λμ μ΄κ²μ μ¬μ©ν©λλ€. μ΄κ²μ ν¨μ¬ λ μ’κ³ νλ‘κ·Έλλ°μ΄ κ°λ₯ν©λλ€. μ΄μ μ΄μ λν Mustache μ¬μ©μ΄ λ μ΄μ μ¬μ©λμ§ μμΌλ©° λ°°ν¬ νμ΄νλΌμΈμ λ€μ κ°μ νμμ μ κ±°λ κ²μ λλ€.
Kubernetes λ°°ν¬ λ¬Έμλ₯Ό μ΄ν΄λ³΄λ©΄ μ΄κ²μ΄ YAML νμΌμμ μ μ μμ΅λλ€. λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μλ YAMLμ μ½κ³ μΈ μ μλ λΌμ΄λΈλ¬λ¦¬κ° μμΌλ―λ‘ λμ μ΄ μμ μ μννλ κ²μ΄ μ’μ΅λλ€. λ΄ μ€νμμ λλ κΈ°κ³κ° μ½μ μ μλ νμμ μ‘°μνλ €κ³ ν λ κ±°μ νμ Mustacheλ³΄λ€ λ λμ μ νμ΄ μλ€λ κ²μ λ°°μ μ΅λλ€.
μ°Έκ³ : λλ λ μ΄μ Mustacheλ₯Ό μ¬μ©νμ§ μμ§λ§ μ΄κ²μ΄ μ ν¨ν κΈ°λ₯ μμ²μ΄λΌκ³ μκ°ν©λλ€.
ν΄κ²°μ± μ λμΌν ꡬ문μ μ§μνκ³ μ΄ μ¬μ© μ¬λ‘μ μ νν νμν μ격ν μ΅μ λ μλ νΈλ€λ°λ₯Ό μ¬μ©νλ κ²μ λλ€.
@steverukuts μ§μν΄μΌ νλ 미리 κ²°μ λ μ‘°μμ΄ μλ κ²½μ°, νΉν μΌλΆ μ€λ§νΈ κΈ°λ₯μ΄ λ΄μ₯λμ΄ μμ΄μΌ νλ κ²½μ° κΈ°κ³ νλ κ°λ₯ νμμ μ‘°μνλ κ²μ΄ μ³μ΅λλ€. κ°λ°©ν κ΅¬μ± λꡬμ κ²½μ° λ무 빨리 μ μ°μ±μ΄ λ¨μ΄μ§λ―λ‘ ν νλ¦Ώμ΄ νμν©λλ€. μμμ μμΉμ μμμ κ° μ½μ μ μ§μνλ λꡬλ₯Ό μμ±ν΄ 보μμμ€. κ·Έλ¬λ©΄... 곧 ν νλ¦Ώ μμ§μ κ°κ² λ©λλ€.
μ§μ₯μμ μ°λ¦¬λ μ§λ λͺ λ λμ Kubernetes 리μμ€λ₯Ό ꡬμ±νκΈ° μν΄ kontemplate μ μ¬μ©νμ΅λλ€. κΈ°λ³Έμ μΌλ‘ ν΄λΉ νλ‘μ νΈμ sprig λ° μ¬μ©μ μ§μ κΈ°λ₯μ λͺ κ°μ§ νΈλ¦¬ν κΈ°λ₯μ΄ μλ go ν νλ¦Ώ μμ§μ λλ€. μλ₯Ό λ€μ΄ ν€λ³΄λ€ κ°λ²Όμ΄ μ κ·Ό λ°©μμΌλ‘ λ§λ€μ΄μ‘μ΅λλ€.
μμ λ Όμμ κ΄λ ¨νμ¬; μ μ μλ λ³μμμλ νλ°ν©λλ€.
ν΄κ²°μ± μ λμΌν ꡬ문μ μ§μνκ³ μ΄ μ¬μ© μ¬λ‘μ μ νν νμν μ격ν μ΅μ λ μλ νΈλ€λ°λ₯Ό μ¬μ©νλ κ²μ λλ€.
μ΄ λ¬Έμ λ‘ μΈν΄ νΈλ€λ°λ μ¬μ©νκ² λμμ΅λλ€. μ΄κ²μ 콧μμΌμμ μ§μλμ§ μλ κ²μ΄ λ무 λμ©λλ€.
κ°μ₯ μ μ©ν λκΈ
μλ₯Ό λ€μ΄ Expressμ ν¨κ» μ¬μ©ν λ μ΅μ’ μ¬μ©μκ° μλͺ» λ λλ§λ νμ΄μ§λ₯Ό λ³΄κ³ μλ λμ μ΄λκ°μ λ‘κ·Έκ° μλλΌ 500 μλ΅μ΄ λλλ‘ νλ κ²μ μ νΈν©λλ€. λ³μλ₯Ό μ¬μ©ν΄μΌ ν¨); μ΄κ²μ 500νμ΄μ§κ° μΌλ§λ μ’μμ§μ μλͺ» λ λλ§λ νμ΄μ§κ° μ ν리μΌμ΄μ μ κΈ°λ₯μ μΌλ§λ λμμ§μ λ°λΌ λ‘컬 κ°λ°λ³΄λ€ νλ‘λμ μμ ν¨μ¬ λ μ μ©ν μ μμ΅λλ€. μΉμ μ μ¬μ©νλ©΄ ν νλ¦Ώμμ μ§μ μ¬μ©νκΈ° μν νλ μ€λ₯κ° μλ κ²½μ°μλ λλ½λ λ³μλ₯Ό 무μν μ μμ΅λλ€. κ·Έλ¦¬κ³ λ¬Έμ λ₯Ό κΈ°λ‘ν΄μΌ νλ λ λμ μμ€μ μ¬μ©μ κΈ°λ‘ μμ€ν μ μ μ΄νλ―λ‘ ν μ€νΈ λ¬λ λλ μ΄μ μ μ¬ν κ²μ μΆλ ₯μ λ°©ν΄νλ Mustacheμ λ΄λΆ κ²½κ³ λ©μ»€λμ¦μ λν΄ κ±±μ ν νμκ° μμ΅λλ€.
https://github.com/ScottFreeCode/mustache.js μ νλ‘ν νμ μ΄ μμ΅λλ€. ν μ€νΈλ₯Ό μμ±νλ λ°©λ²μ μμλ΄λ λ° λμμ λ°μ μλ μμ§λ§μ.