рдХрд╕реНрдЯрдо рдЯреИрдЧ рдХреЗ рд▓рд╛рдн, рдпрд╛ рдореИрдВрдиреЗ HTML рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдХреИрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛

рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╕рдордп рд╕реЗ рдореИрдВ рдорд╛рд╕реНрдХрд╕реНрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ / рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде, рдЗрд╕рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ HTML рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рдШрдЯрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреНрдпрд╛ рдлрд╛рдпрджреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЕрдВрдХреЛрдВ рд╕реЗ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ:

рдЖрдк рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдг - libjs / рдорд╛рд╕реНрдХ , рдФрд░ рдпрд╣рд╛рдБ рдХреЗ рд╕реНрд░реЛрдд - github / рдорд╛рд╕реНрдХ

┬з рдЧрддрд┐


  1. рдЙрддреНрдкрд╛рджрдХрддрд╛

    рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддреБрд░рдВрдд, рдЪреВрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рдкрд╣рд▓рд╛ рд╕рд╡рд╛рд▓ рд╣реЛрддрд╛ рд╣реИ, рд╕рднреА рдлрд╛рдпрджреЗ рдХреЗ рд▓рдВрдмреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕реБрдирддрд╛ рд╣реВрдВ - "рдареАрдХ рд╣реИ, рдЖрдкрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ рдбреЛрдо рдмрд┐рд▓реНрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдкреНрд░рджрд░реНрд╢рди рдЧреНрд░рд╕реНрдд рд╣реИ!"ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрд╕ рд╕рдордп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рддреЗрдЬ рд╣реИ рдЬреЛ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкреЙрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЬрд╛рдПрдВред
    рдЖрдЗрдП рдЙрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдЬреЛ рдкрд╣рд▓реЗ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЗрд╕реНрдкреЗрд░рдл ред
    рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рд╡реЗрдмрдХрд┐рдЯреНрд╕ JavaScriptCore рдФрд░ V8 рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрдХрд▓рди рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдЖрдЧреЗ рд╣реИред
    рдореВрдВрдЫреЗрдВ рдпрд╣рд╛рдВ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреИрд╢ рдХрд░рддреА рд╣реИред

    рд╕рдВрдХрд▓рди / рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЯреЗрдореНрдкреНрд▓реЗрдЯред рдкрд╣рд▓реА рдЬреАрдд

    рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ, рд╣рдо рдлреЙрд░реНрдо рдХрд╛ рдПрдХ JSON рдЯреНрд░реА {tagName:'div',attr:{...},nodes:[...]} ред рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдерд╛ - рднрд╡рд┐рд╖реНрдп рдХреЗ var template = JSON.parse(serializedJsonDom) , рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд▓рдХреНрд╖реНрдп рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ mask.compile JSON.parse - jsperf рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬрд╝ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдпрд╣ рдЕрдзрд┐рдХ рд╣реАрди рдирд╣реАрдВ рд╣реИ рдЖрдЦрд┐рд░реА рд╡рд╛рд▓рд╛ред рдЗрд╕рд▓рд┐рдП рдкреВрд░реНрд╡рдЧрд╛рдореАрддрд╛ рдмреЗрдХрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред

    рдПрдХ рдбреЛрдо рдХрд╛ рдирд┐рд░реНрдорд╛рдгред рджреВрд╕рд░реА рдЬреАрдд

    JSON рдкреЗрдбрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ DocumentFragment рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рддрдм "рд▓рд╛рдЗрд╡" DOM тАЛтАЛрдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рди рдПрдХ рд╕реНрддрд░ рдкрд░ рд╣реИред рдореИрдВ рдПрдХ рд╕рд╛рдл .appendChild(documentFragment) рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдХрд┐ рдПрдХ DocumentFragment рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рднреА рдирдордХред рдФрд░ рдлрд┐рд░, рджрд┐рд▓рдЪрд╕реНрдк .innerHTML рднреА рдпрд╣рд╛рдБ (Chrome) рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╣реАрди рд╣реИред

    рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рднреА рд╣реИ рдХрд┐ рд╣рдо рд╢реБрд░реВ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП jQuery рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕рдм рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИ:
    • рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рд╣рдо рдХрдВрдЯреЗрдирд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ <div id='myWidget'></div>
    • in javascript-e $('#myWidget').myWidgetInit(config);

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

    рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдПрдХ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдбреЛрдо рдмрд┐рд▓реНрдбрд░ рд╣реИред

  2. рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐

    рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереАред рдпрд╣рд╛рдБ, рдореИрдВ рдмрд╕ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдБ рдХрд┐ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЯреИрдЧ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдФрд░ рд╕рд╣рдЬрддрд╛ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЖрдЙрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
     header > menuBar { li target='item1' > 'Item1 Title' li target='item2' > 'Item2 Title' } viewsManager { view#item1 > carousel { img src='img1.png'; img src='img2.png'; } view#item2 > scroller { 'About Content' } } 

    рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ menuBar, viewsManager, scroller, carousel slider рддреИрдпрд╛рд░ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ-рдИ рдореЗрдВ рдФрд░ рдХреБрдЫ рднреА рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддрд╛рдХрд┐ рдореЗрдиреВ рдФрд░ рджреГрд╢реНрдп рд╕реНрд╡рд┐рдЪ рд╣реЛ рдЬрд╛рдПрдВ, рддрд╛рдХрд┐ рд╕реНрдХреНрд░реЙрд▓ рдХрд╛рдо рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЪрд┐рддреНрд░ рдШреВрдореЗрдВред рдХреНрдпрд╛ рдпрд╣ рдкреНрдпрд╛рд░рд╛ рдирд╣реАрдВ рд╣реИ? рдФрд░ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓реЗрдЖрдЙрдЯ рдирд╣реАрдВ рд╣реИ? рдмреЗрд╢рдХ, рдХрдИ рд╡рд┐рдЬреЗрдЯ рдЖрддреНрдо-рдЖрд░рдВрдн рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЛрдо рд░реЗрдбреА рдЗрд╡реЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЯреИрдЧ рдХреА рдЦреЛрдЬ / рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╕рдм рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд "рдУрд╡рд░рд╣реЗрдб" рд╣реИ ред рдпрд╣рд╛рдБ, рд╕рдм рдХреБрдЫ рдЗрд╕реА рдбреЛрдо рдмрд┐рд▓реНрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдЖрдк рдХрд┐рд╕реА рднреА рд╕рдордп рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред



Lers рдЯреИрдЧ рд╣реИрдВрдбрд▓рд░


рдпреЗ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рд╣реИрдВред рдЬрдм рдмрд┐рд▓реНрдбрд░ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЯреИрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ - рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВред рдпрджрд┐ рдХреЛрдИ рднреА рдЯреИрдЧ рдХреЗ рддрд╣рдд рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╣ рд╕реНрд╡рдпрдВ рддрддреНрд╡ рдмрдирд╛рдПрдЧрд╛ред рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯрд╛ "рд╕рд╛рд░ рдФрд░ рди рдХреЗрд╡рд▓" рд╡рд░реНрдЧ рдХрдореНрдкреЛ ( рд╕реНрд░реЛрдд , рдкреНрд░рд▓реЗрдЦрди ) рд╣реИ

Ors рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░


рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреЗрдбрд╝ рдЬреИрд╕рд╛ рд░реЗрдВрдбрд░ рдлреНрд▓реЛ рд╣реИ , рд╣рдореЗрдВ рдПрдХ рдкреВрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рд▓реЗрдЖрдЙрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдорд┐рд▓рддрд╛ рд╣реИред рдореИрдВ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдЯрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдиреАрдЪреЗ рдХреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХреЛ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ - рд╡рд┐рд╡реЗрдХ рдкрд░ рд╣рдо рдирд┐рдЪрд▓реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд╕рд╣реА рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдореЙрдбрд▓ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЖрдЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреИрдЯрд░реНрди рд╣реИред рдпрд╣рд╛рдБ MasterPages (asp.net рд╣реИрд▓реЛ) рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
 layout:master#twoColumnLayout { div.wrap { div.layoutLeft > placeholder#left; div.layoutLeft > placeholder#right; } } layout:view master='twoColumnLayout' { left { /** content */ } right { /** content */ } } 

рдШрдЯрдХ #twoColumnLayout рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рдкрд░ рдФрд░ рдЕрдзрд┐рдХред
рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди - layout.js

Ors рдкреЛрд╕реНрдЯрдкреНрд░реЛрд╕реЗрд╕рд░



рдЙрдиреНрд╣реЗрдВ рдбреЗрдХреЛрд░реЗрдЯрд░ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░реЛ-рд░реЗрдВрдбрд░рд░ рд╣реИ , рд▓реЗрдХрд┐рди рд╕реАрдзреЗ HTMLElement (рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдо DocumentFragment рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╕рднреА рдмрджрд▓рд╛рд╡ рджрд░реНрдж рд░рд╣рд┐рдд рд╣реЛрдВ)ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбрд┐рдЬрд╛рдЗрди рд╕рд╣рд╛рдпрдХ рднреА рд╣реИред рдмрд╛рдЗрдВрдбрд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░:
 div { bind value='name'; bind value='status' attr='class'; } 

рдпрд╣рд╛рдВ, рдкреЛрд╕реНрдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЙрдбрд▓ рдХреЛ div рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
 var person = { name: "Alex", status: "happy" } container.appendChild(mask.renderDom(template, person)); setTimeout(function(){ person.status = 'busy' ; person.name="Anonym" }, 1000); 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рд╕реНрдкрд╖реНрдЯ рд╣реИред рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЬреАрдердм

рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрд▓рдЯрд╛ (рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди)


рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рд╢реАрд░реНрд╖рдХ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ - рдирд╛рдо "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд░реНрджрдирд╛рдХ рд░реВрдк рд╕реЗ рдордЬрдмреВрдд" рд╣реИред рдПрд╣, рдпрд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ ... рдЗрддрдирд╛ рдирд╣реАрдВ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдкреИрдЯрд░реНрди рдкрд╕рдВрдж рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдирд╛рдо рд╣реИ - рдЖрдк рд╢рдХреНрддрд┐ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред рдЧреАрдд рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдЕрдкрдиреЗ рд╡рд┐рд╖рдп рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдордирдорд╛рдиреЗ рдЯреИрдЧ рдирдП рдпрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рднреВрд▓ рдЧрдП рдкреБрд░рд╛рдиреЗ рдкреИрдЯрд░реНрди рдХреЗ рдХреНрд╖рд┐рддрд┐рдЬ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВред
рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛:
 form { propertyEditor value='name'; propertyEditor value='birthday'; propertyEditor value='age'; } 

рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
 mask.registerHandler('propertyEditor', Class({ render: function(values, container, cntx){ var value = Object.getProperty(values, this.attr.value), template; switch(Object.typeOf(value)){ case 'string': template = Object.format('input type="text" value="#{%1}" > bind value="#{%1}" prop="value";',this.attr.value); break; case 'datetime': template = Object.format('datePicker date="%1";', value.toString()); break; /**    */ } mask.renderDom(template, values, container, cntx); }); }} 


рдпрд╣рд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рдЯреИрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЦреБрдж рдХреЛ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╣реА "DIV" - рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрд╕реАрдорд┐рдд рдХреНрд╖рд┐рддрд┐рдЬ рдЦреЛрд▓рддрд╛ рд╣реИ рдкреНрд░рд╕реНрддреБрддрд┐, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИрдВ, рдЙрдирдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

┬з рдЗрдВрд╕реБрд▓реЗрд╢рди


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

┬з рдорд╛рд░реНрдХрдЕрдк - рдореЙрдбрд▓ - рдХреЛрдб - рд╢реИрд▓рд┐рдпрд╛рдБ


рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдорд╛рд░реНрдХрдЕрдк - рдХреЛрдб - рд╕реНрдЯрд╛рдЗрд▓) рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд╕рдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдбреЗрдЯрд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдорд╛рд░реНрдХрдЕрдк рд╕реЗ рддрд░реНрдХ рдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рджреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЕрдиреНрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрди рджреЗрдЦреЗрдВ - рд▓реВрдкреНрд╕, рд╕реНрдерд┐рддрд┐рдпрд╛рдВ, рднрд╛рд╡, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдПрдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ (рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рд▓реЗрдЖрдЙрдЯ рд╣реИ):
 ul > list value='users' > li > '#{name}' 

рдЯреИрдЧ (рдШрдЯрдХ) list; рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдореЙрдбрд▓ рд╕реЗ "users" рд╕рд░рдгреА рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ li > "#{name}" рдПрди (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ .length) рдмрд╛рд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░реЗрдЧрд╛ред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдк рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд▓реЗрдЖрдЙрдЯ рд▓реЗрдЖрдЙрдЯ рд╣реИ, рдХреЛрдб рдХреЛрдб рд╣реИ, рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рд╢реИрд▓рд┐рдпреЛрдВ рд╣реИрдВред рдпрд╣ рд╕рдм рдПрдХ рдиреНрдпреВрдирддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП intertwined рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЗрд╢рдХ, рдпрд╣ рд╕рднреА рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдореИрдВ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реВрдВ, рдФрд░ рдЖрдк рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВред

┬з HTML рд╕реЗ рдмрдЪрдирд╛


рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рджреЗ HTML рд▓рд┐рдЦрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдкреГрд╖реНрда рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рдорд╛рд╕реНрдХ / рдЯреЗрдореНрдкреНрд▓реЗрдЯ" рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рд╣реИ рдЬрд┐рд╕рдХреА рд╕рд╛рдордЧреНрд░реА DOM рдореЗрдВ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдХрдИ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдЯрд╛рдЗрдордкрд┐рдХрд░

рдЕрдЧрд░ рдореИрдВрдиреЗ рдХрд┐рд╕реА рдХреЛ рдирд╛рд░рд╛рдЬ рдХрд┐рдпрд╛ рдпрд╛ рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реБрдИ рддреЛ рдореИрдВ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреНрд░реЛрдо рдореЗрдВ рдПрдХ рдмрдврд╝рд┐рдпрд╛ рд╕реНрдкреИрд╢рд▓ рд╣реИ, рдпрд╣ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж "рдУрд╣ рдпрд╣ рдХреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред"

рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!

Source: https://habr.com/ru/post/In157383/


All Articles