Mustache.js: рд╕рднреА рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдмрдЪреЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЕрдЧре░ 2012  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: janl/mustache.js

рдХреНрдпрд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрди рдкреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
рдпрджрд┐ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рдПрдХ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╕ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдмрд┐рдирд╛ рд╕рд╣реЗрдЬреЗ рд▓реМрдЯрд╛ рджреЗрддрд╛ рд╣реИред

рд╕рднреА 14 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрди рдкреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
рдпрджрд┐ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рдПрдХ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╕ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдмрд┐рдирд╛ рд╕рд╣реЗрдЬреЗ рд▓реМрдЯрд╛ рджреЗрддрд╛ рд╣реИред

рд╣рд╛рдБ, рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рднрд░реЛрд╕реЗрдордВрдж рдЗрдирдкреБрдЯ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╢реЗрд╖ рдкрд╛рддреНрд░ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рднрд╛рдЧ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рдерд╛:
If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдЖрдкрдХреЗ рдЪрд░ рдмрдЪ рдЬрд╛рдПрдБ рддреЛ рдЖрдкрдХреЛ рдбрдмрд▓ рдХреЗ рдмрдЬрд╛рдп рдЯреНрд░рд┐рдкрд▓ рдореВрдВрдЫреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╣рд╛рдБ, рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рд╢реЙрд░реНрдЯрдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдЕрддреАрдд рдореЗрдВ рдПрдХ рдЙрд▓реНрдЯреЗ рдПрд╕реНрдХреЗрдк рдкреНрд░рдЬреНрдЮрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИ (mustache.php v1.x, рд░реВрдмреА v0.8ish)ред рдЗрд╕рдиреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ {{ foo }} рдФрд░ {{{ foo }}} рдХреЗ рдЕрд░реНрде рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдпрд╣ рдЖрдИрдПрдирдЖрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреА рддрд░рд╣ рдЧреИрд░-рдПрдЪрдЯреАрдПрдордПрд▓ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдЪрдЯреАрдПрдордПрд▓ рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрдВрдЫреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдмрдЪрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, Mustache.php v2.x рдЗрд╕ рдкреНрд░рдЧрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдХрд╕реНрдЯрдо 'рдПрд╕реНрдХреЗрдк' рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдПрд╕реНрдХреЗрдк рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░ рд╕рдХреЗрдВред function($text) { return $text; } рдХрд░рдирд╛ рдиреЛ-рдСрдк рдореЗрдВ рднрд╛рдЧрдиреЗ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдореНрдо, рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдлрд┐рдЯ рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдпрд╣ рдореВрдВрдЫ.рдЬреЗрдПрд╕ рдореЗрдВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЖрдк рдЙрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЛ рдХрд╣рд╛рдВ рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ?

рдареАрдХ рд╣реИ, рдУрдбрдмреНрд▓реНрдпреВрдПрдПрд╕рдкреА рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдирд╛ рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рд░ рд╕рдордп рдмрдЪрдирд╛ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдИрдЯреАрдП рд╣реИ?

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдореЗрдВ рдкрд╛рд░реНрд╕рд░ рдореЗрдВ рдХреЗрд╡рд▓ {{{ рдФрд░ {{ рдХреЛ рд╕реНрд╡реИрдк рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рдлрд┐рд▓рд╣рд╛рд▓ рдореИрдВ рджреМрдбрд╝рддрд╛ рд╣реВрдВ:

template.replace(/\{\{([^\}]*)\}\}/g, '{{{$1}}}');

рдЗрд╕реЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрд░реЗ рд╕рднреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░, рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдзрд┐рдХ рдмрд┐рд▓реНрдЯ рдЗрди рд╕рд┐рд╕реНрдЯрдо рд╣реЛред рдореБрдЭреЗ @bobthecow рдХрд╛ рд╕реБрдЭрд╛рд╡ рдХрд╛рдлреА рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХреНрд╕рдПрдордПрд▓ рдХреА рдмрдЬрд╛рдп рдЬреЗрдПрд╕рдУрдПрди рдкреНрд░рд╛рд░реВрдк рдЬреИрд╕рд╛ рдкреНрд░рд╛рд░реВрдк рдерд╛ рдЬреИрд╕реЗ рдЖрдк рдЙрджреНрдзрд░рдг/рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо/рдХреЙрд▓рди рдЗрддреНрдпрд╛рджрд┐ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

@janl рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдореИрдВ рджреЛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдкрд╣рд▓рд╛ рдмрдЪ рдирд┐рдХрд▓рд╛, рджреВрд╕рд░рд╛ рдЕрдирдЪрд╛рд╣реЗ?

@bobthecow рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ Mustache.js рдореЗрдВ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рднрд╛рдЧрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ Mustache.escapeHtml рдХреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:

Mustache.escapeHtml = function (text) { return text; }

рдХреНрдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛? рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдк рдмрд╛рдж рдХреЗ рдЖрдордВрддреНрд░рдгреЛрдВ рдкрд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рди рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЖрдк рдЯреНрд░рд┐рдкрд▓-рд╕реНрдЯреИрдЪ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓реЗ рдкрд╛рдПрдВрдЧреЗред

: +1: рдореИрдВ рдЗрд╕реЗ рдЦреЛрджрддрд╛ рд╣реВрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдЕрдХреНрд╖рдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдПрдЪрдЯреАрдПрдордПрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИред рдореБрдЭреЗ рдПрд╕реНрдХреЗрдк/рдиреЛрдПрд╕реНрдХреЗрдк рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ (рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдореВрдВрдЫреЗрдВ.php v2 рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛)ред

рд╣рд╛рдБ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛, рдФрд░ рдореИрдВ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:

Mustache.escapeHtml = function (text) { return text.replace(/\"/g, '\\"'; }

рддрд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╛ рд╡реЗ рд╢реНрд╡реЗрдд-рд╕реВрдЪреАрдХрд░рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ рдЙрди рд╕рднреА рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдЧрд╛ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрди рдкреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{name}}}.
рдпрджрд┐ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк рдПрдХ рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╕ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдмрд┐рдирд╛ рд╕рд╣реЗрдЬреЗ рд▓реМрдЯрд╛ рджреЗрддрд╛ рд╣реИред

рдЕрдиреЗрдХ рдЕрдиреЗрдХ рдзрдиреНрдпрд╡рд╛рдж!! рдпрд╣ рд╕рд╣реА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Immortalin picture Immortalin  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

barbalex picture barbalex  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mbrodala picture mbrodala  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amper5and picture amper5and  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kuldeepdhaka picture kuldeepdhaka  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ