Handlebars.js: рдЯреЗрдмрд▓ рдореЗрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЕрдЧре░ 2013  ┬╖  37рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: handlebars-lang/handlebars.js

http://jsfiddle.net/cwYhN/3/

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╣реА рд╣реИрдВрдбрд▓рдмрд╛рд░ #each рддрдм рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЯреЗрдмрд▓ рдХреЗ рдмрд╛рд╣рд░ред рдореЗрд░реЗ jsfiddle рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдмреЙрд░реНрдбрд░ рд╡рд╛рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реЗрдВрдбрдЧреНрд░рд┐рдб рдХреЗ рдИрдореЗрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рдЗрди рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ Google рдХреА рдУрд░ рд╕реЗ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЛрдб рдХреЛ HTML рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд░рдЦрдирд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред

<table >
  <tbody>
    <!-- {{#each items}} -->
    <tr>
      <td>{{this.key}}</td>
      <td>{{this.value}}</td>
    </tr>
    <!-- {{/each}} -->
  </tbody>
</table>

рдЬреЛ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ

<table>
  <tbody>
    <!--  -->
    <tr>
      <td>my key</td>
      <td>my value</td>
    </tr>
    <!--  -->
    <!--  -->
    <tr>
      <td>my key 2</td>
      <td>my value 2</td>
    </tr>
    <!--  -->
  </tbody>
<table>

(рдиреЛрдЯ: рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реАрдзреЗ рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ Sendgrid рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдкрд╛рджрдХ рдкрд░)

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

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдЕрдЧрд░ {{рдкреНрд░рддреНрдпреЗрдХ}} рдЯреИрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрд╛рд╣рд░ рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдиреНрдп рдЯреИрдЧ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ:

http://jsfiddle.net/cwYhN/6/

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ jQuery рдпрд╛ рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ ... рдЬрдм рдЖрдк console.log(frag); рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ {{#each}} рд╣реЗрд▓реНрдкрд░ рдХреЛ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдЯреЗрдмрд▓ рдХреЗ рдмрд╛рд╣рд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ...

рдореИрдВрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ <script type="text/x-handlebars-template"></script> рдЯреИрдЧ рдХреЗ рдЕрдВрджрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП jsfiddle рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ...

http://jsfiddle.net/doowb/6GdPy/1/

рд╣рд╛рдБ, рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕реНрд╡рдпрдВ:
http://jsfiddle.net/cwYhN/10/

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдПрдХ jQuery рджреЛрд╖ рдХреЗ рдмрдЬрд╛рдп рдЕрдорд╛рдиреНрдп HTML рдорд╛рдирддрд╛ рд╣реИред

рд╣рд╛рдБ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ jQuery рдЪреАрдЬреЗрдВ рдпрд╛ рдореВрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛ рдЬреЛ jQuery рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдпрд╣ {{ }} рдмреАрдЪ tbody рдФрд░ tr ред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЗрд╕ рдмрд╛рдзрд╛ рдХреЗ рднреАрддрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдмрдирд╛рдП рдЬрд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреИрдЧ рдХреЗ рднреАрддрд░ "рдкреНрд░рддреНрдпреЗрдХ" рдХреЛ рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдордЭ рд╣реИ рдХрд┐ рдпрд╣ рдЯреИрдЧ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ:

<table>
  <tbody handlebars="{{each}}">
    ... these get iterated ...
  </tbody>
</table>

рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рддреНрдпреЗрдХ рдХрдерди рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛, рдФрд░ рдпрд╣ рдЙрд╕ рд╕рдорд╛рдкрди рдЯреИрдЧ рдкрд░ рдкрд┐рдЧрдмреИрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд╣ (/ tbody) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╣реА рдмрддрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рдПрдЪрдЯреАрдПрдордПрд▓ рдкрд╛рд░реНрд╕рд░ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдорд╛рд░реНрдХрдЕрдк рд╕реЗ рднреНрд░рдорд┐рдд рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдбреАрдУрдПрдо рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╣реИрдВрдбрд▓рдмрд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

            {{#each activity}}

            {{/each}}
        <table style="border:1px solid #ccc;">
        <thead>
            <tr><th>Month</th>
            <th>Imps</th>
            <th>Clicks</th>
            <th>Spend</th>
        </tr></thead>
        <tbody><tr>
                <th>{{month}}</th>
                <td>{{impressions}}</td><td>{{clicks}}</td><td>{{spend}}</td>
            </tr></tbody>
    </table>

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

рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдореЗрдВ рдмрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдЖрдзрд╛ рджрд┐рди рдмрд░реНрдмрд╛рдж рд╣реЛ рдЧрдпрд╛ рдХрд┐ {{#each}} рдЯреЗрдмрд▓ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдареАрдХ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдЯреЗрдмрд▓ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреИрд╕реЗ рд▓реЛрдб рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@preichelt рдмреНрд░рд╛рдЙрдЬрд░ рдХреЛ рдЯреЗрдмрд▓ рдореЗрдВ {{#each}} рдХреЛ рдЦрд░рд╛рдм рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХреЗ рднреАрддрд░ рд╕реЗ рд╣реИрдВрдбрд▓рдмрд╛рд░ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:

http://stackoverflow.com/questions/15386276/why- should-we-wrap-our-templates-inside-script-blocks

рдЗрд╕ рдмрдЧ рдиреЗ рдореЗрд░реЗ рдЬреАрд╡рди рдХреЗ рджреЛ рдШрдВрдЯреЗ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдП рдФрд░ рдЕрдм рд╢рдирд┐рд╡рд╛рд░ рдХреЛ рд░рд╛рдд рдХреЗ 10:30 рдмрдЬреЗ рд╣реИрдВ, рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдЗрд╕ рдмрдЧ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реА рдФрд░ [рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреНрд▓реЙрдХ рдбреЙрдХреНрдЯрд░]
(http://handlebarsjs.com/builtin_helpers.html) рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рддрд╛ред

рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛, рддреЛ рдпрд╣ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреА рдЧрд▓рддреА рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рдЖрдкрдХреА рдЧрд▓рддреА рд╣реИ рдХрд┐ HTML рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: https://html.spec.whatwg.org/multipage/syntax.html#an -introduction-to-error -рд╣реИрдВрдбрд▓рд┐рдВрдЧ-рдФрд░-рдЕрдЬреАрдм-рдХреЗрд╕-рдЗрди-рдж-рдкрд╛рд░реНрд╕рд░

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

<tr ng-repeat="dto in tableData">

рдФрд░ Angularjs Html рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реВрдк рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ:

<!-- ngRepeat: column in row -->
<tr ng-repeat="dto in tableData">

Angualrjs рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ Html рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдзрд╛рд░рдгрд╛ рд╕реЗ рдмрдЪрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди Handlebarsjs рдХрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП Html рдкрд╛рд░реНрд╕рд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП _рдбреНрдпреВрдЯреА_ рд╣реИ рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рджреБрдирд┐рдпрд╛ рднрд░ рдХреЗ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВред
рд╡реИрд╕реЗ рднреА, рдореИрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореБрджреНрджрд╛ рдЦреЛрд▓реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ _ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореИрдВ рдкрд╣рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реВрдВ рдЬреЛ рдЗрд╕ рд╕рд┐рд░рджрд░реНрдж рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдЖрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЖрдЦрд┐рд░реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред _

рдбреЛрдо рдореЗрдВ рдХреЛрдгреАрдп рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбреЛрдо рдЬрд╛рдЧрд░реВрдХ рд╣реИред рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ DOM рдХреА рдХреЛрдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИред

@profullstack : рдЬреИрд╕рд╛ рдХрд┐ @stevenvachon рдиреЗ рдХрд╣рд╛, рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ HTML рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рдеред рд▓реЗрдХрд┐рди рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдЙрджрд╛рд╣рд░рдг HTML рд╣реИрдВред рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рд░реНрдХрдбрд╛рдЙрди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд░рддрд╛ рд╣реИ ...

рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рдЖрдкрдХреЛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд╛рда рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрджреЗрд╢ ( <script> -рдЯреИрдЧ рдХреЗ рд╕рд╛рде рднрд╛рдЧ рд╕рд╣рд┐рдд, http://handlebarsjs.com/ рдХреЗ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИрдВ

@profullstack рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк "рд╕рдордп рдмрд░реНрдмрд╛рдж" рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░рд╛рд╢ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЖрдкрдХреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рдорд┐рд▓рд╛ рд╣реИред

рдХреЛрдИ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рди рд╣реА рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЖрдкрдХреЗ рдкреНрд░рддрд┐ рдХреЛрдИ рдХрд░реНрддрд╡реНрдп рдирд╣реАрдВ рд╣реИред рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реИрдВрдбрд▓рдмрд╛рд░ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдореБрдлреНрдд рдореЗрдВ рдмрдирд╛рдП рдФрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд▓рдЧрднрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдзрдиреНрдпрд╡рд╛рдж рдХреЗред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдереЗ, рддреЛ рдЖрдкрдХреЗ рдХрд╛рдо рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛?

рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдкрд╣рд▓реЗ рд╣рд╛рде, рдХрд┐ рд╕рд╛рде рдЖрдиреЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрд╡рд░ рдХреЗ рд╕рд╛рде рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд▓рд┐рдЦрдиреЗ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдХреЗ

@ErisDS рдЖрдкрдХреА рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдмрд╣реБрдд рдордЬрдмреВрдд рдереА, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рдмрд╛рдд рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ:

to try to making other developers lives easier

рдФрд░ рдореИрдВ Handlebarsjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Angularjs рдХреЛ рдХреНрдпреЛрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдБ? _рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ Handlebarsjs рдореЗрд░реЗ рдЬреАрд╡рди рдХреЛ Angularjs рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред_
рддреЛ, рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рд╣рдЬрд╛рд░реЛрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдХреБрдЫ рдиреЛрдЯрд┐рд╕ рд╢рдмреНрдж рдЬреЛрдбрд╝реЗрдВ "рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ" рдХреА рдЖрдкрдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИред
рдХреЗ рд▓рд┐рдпреЗ:

No open source project nor contributor has any duty to you.

рд╣рд╛рдБ рдпрд╣ рд╕рдЪ рд╣реЗред рдЖрдк рдПрдХ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдврд╝рддрд╛ рд╣реИ, рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдЕрдзрд┐рдХ рд╕рдордп рдФрд░ рджрд┐рд▓ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдЗрд╕реЗ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдордп рдЖрдк _рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рджреЗрдЦрднрд╛рд▓_ рдФрд░_рдЕрдкрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рджреЗрдЦрднрд╛рд▓_ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред Handlebarsjs рдЗрд╕ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдпрд╣ рдХреЛрдИ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдФрд░ рджреБрдирд┐рдпрд╛ рднрд░ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджрдХреНрд╖рд┐рдг рдХреЛрд░рд┐рдпрд╛ рдореЗрдВ, рдЪреАрди рдореЗрдВ рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЬреАрдердм рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдЙрдирдХреА README.md рдлрд╛рдЗрд▓ рдкрд░ рдЧрд░реНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЕрдкрдиреЗ рдЯреВрд▓ рдФрд░ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рддреЛ рдЕрдЧрд░:

  • рдЖрдк рдЕрдкрдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
  • рдореИрдВ рдЖрдЦрд┐рд░реА рд╡реНрдпрдХреНрддрд┐ рд╣реВрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдКрдВрдЧрд╛
    рдЖрдк рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдХреГрдкрдпрд╛ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдореЗрд░реЗ рддрдХрдиреАрдХреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
    рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ _charity_ рдЬреИрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк рджреБрдирд┐рдпрд╛ рдХреЛ рджреЗрддреЗ рд╣реИрдВ, рдпрд╣ рдЖрдкрдХреЗ рдФрд░ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдмреАрдЪ _рд╕рдВрдЪрд╛рд░ рдкреБрд▓_ рд╣реИред

@nknapp рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдмрд╣реБрдд рдордЬрдмреВрдд рд╣реЛ рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдФрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред
рдкрд╣рд▓реА рдирдЬрд░ рд╕реЗ, рд╣реИрдВрдбрд▓рдмрд╛рд░ _a рдЯреЗрдХреНрд╕реНрдЯ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдЯреВрд▓_ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред рддреЛ рдЬрдм рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ:

{{#each myListData}}
                        <tr>{{name}}</tr>
{{/each}}

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

<tr>nameA</tr>
<tr>nameB</tr>

рд▓реЗрдХрд┐рди рдЬрдм рдПрдЪрдЯреАрдПрдордПрд▓ рдореЗрдВ рдЖрдпрд╛, рддреЛ рдпрд╣ рдХреБрдЫ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдПрдЪрдЯреАрдПрдордПрд▓ рдкрд╛рд░реНрд╕рд░ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИ рдЬреИрд╕рд╛ рдХрд┐
рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рд╕рд╣рд╛рдпрдХ" рдЦрдВрдб рдХреЗ рдиреАрдЪреЗ рдХреЗрд╡рд▓ рдПрдХ рд╡рд╛рдХреНрдп рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛:

WARNING: please use script block when you try to use #each block inside table, due to the know issue of [How HTML parse works(thanks for <strong i="18">@stevenvachon</strong>'s reference](https://html.spec.whatwg.org/multipage/syntax.html#an-introduction-to-error-handling-and-strange-cases-in-the-parser)

рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреА рд░рд╛рдп рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗ рддреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рджред

рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ #each -helper рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рд╕реАрдзреЗ HTML рдореЗрдВ рдХрднреА рднреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд▓реИрдВрдбрд┐рдВрдЧ-рдкреЗрдЬ рдкрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдиреАрдЪреЗ рдЖрдкрдХреА рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд╕рдХреЗрдВ...

рдмрд╕ рдПрдХ рдФрд░ рдиреЛрдЯ:

рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдмреНрд▓реЙрдХ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдмрдкреИрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

@nknapp рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд░рд╛рдп рд╕рд╣реА рд╣реИ: рд╣рдореЗрдВ рдХрднреА рднреА рд╕реАрдзреЗ HTML рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реИрдВрдбрд┐рдВрдЧ-рдкреЗрдЬ рдкрд░, рдкрд╣рд▓реЗ "рдЧреЗрдЯрд┐рдВрдЧ рд╕реНрдЯрд╛рд░реНрдЯреЗрдб" рд╕реЗрдХреНрд╢рди рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдиреАрдЪреЗ рдЧреНрд░реЗ рдмреНрд▓реЙрдХ рдореЗрдВ, рд╣рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ

You **can** deliver a template to the browser by including it in a <script> tag.

рдкреНрд░рддрд┐

You **should always** deliver a template to the browser by including it in a <script> tag.

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕реБрдЭрд╛рд╡:

**never** write a template directly into HTML

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИ, рдФрд░ рдЗрд╕реЗ рд▓реИрдВрдбрд┐рдВрдЧ-рдкреЗрдЬ рдкрд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕рднреА рдЗрд╕рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХреЗрдВ рдФрд░ рдпрд╣ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ?

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ:

<script type="text/x-handlebars">
  {{#each list as |item|}}
    <td>{{item}}</td>
  {{/each}}
</script>

@stevenvachon рд╣рд╛рдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рд╕рд┐рд░реНрдл рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдбрд╛рд▓рдирд╛ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╣реА рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдиреЛрдЯреНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рд╕реБрдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред

рд╢рд╛рдпрдж:

рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрддреНрдкрд╛рджрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рд░реНрд╕рд░ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓реЗрд╢рди рдореЗрдВ рджреЗрдЦреЗрдВред

@stevenvachon рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ HTML рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдВрдХ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦреЗрдВ:

рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрддреНрдкрд╛рджрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рд░реНрд╕рд░ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓реЗрд╢рди рдореЗрдВ рджреЗрдЦреЗрдВред рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ HTML рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреБрдЫ рдЬреНрдЮрд╛рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, #each рдмреНрд▓реЙрдХ рд╣реЗрд▓реНрдкрд░ HTML рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ ред

рдЗрд╕реЗ рд╢рд╛рдпрдж рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

  1. <script> -рдЯреИрдЧ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдареАрдХ рдиреАрдЪреЗ

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдк рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ <script> -рдЯреИрдЧ рдХреЗ рдЕрдВрджрд░ рд░рдЦреЗрдВред рдЗрд╕реЗ рд╕реАрдзреЗ HTML рдореЗрдВ рди рдбрд╛рд▓реЗрдВ рдпрд╛ HTML-рдкрд╛рд░реНрд╕рд░ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ )

  1. рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреБрд▓реЗрдЯ рдкреЙрдЗрдВрдЯ рдХреЛ рдмрджрд▓реЗрдВред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрддреНрдкрд╛рджрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдкреНрд░реАрдХрдВрдкрд╛рдЗрд▓ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред [...]

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЕрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛: рд╡рд╣рд╛рдБ рдХрдИ рдЕрдиреНрдп рд░реВрдкрд░реЗрдЦрд╛рдПрдБ рд╣реИрдВ (рди рдХреЗрд╡рд▓ рдХреЛрдгреАрдп рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдмрд▓реНрдХрд┐ Vue рдФрд░ Ractive)ред рдпрд╣ рд╡реАрдбрд┐рдпреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ ...

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

@nknapp рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  1. рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЕрдВрджрд░ рд░рдЦрдиреЗ рдХрд╛ рдорд╣рддреНрд╡ a

@profullstack рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдиреБрд░рдХреНрд╖рдХ рдирд╣реАрдВ рд╣реВрдВред

рдореИрдВрдиреЗ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рд╣реИрдВред

@nknapp рдзрдиреНрдпрд╡рд╛рдж, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рд╛рдн рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдХрд╛рдлреА рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реЗрдВрдбрдЧреНрд░рд┐рдб рдХреЗ рдИрдореЗрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рдЗрди рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ Google рдХреА рдУрд░ рд╕реЗ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЛрдб рдХреЛ HTML рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд░рдЦрдирд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред

<table >
  <tbody>
    <!-- {{#each items}} -->
    <tr>
      <td>{{this.key}}</td>
      <td>{{this.value}}</td>
    </tr>
    <!-- {{/each}} -->
  </tbody>
</table>

рдЬреЛ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ

<table>
  <tbody>
    <!--  -->
    <tr>
      <td>my key</td>
      <td>my value</td>
    </tr>
    <!--  -->
    <!--  -->
    <tr>
      <td>my key 2</td>
      <td>my value 2</td>
    </tr>
    <!--  -->
  </tbody>
<table>

(рдиреЛрдЯ: рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реАрдзреЗ рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ Sendgrid рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдкрд╛рджрдХ рдкрд░)

рдЙрд╕ рдЯрд┐рдк рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @gurpreetatwal ред рдЖрдкрдиреЗ рдЖрдЬ рд╢рд╛рдо рдореБрдЭреЗ SendGrid рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЯрд┐рдбрдмрд┐рдЯ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдШрдВрдЯреЗ рдмрдЪрд╛рдП!

@gurpreetatwal рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ?

@Lazarencjusz рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреНрдпреЛрдВ рдлрд┐рдХреНрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ SendGrid рдИрдореЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдВрдкрд╛рджрдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдирдорд╕реНрддреЗ! рдЬрдм рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдмрдЬрд╛рдп div рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рдо рд╣реЛрдЧрд╛ред
рд╕рднреА рддрд╛рд▓рд┐рдХрд╛ рддрддреНрд╡реЛрдВ рдХреЛ div рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред

@gurpreetatwal рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП Mailchimp/Mandrills рдкрд░ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЗ рд▓рд┐рдП

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

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

DylanPiercey picture DylanPiercey  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

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