Handlebars.js: 각 λ„μš°λ―Έμ˜ ꡬ문 뢄석 였λ₯˜: "ID"κ°€ ν•„μš”ν•˜κ³  μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2012λ…„ 06μ›” 29일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: handlebars-lang/handlebars.js

λ¬Έμ„œμ—μ„œ 예제λ₯Ό μ‹œλ„ν•˜λ©΄ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

μž‘νžˆμ§€ μ•Šμ€ 였λ₯˜: 3ν–‰μ˜ ꡬ문 뢄석 였λ₯˜:
{{ #각 μ‚¬λžŒ }} -------^
'ID'κ°€ ν•„μš”ν•˜μ§€λ§Œ 'μ •μ˜λ˜μ§€ μ•ŠμŒ'이 μžˆμŠ΅λ‹ˆλ‹€.

feature

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ’‹μ•„, λ¬Έμ œλŠ” μΈμ‡„λ˜μ§€ μ•ŠλŠ” λ¬Έμžμ™€ 관련이 μ—†κ³  μ‹€μ œλ‘œ 맀우 κ°„λ‹¨ν•˜μ§€λ§Œ λ‚΄ μ„œλ²„ μΈ‘ ν…œν”Œλ¦Ώ 엔진은 }} μ•žμ— 곡백을 λ„£μŠ΅λ‹ˆλ‹€.
λ‹€μŒμ€ 문제λ₯Ό ν•΄κ²°ν•˜μ§€λ§Œ {# 각 μ‚¬λžŒ }}을 μ˜¬λ°”λ₯΄κ²Œ ꡬ문 λΆ„μ„ν•˜κΈ° μœ„ν•΄ ν•Έλ“€λ°”λ₯Ό μˆ˜μ •ν•΄μ•Ό ν•˜λŠ”μ§€ μ—¬λΆ€λŠ” ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

      source = $("#people-in-clients-template").html();
      source = source.replace(/ }}/g, "}}");
      source = source.replace(/{{ /g, "{{");

λͺ¨λ“  6 λŒ“κΈ€

@ustun , μš°λ¦¬κ°€ 이것을 μ œλŒ€λ‘œ λ””λ²„κΉ…ν•˜λ €λ©΄ 쑰금 더 λ§Žμ€ μ½”λ“œλ₯Ό λ³΄μ—¬μ€˜μ•Ό ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ jsfiddle을 ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλ‹€λ©΄ κ°€μž₯ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

@wagenet λΉ λ₯Έ λ‹΅λ³€ κ°μ‚¬ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” 메인 νŽ˜μ΄μ§€μ˜ κ°„λ‹¨ν•œ #each μ˜ˆμ œμ™€ λ™μΌν•˜κΈ° λ•Œλ¬Έμ— μ‹œμ—°μ‘°μ°¨ ν•  수 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. jsfiddleμ—μ„œ μ‹œλ„ν•˜κ±°λ‚˜ Chrome μ½˜μ†”μ—μ„œ ν…μŠ€νŠΈλ₯Ό μž…λ ₯해도 μž‘λ™ν•˜μ§€λ§Œ μ–΄λ–€ 이유둜 html()μ—μ„œ λ°˜ν™˜λœ ν…μŠ€νŠΈκ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€. μ–΄λ–»κ²Œ λ“  κ°œν–‰μœΌλ‘œ ν˜Όλž€μŠ€λŸ¬μ›Œμ§€κ³  μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

λ‹€μŒμ€ μ½˜μ†” μ„Έμ…˜μž…λ‹ˆλ‹€. λ³΄μ‹œλ‹€μ‹œν”Ό ν…œν”Œλ¦Ώμ„ μˆ˜λ™μœΌλ‘œ μž…λ ₯ν•˜λ©΄ μž‘λ™ν•©λ‹ˆλ‹€.

ν…œν”Œλ¦Ώ = $(#μ‚¬λžŒ-인-ν΄λΌμ΄μ–ΈνŠΈ ν…œν”Œλ¦Ώ").html()
"

{{ #each people }}
<li>{{ this }}</li>
{{ /each }}

"
t = Handlebars.compile(template);
function (context, options) {
    if (!compiled) {
      compiled = compile();
    }
    return compiled.call(this, context, options);
  }
t({"people": ['foo','bar']})
Error: Parse error on line 3: {{ #each people }}<li> ---^ Expecting 'ID', got 'undefined'

이제 μˆ˜λ™μœΌλ‘œ μ‹œλ„:

template = "{{#each people }}<li>{{ this}}</li>{{/each}}"
"{{#each people }}<li>{{ this}}</li>{{/each}}"
t = Handlebars.compile(template);
function (context, options) {
    if (!compiled) {
      compiled = compile();
    }
    return compiled.call(this, context, options);
  }
t({"people": ['foo','bar']})
"<li>foo</li><li>bar</li>"

html() 좜λ ₯을 νŠΈλ¦¬λ°ν•΄λ„ νš¨κ³Όκ°€ μ—†μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ,

  template = $.trim($("#people-in-clients-template").html())
"

{{ #each people }}
<li>{{ this }}</li>
{{ /each }}

"
t = Handlebars.compile(template);
function (context, options) {
    if (!compiled) {
      compiled = compile();
    }
    return compiled.call(this, context, options);
  }
t({"people": ['foo','bar']})
Error: Parse error on line 3: {{ #each people }}<li> ---^ Expecting 'ID', got 'undefined'

λ‚΄ ν…œν”Œλ¦Ώμ— 이진 데이터가 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

    template = "{{#each people }}<li>{{ this}}</li>{{/each}}"
"{{#each people }}<li>{{ this}}</li>{{/each}}"
/[\x00-\x1F]/.test(template)
false
template = $("#people-in-clients-template").html()
"

{{ #each people }}
<li>{{ this }}</li>
{{ /each }}

"
/[\x00-\x1F]/.test(template)
true

λ¬Έμ œκ°€ λ˜λŠ” ν…œν”Œλ¦Ώμ˜ 문자 μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

a = [10, 10, 123, 123, 32, 35, 101, 97, 99, 104, 32, 112, 101, 111, 112, 108, 101, 32, 125, 125, 3, 10 , 116, 104, 105, 115, 32, 125, 125, 10, 123, 123, 32, 47, 101, 97, 99, 104, 32, 125, 125, ]10, 10

b="";

for (i = 0; i < a.length; i++) {
b += String.fromCharCode(a[i]);
}

t = ν…œν”Œλ¦Ώ({"μ‚¬λžŒ: ['foo','bar']});

λ‹€μŒμ€ jsfiddleμž…λ‹ˆλ‹€.

http://jsfiddle.net/8nugY/

μ’‹μ•„, λ¬Έμ œλŠ” μΈμ‡„λ˜μ§€ μ•ŠλŠ” λ¬Έμžμ™€ 관련이 μ—†κ³  μ‹€μ œλ‘œ 맀우 κ°„λ‹¨ν•˜μ§€λ§Œ λ‚΄ μ„œλ²„ μΈ‘ ν…œν”Œλ¦Ώ 엔진은 }} μ•žμ— 곡백을 λ„£μŠ΅λ‹ˆλ‹€.
λ‹€μŒμ€ 문제λ₯Ό ν•΄κ²°ν•˜μ§€λ§Œ {# 각 μ‚¬λžŒ }}을 μ˜¬λ°”λ₯΄κ²Œ ꡬ문 λΆ„μ„ν•˜κΈ° μœ„ν•΄ ν•Έλ“€λ°”λ₯Ό μˆ˜μ •ν•΄μ•Ό ν•˜λŠ”μ§€ μ—¬λΆ€λŠ” ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

      source = $("#people-in-clients-template").html();
      source = source.replace(/ }}/g, "}}");
      source = source.replace(/{{ /g, "{{");

잘λͺ»λœ 인코딩 λŒ€ μ‹€μ œ λ²„κ·Έμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰