Handlebars.js: рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред

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

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

  • рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╕реНрддреБред
  • рдРрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рд╢реАрд░реНрд╖рдХ, рд╡рд┐рд╡рд░рдг, рдореЗрдЯрд╛)
  • рдорд╛рд░реНрдЧ рдХреА рдЬрд╛рдирдХрд╛рд░реА (рдкрде, рд╣реИрд╢, рдЖрджрд┐)ред

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:

var hbs = require("handlebars");

hbs.registerGlobal({
   title: "myapp"
});

рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╢рд╛рдпрдж @global.title , @title рдпрд╛ рдХреЗрд╡рд▓ title рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рд╡рд┐рдЪрд╛рд░?

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

@kpdecker template(context, {data: {global: global}}) рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдЬреЛ рдирд┐рдХрдЯрддрдо рджреЗрдЦрд╛ рд╣реИ рд╡рд╣ template({}, {data: {level: Handlebars.logger.WARN}}) рд╣реИ

рд▓реЗрдХрд┐рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЗрдирд▓рд╛рдЗрди рд╕рд╣рд╛рдпрдХ рдмрдирд╛рдиреЗ рд╕реЗ рдЖрдк рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

var hbs = require("handlebars");
var myGlobal = {
   title: "myapp"
};

hbs.registerHelper('global', function(key){
  return myGlobal[key];
});
{{! in your template }}
<div>{{global "title"}}</div>

рдФрд░ рдЖрдк myGlobal рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

define('myGlobal', function(){
  return {
    title: "myapp"
  };
});

...
var myGlobal = require('myGlobal');

myGlobal['newKey'] = 'something';

...

var hbs = require("handlebars");
var myGlobal = require('myGlobal');

hbs.registerHelper('global', function(key){
  return myGlobal[key];
});

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдЦрд╛рдореА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЖрдк рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдм рдЖрдк рд╣реИрдВред

рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХреЗ рднреАрддрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд▓рд╛рдн, рдЖрдИрдПрдордУ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдУрд╡рд░рд╣реЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

@rafde рдХреЗ рд╕рд╣рд╛рдпрдХ рд╕реБрдЭрд╛рд╡ рдпрд╛ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЧреНрд▓реЛрдмрд▓ рдкрд╛рд╕ рдХрд░рдиреЗ рдЬреИрд╕реЗ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдКрдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

template(context, {data: {global: global}})

{{@global.foo}} рдореЗрдВ рд╡рд┐рдВрдбреЛ рдкрд░ рд╕рдм рдХреБрдЫ рдмреЗрдирдХрд╛рдм рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@kpdecker template(context, {data: {global: global}}) рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдЬреЛ рдирд┐рдХрдЯрддрдо рджреЗрдЦрд╛ рд╣реИ рд╡рд╣ template({}, {data: {level: Handlebars.logger.WARN}}) рд╣реИ

рд▓реЗрдХрд┐рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдХрдореА рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: https://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1

рдЖрдк рдЧреИрд░-рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдВрдЬреА/рдореВрд▓реНрдп рдЬреЛрдбрд╝реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХреЗ?

glabalPair = {title: "Title"};

https://github.com/wycats/handlebars.js/blob/master/spec/data.js#L1 рдЬрд╡рд╛рдм рдерд╛ред рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рд▓реЗрдХрд┐рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрднреА рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрднреА рддрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рд╣реИ?

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

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

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

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

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

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

jasonh-brimar picture jasonh-brimar  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ