Handlebars.js: рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдирд┐рдлреЗрд╕реНрдЯ v2 eval . рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 25 рдлрд╝рд░ре░ 2013  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: handlebars-lang/handlebars.js

рдореЗрдирд┐рдлреЗрд╕реНрдЯ_рд╡рд░реНрдЬрди рдХреЗ рд╕рд╛рде рдХреНрд░реЛрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ: 2 рдПрдХ рдирдИ рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдХреЗ рдХрд╛рд░рдг рдЬреЛ eval рдФрд░ eval- рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреА рд╣реИред

рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ EvalError: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ 'рдЕрд╕реБрд░рдХреНрд╖рд┐рдд-eval' рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рдЕрдиреБрдордд рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИ: "рд╕реНрдХреНрд░рд┐рдкреНрдЯ-src 'рд╕реНрд╡' рдХреНрд░реЛрдо-рдПрдХреНрд╕рдЯреЗрдВрд╢рди-рд╕рдВрд╕рд╛рдзрди:"ред
рд╣реИрдВрдбрд▓рдмрд╛рд░.рдЬреЗрдПрд╕:1402
JavaScriptCompiler.createFunctionContext handlebars.js:1402
JavaScriptCompiler.compile handlebars.js:1320
рдХрдВрдкрд╛рдЗрд▓ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕.рдЬреЗрдПрд╕:2105
(рдЧреБрдордирд╛рдо рдлрд╝рдВрдХреНрд╢рди) рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕.рдЬреЗрдПрд╕:2112
(рдЕрдирд╛рдо рд╕рдорд╛рд░реЛрд╣) рдкреИрдирд▓.рдЬреЗрдПрд╕:14 <--- рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ Handlebars.compile() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ

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

рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкреВрд░реЗ рдмрд┐рдВрджреБ рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИред

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

рдпрд╣ рдврд╛рдВрдЪреЗ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдРрд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ Google рдкреГрд╖реНрда рд╕реЗ рдПрдХ рдЙрджреНрдзрд░рдг рд╣реИ:

"рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП eval() рдФрд░ eval- рдЬреИрд╕реЗ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ new Function()ред рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЗрд╕ рд╢реИрд▓реА рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рдг рд╣реЛрддреА рд╣реИрдВред _рдЬрдмрдХрд┐ рдХреБрдЫ (рдЬреИрд╕реЗ рдХреЛрдгреАрдп) .js) рд▓реАрдХ рд╕реЗ рд╣рдЯрдХрд░ CSP рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ,_ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рдЕрднреА рддрдХ рдРрд╕реЗ рддрдВрддреНрд░ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ рдЬреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА eval-less рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛рдирд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рд╣реИред"

рддреЛ, рдХреБрдЫ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рд╕реНрдЯрдо рд╕реАрдПрд╕рдкреА-рдЕрдиреБрдкрд╛рд▓рди рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣реИрдВрдбрд▓рдмрд╛рд░ рдирд╣реАрдВ? рддреЛ, рдЕрдм рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдкрдирд╛ рдРрдк рд╕реАрдПрд╕рдкреА-рдЕрдиреБрдкрд╛рд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ:

1) рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХреЛ рд░рд┐рдк рдЖрдЙрдЯ рдХрд░реЗрдВ
2) рдореЗрд░реЗ рд╕рднреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкреНрд░реА-рдХрдВрдкрд╛рдЗрд▓ рдХрд░реЗрдВред

рдореЗрд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреА рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдкреНрд░реА-рдХрдВрдкрд╛рдЗрд▓ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рддреЛ, рдЕрдм рдореБрдЭреЗ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХреЛ рддреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреЛрд╖ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣рд╛рдВ рд╕реАрдПрд╕рдкреА рдЧрд╛рдЗрдб рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ?

"рдЖрдк рдЕрдкрдиреА рд╕реНрд░реЛрдд рд╕реВрдЪреА рдореЗрдВ 'рдЕрд╕реБрд░рдХреНрд╖рд┐рдд-eval' рдЬреЛрдбрд╝рдХрд░ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ"

рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкреВрд░реЗ рдмрд┐рдВрджреБ рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИред

FWIW, Cloudant (рдЕрдкрд╛рдЪреЗ CouchDB рдкрд░ рдЖрдзрд╛рд░рд┐рдд) рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ eval() рдФрд░ new Function() https://console.bluemix.net/docs/services/Cloudant/release_info рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЗрди-рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред

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

рд▓реЗрдХрд┐рди...рдпрд╣ рд╕рд┐рд░реНрдл рдЗрдЪреНрдЫрд╛рдзрд╛рд░реА рд╕реЛрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИред :рд╕реНрдорд╛рдЗрд▓реА:

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

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

nknapp picture nknapp  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ricardograca picture ricardograca  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jlubean picture jlubean  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattkime picture mattkime  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

novwhisky picture novwhisky  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ