Handlebars.js: NPM Handlebars Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ свои ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированныС Π΄Π°Π½Π½Ρ‹Π΅

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 30 мая 2015  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: handlebars-lang/handlebars.js

Богласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Handlebars , templateSpec , сгСнСрированный Handlebars.precompile() , Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ использован 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

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ я боялся. Однако вмСсто использования eval я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ конструктор Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Π·Π²Π°Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ фактичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит, Ссли ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Π΅ это покаТСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

var preStr = Handlebars.precompile('{{foo}}');
var pre = (new Function('return ' + preStr)());
var template = Handlebars.template(pre);

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Handlebars.

ВсС 4 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку с исходным ΠΊΠΎΠ΄ΠΎΠΌ JavaScript. Он Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для запуска Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ срСдС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ компиляции. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ этот укус, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

Π’ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ я боялся. Однако вмСсто использования eval я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ конструктор Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Π·Π²Π°Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ фактичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит, Ссли ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Π΅ это покаТСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

var preStr = Handlebars.precompile('{{foo}}');
var pre = (new Function('return ' + preStr)());
var template = Handlebars.template(pre);

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Handlebars.

Π’Ρ‹ эффСктивно Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚Π΅ Handlebars.compile Π±Π΅Π· Π»Π΅Π½ΠΈΠ²Ρ‹Ρ…
компиляция. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ для шаблонов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²
Ρ‚ΠΎΡ‚ самый экзСмпляр?
Вс, 31 мая 2015 Π³., 16:42 Натан Π’ΠΈΡ‚Ρ‚, [email protected]
написал:

Π’ΠΎΡ‚ Ρ‡Π΅Π³ΠΎ я боялся. ВмСсто использования eval я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
конструктор Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π·Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²Ρ‹Π·Π²Π°Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΠΌΠ½Π΅ фактичСский
ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит, Ссли ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π΅Ρ‰Π΅ это покаТСтся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ.

var preStr = Handlebars.precompile('{{foo}}');
var pre = (новая функция ('return' + preStr)());
шаблон var = Handlebars.template(pre);

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Handlebars.

β€”
ΠžΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° это письмо Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ просмотритС Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/wycats/handlebars.js/issues/1033#issuecomment-107249447
.

Π‘ΠΊΡ€ΠΈΠΏΡ‚ прСдставляСт собой инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ шаблонов элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ скомпилированный исходный ΠΊΠΎΠ΄ загруТаСтся для использования Π² производствС, Π½ΠΎ я Ρ‚Π°ΠΊΠΆΠ΅ создаю ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр. Π― Ρ€Π΅ΡˆΠΈΠ» Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π° ΠΈΠ· ΠΎΠ±Ρ‰Π΅Π³ΠΎ источника.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ