Handlebars λ¬Έμ μ λ°λ₯΄λ©΄ $#$ Handlebars.precompile()
templateSpec
μ Handlebars.template()
μ μν΄ μ§μ μλΉ κ°λ₯ν΄μΌ νμ§λ§ μ€λ₯ μ€νμμ μ μλ λ¬Έμμ΄μ μΆλ ₯νκ³ νμλ κ°μ²΄λ₯Ό κΈ°λν©λλ€.
λ€μμ λ¬Έμ λ₯Ό μ¬ννλ μΈμμ μΈ μμ λλ€.
var Handlebars = require('handlebars');
console.log(Handlebars.VERSION);
var pre = Handlebars.precompile('{{foo}}');
var template = Handlebars.template(pre);
κ·Έλ¦¬κ³ κ΄λ ¨ μΆλ ₯
$ node contrived.js
3.0.1
/private/tmp/hbs-bug/node_modules/handlebars/dist/cjs/handlebars/runtime.js:48
throw new _Exception2['default']('Unknown template object: ' + typeof temp
^
Error: Unknown template object: string
at Object.template (/private/tmp/hbs-bug/node_modules/handlebars/dist/cjs/handlebars/runtime.js:48:11)
at HandlebarsEnvironment.hb.template (/private/tmp/hbs-bug/node_modules/handlebars/dist/cjs/handlebars.runtime.js:46:20)
at Object.<anonymous> (/private/tmp/hbs-bug/contrived.js:7:27)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
μ¬μ μ»΄νμΌμ JavaScript μμ€κ° ν¬ν¨λ λ¬Έμμ΄μ λ°νν©λλ€. μ»΄νμΌ λ°©λ²μ μ¬μ©νλ κ²κ³Ό λμΌν νκ²½μμ μ€νλλλ‘ μλλ κ²μ΄ μλλλ€. μ΄λ€ μ΄μ λ‘ μ΄ μμ μ μνν΄μΌ νλ κ²½μ° ν νλ¦Ώμ μ λ¬νκΈ° μ μ μ΄ λ¬Έμμ΄μ νκ°ν΄μΌ ν©λλ€.
κ·Έκ²μ΄ λ΄κ° λλ €μ λ κ²μ΄λ€. evalμ μ¬μ©νλ λμ μ€μ κ°μ²΄λ₯Ό μ 곡νκΈ° μν΄ μ¦μ νΈμΆν ν¨μ μμ±μλ₯Ό μ¬μ©νκΈ°λ‘ κ²°μ νμ΅λλ€. λ€λ₯Έ μ¬λμ΄ μ μ©νλ€κ³ μκ°νλ κ²½μ° λ€μκ³Ό κ°μ΅λλ€.
var preStr = Handlebars.precompile('{{foo}}');
var pre = (new Function('return ' + preStr)());
var template = Handlebars.template(pre);
νΈλ€λ°μ μ½κ² ν΅ν©λ μ μλ κ² κ°μ΅λλ€.
κ²μΌλ₯΄μ§ μκ³ Handlebars.compileμ ν¨κ³Όμ μΌλ‘ ꡬννκ³ μμ΅λλ€.
νΈμ§. μ¬μ©νλ €λ ν
νλ¦Ώμ 미리 μ»΄νμΌμ μ¬μ©νλ μ΄μ
κ°μ μ¬λ‘?
2015λ
5μ 31μΌ μΌμμΌ μ€ν 4:42 Nathan Witt [email protected]
μΌλ€:
κ·Έκ²μ΄ λ΄κ° λλ €μ λ κ²μ΄λ€. evalμ μ¬μ©νλ λμ
ν¨μ μμ±μλ λμκ² μ€μ λ₯Ό μ 곡νκΈ° μν΄ μ¦μ νΈμΆνμ΅λλ€.
물체. λ€λ₯Έ μ¬λμ΄ μ μ©νλ€κ³ μκ°νλ κ²½μ° λ€μκ³Ό κ°μ΅λλ€.var preStr = Handlebars.precompile('{{foo}}');
var pre = (new Function('return ' + preStr)());
var ν νλ¦Ώ = νΈλ€λ°.ν νλ¦Ώ(μ¬μ );νΈλ€λ°μ μ½κ² ν΅ν©λ μ μλ κ² κ°μ΅λλ€.
β
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ νμΈνμΈμ.
https://github.com/wycats/handlebars.js/issues/1033#issuecomment -107249447
.
μ€ν¬λ¦½νΈλ μ΄λ©μΌ ν νλ¦Ώμ μν κ°λ° λꡬμ λλ€. 미리 μ»΄νμΌλ μμ€λ νλ‘λμ μμ μ¬μ©νκΈ° μν΄ μ λ‘λλμ§λ§ μμ ν λ‘컬 미리 보기λ μμ±ν©λλ€. μ΄λ κ² νλ©΄ κ³΅ν΅ μμ€μμ λ λ€ μ»μ μ μκΈ° λλ¬Έμ μ»΄νμΌμ μ¬μ©νμ§ μκΈ°λ‘ μ ννμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
κ·Έκ²μ΄ λ΄κ° λλ €μ λ κ²μ΄λ€. evalμ μ¬μ©νλ λμ μ€μ κ°μ²΄λ₯Ό μ 곡νκΈ° μν΄ μ¦μ νΈμΆν ν¨μ μμ±μλ₯Ό μ¬μ©νκΈ°λ‘ κ²°μ νμ΅λλ€. λ€λ₯Έ μ¬λμ΄ μ μ©νλ€κ³ μκ°νλ κ²½μ° λ€μκ³Ό κ°μ΅λλ€.
νΈλ€λ°μ μ½κ² ν΅ν©λ μ μλ κ² κ°μ΅λλ€.