Mustache.js: рдкреИрд░реЗрдВрдЯ рд╕реНрдХреЛрдк рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рджрд┐рд╕ре░ 2014  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: janl/mustache.js

рдкреИрд░реЗрдВрдЯ рд╕реНрдХреЛрдк рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛

рдорд╛рдирддреЗ рд╣реБрдП :

node = {
  id: 1,
  children : [
      { id : 2 },
      { id : 3 }
  ]
}

рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ:

{{ id }} {# will output node.id #}
{{#children}}
    {{children.id}}  {# will output node.children[i].id #}
    {{id}}  {# will also output node.children[i].id #}
{{/children}}

рд╡реИрд╕реЗ рднреА, рдЖрдкрдХреЛ рдХрднреА-рдХрднреА рдореВрд▓ рд╕рдВрдкрддреНрддрд┐ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯреЗрдб рдиреЛрдб рдореЙрдбрд▓ рдореЗрдВ) рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд╛ рджрд╛рдпрд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "../" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рднреВрддрдкреВрд░реНрд╡ :

{{ id }} {# will output node.id #}
{{#children}}
    {{children.id}}  {# will output node.children[i].id #}
    {{id}}  {# will also output node.children[i].id #}
    {{ ../id }}  {# will output node.id #}
{{/children}}

рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

  Context.prototype.lookup = function (name) {
    var cache = this.cache;

    var value;
    if (name in cache) {
      console.log(name + ' found');
      value = cache[name];
    } else {
      var context = this, names, index;

      while (context) {
        if (name.indexOf('.') > 0) {
          value = context.view;
          names = name.split('.');
          index = 0;

          while (value != null && index < names.length)
            value = value[names[index++]];
        } else if(name.match(/^\.\.\//)) {
          name = name.replace(/^\.\.\//, '');
        } else {
          value = context.view[name];
        }

        if (value != null)
          break;

        context = context.parent;
      }

      cache[name] = value;
    }

    if (isFunction(value))
      value = value.call(this.view);

    return value;
  };

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

рд╕рд╣реАред рдореИрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреВрд▓ рдЧрдпрд╛ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдореЗрдВ рдЦреЛ рджреЗрдВред
рдпрд╣ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рд╣реИред

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

рдпрд╣ mustache рдХреЗ рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд╣реИ рдирд╛? рдЗрд╕рдХрд╛ рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИ? рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдИ рднреА рдЗрд╕ рд╕реАрдорд╛ рд╕реЗ рдирд╣реАрдВ рдЯрдХрд░рд╛рдпрд╛ рдерд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЕрдХреНрд╕рд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдЪреАрдЬреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореЗрд░рд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдореЗрд╢рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдХреНрд╕рд░ рдЕрдЬреАрдм рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рджреВрд╕рд░реА рдУрд░, рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдХреА рдмрд╛рдд рдХрд░реЗрдВ; рдЗрд╕ рдХреНрд╖рдорддрд╛ рдХреЗ рд╣реЛрдиреЗ рд╕реЗ рд▓реЛрдЧ рдкрд╛рдЧрд▓ рдкреЗрдЪреАрджрд╛ рдкреИрд░реЗрдВрдЯ рд╕реНрдХреЛрдк рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓реБрднрд╛ рд╕рдХрддреЗ рд╣реИрдВ: {{../../../id}} рдХреЛ {{movieId}} рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред

рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ "../" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрдкрдардиреАрдпрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рддрд░рдл рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрдорд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рджрд╛рдпрд░реЗ рдореЗрдВ рдХреИрдорд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рддрд╛-рдкрд┐рддрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреАрд╡рд░реНрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдореВрдВрдЫ рджрд░реНрд╢рди рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

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

рд╣рд╛рдБ, рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдмрдЪрдиреЗ рд╕реЗ рднреА рдЕрдзрд┐рдХ рдкрдардиреАрдп/рд╡рд░реНрдмреЛрдЬрд╝ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХреНрдпреЛрдВ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП mustache.js рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ? рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреА рддрд░рд╣ред

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

рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ ...

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореВрдВрдЫ рдХрд╛ рджрд░реНрд╢рди рдбреЗрдЯрд╛ _as-is_ рдореЗрдВ рд░реЗрдВрдбрд░рд░ рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдПрдХ рджреГрд╢реНрдп рдореЗрдВ 'рддреИрдпрд╛рд░' рдХрд░рдирд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдиреЛрдбреНрд╕ рдореЗрдВ parentId рд╕рдВрдкрддреНрддрд┐ рд╣реЛрдЧреАред

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

{{ id }}
{{#children}}
    {{children.id}}
    {{id}}
{{/children}}

рдкрд╣рд▓реЗ рдмрдирд╛рдо рдмрд╛рдж

{{ nodeId }}
{{#children}}
    {{ nodeId }}
    {{ parentId }}
{{/children}}

рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ: http://stackoverflow.com/questions/4067093/mustache-read-variables-from-parent-section-in-child-section

(рдЖрдкрдХреЛ @bobthecow рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рдореВрдВрдЫреЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ: рдореБрд╕реНрдХрд╛рди :)

рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдХреЛ рдкрд╣рд▓реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБ {node: ... } рд╕рд╛рде рд▓рдкреЗрдЯрдирд╛ рд╣реИ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ {{#node}}...{{/node}} рд▓рдкреЗрдЯрдирд╛ рд╣реИ рдФрд░ рдлрд┐рд░ {{node.id}} рднрд╛рдЧ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓рдиреЗ (рдФрд░ рдирд╣реАрдВ рдХрд░рдиреЗ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдЙрди рджреЛрдиреЛрдВ "JIT" рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЖрдк to_html() рдЯреЗрдореНрдкрд▓реЗрдЯ...

рдПрдХ рдкреИрдЪреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд╛рдзрд╛рд░рдг 2-рд╕реНрддрд░реАрдп рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдмрд╛рд╣рд░реА рдкрд░рдд рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдлрд╛рдлрд╛ рд▓рдкреЗрдЯрдХрд░ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореЙрдбрд▓ рдЧрд╣рд░рд╛ рд╣реИ? рдЬреЛ рдмрд╛рдЬреАрдЧрд░реА рд▓рдЧрддрд╛ рд╣реИред

рдЕрдХреНрд╕рд░ рдореБрдЭреЗ рдПрдХ рдореЙрдбрд▓ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдореБрдЭреЗ рдирд┐рдЪрд▓реА рдбреЗрдЯрд╛ рдкрд░рддреЛрдВ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдореЗрд░рд╛ рдХрд╛рдо рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИ - рдореБрдЭреЗ рдЗрд╕реЗ рдЗрдВрдлреНрд░рд╛ рд╕реЗ рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдореЙрдбрд▓ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╕рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ - рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ redable property names ред
рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ...
рд╣рд╛рдБ, рд╕рдЪ рд╣реИ, рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдареЛрд╕ рдореЙрдбрд▓ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реИ? рд╕рднреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИрдВред
рдПрдХ рдФрд░ рдкрд░рдд рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдкрд░рдд рдХреЛ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдПрдХ рдЕрдиреБрд╡рд╛рдж рдкрд░рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдЬреЛ рдХрдард┐рди рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ

рдЖрдИрдПрдордПрдЪрдУ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдХрд░рдг рдХреЛ рд░рд╛рдпрд╢реБрджрд╛ рдирд┐рдпрдо рдереЛрдкрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░ рдЪреБрдирд╛рд╡ рдЫреЛрдбрд╝ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП

рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП, @rndme рдЬреЛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

const Mustache = require('mustache')

var view = {
  node: {
    id: 5,
    children: [ { id: 6 }, { id: 7 } ]
  }
}

const template = `
{{#node}}
  children:
  {{#children}}

    id: {{ id }}
    parentId: {{ node.id }}
  {{/children}}
{{/node}}
`

const output = Mustache.render(template, view)
console.log(output)

  children:

    id: 6
    parentId: 5

    id: 7
    parentId: 5

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ latest рд░реВрдк рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди _it рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП_, imo.

const template = `
  children:
  {{#node.children}}

    id: {{ id }}
    parentId: {{ node.id }}
  {{/node.children}}
`

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

рдЕрдлреИрдХ, рдореВрдВрдЫ рдХрд╛ рджрд░реНрд╢рди рд╣рдореЗрд╢рд╛ рдпрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдРрд╕рд╛ рджреГрд╢реНрдп рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдк рд╕реАрдзреЗ рдореЙрдбрд▓ рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

@osher рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдЯрд┐рдк/рдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдмрд╛рдж рдореЗрдВ рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореВрд▓ рд░реВрдк рд╕реЗ - 3 рд╕реНрддрд░реЛрдВ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдордзреНрдп-рд╕реНрддрд░ рдХреЛ рд▓рдкреЗрдЯ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рджреГрд╢реНрдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдк рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╢реАрд░реНрд╖-рд╕реНрддрд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдордзреНрдп рд╕реНрддрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡реИрдЧрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд░реВрдЯ рд╕реНрддрд░, рдкрде рд╕реНрддрд░, рдХреНрд░рд┐рдпрд╛ рд╕реНрддрд░ рд╣реИ (рдФрд░ рдФрд░ рднреА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд░реБрдХреЗрдВ)ред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдПрдХ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - x-uses , рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░рдд рдХреЗ рд▓рд┐рдП рдПрдХ DI рдирд┐рд░реНрджреЗрд╢ рд╣реИред

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

рдЕрдЧрд▓рд╛ред
рдЙрд╕ рдХреЛрдб рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрдВрдЫреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдСрдкрд░реЗрд╢рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдХрд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддрд╛ рд╣реИред
рдРрд╕реЗ рдбреЙрдХрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рдпрд╣ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдирдХрд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдкрдиреЗ DI рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗ рдЗрд╕реЗ рдХрд┐рд╕ рд╕реНрддрд░ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рд╡реИрд╕рд╛ рд╣реА...

рд╢рд╛рд╕реНрддреНрд░реАрдп HTML рдкреАрдврд╝реА рдирд╣реАрдВ - рд╣рд╛рдБред рд▓реЗрдХрд┐рди рдХрд┐рд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ рдореВрдВрдЫреЗрдВ рдХреЗрд╡рд▓ HTML рдХреЗ рд▓рд┐рдП рд╣реИрдВ? рдпрд╣ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рд╣реИ, рдФрд░ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдЖрдорддреМрд░ рдкрд░ рдРрд╕реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;)

рдЖрдк рд╕реАрдзреЗ рдореЙрдбрд▓ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╕реАрдорд╛/рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ

рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛, рдФрд░ рдореИрдВ рдЧреБрдкреНрдд рд╕реЙрд╕ рдХреЛ рдзреЛрдЦрд╛ рджрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдПрдХ рд░рдгрдиреАрддрд┐ рдЦреЗрд▓ рдореЗрдВ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЯреНрд░реА рдбреЗрдЯрд╛-рд╕рдВрд░рдЪрдирд╛ рдорд╛рди рд▓реЗрдВред
рдкреЗрдбрд╝ рд▓рдЧрднрдЧ 5 рд╕реНрддрд░реЛрдВ рддрдХ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
Aliance -> Empire -> City -> Army -> Troops

рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рд╕рдВрд╢реЛрдзрдХ рдмреЛрдирд╕ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдпрд╛ рд╣рдорд▓рд╛ рдмреЛрдирд╕, рд░рдХреНрд╖рд╛ рдмреЛрдирд╕, рд╕реНрд╡рд╛рд╕реНрдереНрдп рдмреЛрдирд╕, рдЖрджрд┐ред
рд╕рдорд╛рди рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╢реЛрдзрдХ рд╕рднреА рд╕реНрддрд░реЛрдВ рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, (рдореБрдЦреНрдпрддрдГ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреА рдЧрдгрдирд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ)ред
рдЖрдкрдХреЛ рдПрдХ рдпреБрджреНрдз-рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╕реЗрдирд╛ рдореЗрдВ рд╕реИрдирд┐рдХреЛрдВ рдХреЗ рдпреБрджреНрдз-рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реЗрдирд╛ рдореЗрдВ рд╕реИрдирд┐рдХреЛрдВ рдХреЗ рдпреБрджреНрдз-рдЖрдВрдХрдбрд╝реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдХреЗ рдХреМрди рд╕реА рд╕реЗрдирд╛ рдЖрджрд░реНрд╢ рд╕реЗрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдбрд╝рд╛рдИ рдПрдХрддреНрд░ рдХрд░реЗрдВ рд╕рдВрд╢реЛрдзрдХ рдЬрд┐рдиреНрд╣реЗрдВ рдкреВрд░реЗ рдкреЗрдбрд╝ рдореЗрдВ рд╕рдорд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рд╕реЗ рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ _рд╡реЗрд░реА_ рд╕рд░рд▓реАрдХреГрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдЪреНрдЪреА рдХрд╣рд╛рдиреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬрд╣рд╛рдВ рдЕрдиреНрдп рдЯреВрд▓ рдиреЗ рдмрдбрд╝реА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдордзреНрдп рдЕрдиреБрд╡рд╛рдж рдкрд░рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗред

рдореИрдВ рдХрдард┐рдирд╛рдИ рдЬреЛрдбрд╝реВрдВрдЧрд╛: рдХрднреА-рдХрднреА рд╕реЗрдирд╛рдПрдВ рдЧрдардмрдВрдзрди-рд╕реНрддрд░реАрдп рдЯрд╛рд╕реНрдХ рдлреЛрд░реНрд╕ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред
Alliance -> Rally -> Troops
рдЙрдкрдХрд░рдг рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдорд╛рдиреНрдп (рд╕рд╛рджрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдареЛрд╕ рд╕реНрддрд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдХрд┐ рдХреМрди рд╕реА рдореВрдВрдЫреЗрдВ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВрдЧреА, рдХреЗрд╡рд▓ рдпрд╣ рдХрд┐ рдореИрдВрдиреЗ рдореВрдВрдЫреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ ...

@ рдУрд╢рд░ рдиреЗ рдХрд╣рд╛:

рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╕реАрдорд╛/рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ

рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╢рдХ рдирд╣реАрдВ рдХрд┐ рдореВрдВрдЫреЛрдВ рдХреА рд░рд╛рдп рд╣реЛрддреА рд╣реИред рдпрд╣ "рддрд░реНрдХ рдХрдо рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕" рджрд░реНрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛/рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рддреЛ рдРрд╕реЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬреЛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд▓реЙрд╢ред рдмрд╕ рдХреБрдЫ рдХрд╛ рдирд╛рдо рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП

рд╕рд╣реАред рдореИрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреВрд▓ рдЧрдпрд╛ред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдореЗрдВ рдЦреЛ рджреЗрдВред
рдпрд╣ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рд╣реИред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ @osher рд╡реНрдпрдВрдЧреНрдпрд╛рддреНрдордХ рд╣реЛ рд░рд╣рд╛ рдерд╛ рдЬрдм рдЙрд╕рдиреЗ рдХрд╣рд╛ "рдпрд╣ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдп рд╣реИред", рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ 2016 рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрдВрдбрд╛рд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореБрдЦреНрдп рднрдВрдбрд╛рд░ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ:
https://github.com/mustache/mustache.github.com/issues/103

рдореИрдВ рдПрдХ рдХреЗ рд▓рд┐рдП рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рддрд░реНрдХ-рд░рд╣рд┐рдд рд╣реИ рдФрд░ рдореВрдВрдЫреЛрдВ рдХреЗ рдЖрджрд░реНрд╢реЛрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рдореБрдЦ "../" рдЬреИрд╕реЗ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рд░реВрдЯ рд╕реНрдХреЛрдк рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ:

Mustache.render('{{a1}}{{#a}}{{b.c}}{{../a1}}{{/a}}',{"a":{"b":{"c":"x1"}},"a1":"x2"})
"x2x1"

рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ "x2x1x2" рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗ рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдЦрд┐рд░реА рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ JSONPath: https://goessner.net/articles/JsonPath/index.html#e2 рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЗ рд▓рд┐рдП XPath рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдкреИрд░реЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛/рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХреЗ рд▓рд┐рдпреЗред

рд╢рд╛рдпрдж рдореВрдВрдЫреЗрдВ рдХреЗрд╡рд▓ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд░рд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдореВрд▓ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП ../ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВ?

AFAIK, рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЗрд╡рд▓ JS рд╣реИ, рдЬрдмрдХрд┐ рдореВрдВрдЫреЗрдВ рдХрдИ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП PHPред рдпрджрд┐ рдЖрдк рдореВрдВрдЫреЛрдВ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдиреНрдп рд╕рднреА рдЧреИрд░-рдЬреЗрдПрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛рдирд╛ рд╣реЛрдЧрд╛; рдмрдбрд╝рд╛ рдЖрджреЗрд╢ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЗрдПрд╕ рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ, рдореБрдЭреЗ "рдПрдХ рд╕реНрддрд░" рддрдХ рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реБрдИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рдВрдЯрд╛ рдореЗрдВ рд░реВрдЯ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рд╛, рдЬреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд

рдЗрд╕ рдкрд░ рдХреБрдЫ?

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

view = { wrap: { txt: "test" } };
{{#wrap}}
  {{wrap.txt}} {{! Should I use this?}}
  {{txt}} {{! Or this?}}
{{/wrap}}

рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ: https://stackoverflow.com/q/62166467/5637701

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