Handlebars.js: рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ (рдиреЛрдб рдЬреЗрдПрд╕)

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

рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдкреНрд░реАрдХрдВрдкрд┐рд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ:
var compiledTemplate = handlebars.templates['hello'];
рдореБрдЭреЗ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'рд╣реИрд▓реЛ' рдирд╣реАрдВ рдкрдврд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЬрдмрдХрд┐ рд╕рдВрдХрд▓рди рдиреАрдЪреЗ рдХреА рддрд░рд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
var uncompiledTemplate = handlebars.compile(template);

рддреЛ рдЗрди рд╕рдВрдХрд▓рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрдпрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛/рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝реЗ рдЬрд╛ рд╕рдХреЗрдВ?
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА, рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг (2.0 рдмреАрдЯрд╛) рд╣реИ рдФрд░ рд╕рдВрдХрд▓рдХ рд╕рдВрд╕реНрдХрд░рдг рдЫрд╣ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред

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

@sido420

рдореИрдВ рдкреНрд░реАрдХрдВрдкрд┐рд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореИрдВ HTML рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдФрд░ рдкреИрдХреЗрдЬ рдЖрдХрд╛рд░ ( handlebars/runtime рдЫреЛрдЯрд╛ рд╣реИ) рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ ( mjml -> html -> handlebars precompiled ) рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ:

javascript const Handlebars = require('handlebars') const precompiledContent = Handlebars.precompile('<b>{{ message }}</b>') fs.writeFileSync('xyz/template.js', `module.exports = ${precompiledContent}`, 'utf8')

рдлрд┐рд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

const Handlebars = require('handlebars/runtime') const message = 'Hi' const template = require('./template.js') const content = Handlebars.template(template)({ message })

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

рдпрд╣ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬрд╝рд░реВрд░, рд╣рдо рдпрд╣рд╛рдБ рдЬрд╛рддреЗ рд╣реИрдВред

var template = fs.readFileSync(тАЬ./hello.html", "utf8");
var data = {message : "Hello world!"};

var compileTemplate = handlebars.compile(template);
var finalPageHTML = compileTemplate(data);

// Simply trying to replace the last two lines above with the two below but get error

/* var preCompiledTemplate =  handlebars.templates['hello'];
    var finalPageHTML = preCompiledTemplate(data);
*/

* hello.html *

<html>
    <head>
        <title>Example</title>
    </head>
    <body>
        <p>Oh look, it's a message: {{message}}</p>
    </body>
</html>

рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ hello.handlebars рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ hello.js рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛, рдЗрд╕реЗ рдореЗрд░реА "js" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдиреАрдЪреЗ "рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕" рдирд╛рдордХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ред

рддреЛ рдмрд╕ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдбрд╛рдпрдирд╛рдорд┐рдХ рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рдкреНрд░реАрдХрдВрдкрд┐рд▓реНрдб" рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред

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

var template = require('./hello.handlebars');

рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ "рдкреНрд░реАрдХрдВрдкрд┐рд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ"ред рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВред рд╕рд╣реА ?

рд╣реИрдВрдбрд▓рдмрд╛рд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдПрдХ .js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЕрдВрддрд┐рдо рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП db рдбреЗрдЯрд╛ рдпрд╛ рд╕рдВрджрд░реНрдн рд╕реЗ рднрд░ рдЬрд╛рддреЗ рд╣реИрдВред рд╕рд╣реА ?

рддреЛ рдореИрдВ рдмрд╕ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП "рдЯреЗрдХреНрд╕реНрдЯ/рдПрдЪрдЯреАрдПрдордПрд▓" рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрддрд┐рдо рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рд░рди рдЯрд╛рдЗрдо рдкрд░ рдЕрдкрдиреЗ рдбреАрдмреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдЦрд┐рд▓рд╛рддреЗ рд╣реБрдП рдкреЗрдЬ рдСрдл рдХреЛрд░реНрд╕ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдмрд╕ рд╣реИрд▓реЛ, рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕реЗ рдмрдирд╛рдП рдЧрдП hello.js рд╕реЗ 'рд╣реИрд▓реЛ' рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреИрд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдХрд▓рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ? рдпрд╛ рдореЗрд░реЗ рд╕рднреА рд╕рдВрдХрд▓рд┐рдд рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╡рд╛рд▓реА рд╕рдордЧреНрд░ templates.js рдлрд╝рд╛рдЗрд▓ рд╕реЗ "hello2" рдирд╛рдордХ рдХреЛрдИ рдЕрдиреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╣реЗрдВред рд╡реИрд╕реЗ рдореИрдВрдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЕрдЧрд░ рдореИрдВ рдмреВрдврд╝рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реВрдВред

рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреВрд░реНрд╡-рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВред рд╡реЗ рдиреЛрдб рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

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

@RozzyNoder рд╣рд╛рдп рдореИрдВ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛? рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░реАрдХрдВрдкрд┐рд▓реНрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЬреЗрд╕рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЬреЗрд╕рди рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдЪрдмреАрдПрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВред

рдореИрдВрдиреЗ рдПрдХ рдореГрдд рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдПрдХ рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕рд╛рдЗрдЯ рд╕реЗ рд╣реА

 var templateSpec = Handlebars.precompile('{{foo}}');
 var template = Handlebars.template(templateSpec);
 template({});

рдФрд░ рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬреИрд╕реЗ:
рдирдпрд╛ _Exception2 'рдбрд┐рдлрд╝реЙрд▓реНрдЯ' рдлреЗрдВрдХреЗрдВ

рд╕рдВрдпреЛрдЧ рд╕реЗ, рдпрд╣ рдЧрд▓реНрдк 3.9.0 рдФрд░ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ 3.0.3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рдХрд┐рд╕реА рднреА рдФрд░ рд╕рднреА рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдХреЛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЗрд╕реЗ рдмрд╣реБрдд рдЬрд▓реНрдж рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ (рдЬреИрд╕реЗ рдХрд▓ рдореЗрдВ)

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рджред

@kpdecker рдореИрдВ рд╣реВрдВ ред рдореИрдВ рдПрдХ рд▓реВрдк рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреНрд░реАрдХрдВрдкрд▓рд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреЗрдЬ рд╣реЛ рдЬрд╛рдПрдЧреАред рдЖрдкрдХреА рдХреНрдпрд╛ рд╕рд▓рд╛рд╣ рд╣реИ? рдореБрдЭреЗ рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореБрдЭреЗ рдХрд╣реАрдВ рдПрдХ рдкреЛрд╕реНрдЯ рдорд┐рд▓реА рд╣реИ (рдХрд╣рд╛рдВ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ) рдХрд╣ рд░рд╣реА рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЗрдирдкреБрдЯ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХреНрд╕рдПрд╕рдПрд╕ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@xpepermint рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд▓реВрдк рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

var template = Handlebars.compile("{{title}}\n{{text}}");
largeArray.map(function(element) {
  return template(element);
});

рдмрд╕ рд▓реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдХреЙрд▓ рдХрд░реЗрдВред

@nknapp thx

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдкреНрд░реАрдХрдВрдкрд┐рд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ рдерд╛?

@sido420

рдореИрдВ рдкреНрд░реАрдХрдВрдкрд┐рд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореИрдВ HTML рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмреНрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдФрд░ рдкреИрдХреЗрдЬ рдЖрдХрд╛рд░ ( handlebars/runtime рдЫреЛрдЯрд╛ рд╣реИ) рдХреЛ рдХрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдкреНрд░реАрдХрдВрдкреАрд▓реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ ( mjml -> html -> handlebars precompiled ) рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИред

рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ:

javascript const Handlebars = require('handlebars') const precompiledContent = Handlebars.precompile('<b>{{ message }}</b>') fs.writeFileSync('xyz/template.js', `module.exports = ${precompiledContent}`, 'utf8')

рдлрд┐рд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

const Handlebars = require('handlebars/runtime') const message = 'Hi' const template = require('./template.js') const content = Handlebars.template(template)({ message })

@RozzyNoder @ekskimn рдореИрдВ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд▓реЗрдХрд┐рди рдереЛрдбрд╝реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рдеред рдЖрдкрдХреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ hello.js рд╕рдВрджрд░реНрдн рдХреЗ рдмрдЬрд╛рдп,

var preCompiledTemplate = handlebars.templates['hello']; var finalPageHTML = preCompiledTemplate(data);

рд╡рд╛рд╕реНрддрд╡рд┐рдХ hbs рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдВрджрд░реНрдн рд▓реЗрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ .js рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд

var preCompiledTemplate = handlebars.templates['hello.hbs']

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

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

rizen picture rizen  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

janus-reith picture janus-reith  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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