рд╣рдо рдСрдлрд╝рд▓рд╛рдЗрди рдХрд╛рд░реНрдп рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде Ext JS 4 рдкрд░ MVC рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ


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

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

рдЖрдЬ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - HTML5 рдХрд╛ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЗрд╕ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЯреА 4 рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреИрд╢ (рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреИрд╢)ред рдЗрди рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдерд┐рд░ рдлрд╛рдЗрд▓реЗрдВ (HTML / CSS / JS рдХреЛрдб рдФрд░ рдЪрд┐рддреНрд░) рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рд╣рдо рдПрдХ рдХреЗрдВрджреНрд░реАрдХреГрдд рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╢ рд╕реЗ рд╕реНрдЯреЗрдЯрд┐рдХреНрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рдЗрдВрдЯрд░рдиреЗрдЯ рддрдХ рдкрд╣реБрдВрдЪ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рддреЛ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдкреЗрдЬ URL рдХреЗ рд╕рдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗрдЯрд╡рд░реНрдХ рдПрдХреНрд╕реЗрд╕ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рдгрд╛рд▓реА рдЬреЛ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИред рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА vds Habroeffect рдХреЗ рдиреАрдЪреЗ рди рд╣реЛрдВ) - рдХрдЯ рдХреЗ рдиреАрдЪреЗред рд▓реЗрдЦ рдмрд▓реНрдХрд┐ рдмрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ, рдмрд╣реБрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдирд┐рдХрд▓рд╛ред

рдПрдЪрдЯреАрдПрдордПрд▓ 5


рдпрджрд┐ рдЖрдк рдПрдЪрдЯреАрдПрдордПрд▓ 5 рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ - рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдпрджрд┐ рдирд╣реАрдВ - рддреЛ рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдкреНрд░рдпреБрдХреНрдд рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдорд┐рд▓реЗрдЧрд╛ред

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреИрд╢

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

<html manifest="http://site.ru/names.appcache">тАж</html> 

рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ / рдХреИрд╢-рдореЗрд╕реЗрдлрд╝ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдкрд╛рдЪреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 AddType text/cache-manifest .appcache 

Java рдХреЗ рд▓рд┐рдП web.xml рдЬреЛрдбрд╝реЗрдВ:

 <mime-mapping> <extension>appcache</extension> <mime-type>text/cache-manifest</mime-type> </mime-mapping> 

рд╕рд░рд▓ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 CACHE MANIFEST index.html stylesheet.css images/logo.png scripts/main.js 

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ (CACHE MANIFEST) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ NETWORK рд▓рд╛рдЗрди рдХреЗ рдмрд╛рдж рдЬреЛрдбрд╝реЗрдВ:

 CACHE MANIFEST index.html NETWORK: login.php 

рдЖрдк рдпрд╣рд╛рдБ рдкреНрд░рдХрдЯ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдкрд░ рдХрд░реАрдм рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╢ рдХреЛ рддреАрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдкреНрд░рдХрдЯ рдлрд╝рд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХреИрд╢ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдХреИрд╢ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди: рдХреНрд░реЛрдо 4+, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 4+, рд╕рдлрд╛рд░реА 4+, рдУрдкреЗрд░рд╛ 11+, IE 10, iOS 5+, рдПрдВрдбреНрд░реЙрдЗрдб 3+ред

рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг

рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЖрдХрд╛рд░ рдХреА рд╕реАрдорд╛ 5 рдПрдордмреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЗрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреГрд╖реНрда рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИ - рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рд╕рдВрд░рдЪрдирд╛ рд╣реИ:

 localStorage.setItem('name', 'Hello World!'); localStorage.getItem('name'); localStorage.removeItem('name'); 

рд╕рдорд░реНрдерд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░: рдХреНрд░реЛрдо 5+, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 3.6+, рдУрдкреЗрд░рд╛ 10+, рд╕рдлрд╛рд░реА 4+, IE 8+ред

рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ 4 рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг


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

рдкреНрд░реЗрд░рд┐рдд?


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

рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ, index.html, /app.js рдФрд░ / app / рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред

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

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

рддреЛ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕рдм HTML рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:

 <!--     - Application Cache --> <html manifest="UsersApp.appcache"> <head> <link rel="stylesheet" type="text/css" href="ext-4.0.7-gpl/resources/css/ext-all.css" /> <link rel="stylesheet" type="text/css" href="style.css" /> <script src="ext-4.0.7-gpl/ext-dev.js" type="text/javascript" charset="utf-8"></script> <script src="app.js" type="text/javascript" charset="utf-8"></script> </head> <body style="padding: 25px;"><div id="console"><h2> </h2></div></body> </html> 


рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд╣реИ - рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдХрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлреНрд░реЗрдорд╡рд░реНрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рдХрд╕реНрдЯрдо рд╢реИрд▓рд┐рдпрд╛рдБ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВ, рдПрдХреНрд╕рдЯ рдЬреЗрдПрд╕ рдХрд░реНрдиреЗрд▓ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдРрдкред рдЬреЗрдПрд╕ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЬреЗрдПрд╕ 4 рдПрдХреНрд╕рдЯреНрд░реАрдо рдПрдХ рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдореИрдХреЗрдирд┐рдЬреНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдлреНрд▓рд╛рдИ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдРрдк рдХреА рдХреЗрд╡рд▓ рдПрдХ рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓ред рдЬреЗрдПрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реАрдзреЗ рд╣реА html рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрдирдкреБрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд░рд▓ рд╣реИ:

 //    JS  Ext.Loader.setConfig({ enabled: true, disableCaching: false, paths: {UsersApp: 'app', Ext: 'ext-4.0.7-gpl/src'} }); //  ,     Ext.require(["UsersApp.view.win"]); Ext.application({ name: 'UsersApp', launch: function(){ Ext.create("UsersApp.view.win").show(); }, controllers: ["Main"] }); 

Ext.require () рдирд┐рд░реНрдорд╛рдг рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рд▓реЙрдиреНрдЪ () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ Ext.Loader рдмреВрдЯрд▓реЛрдбрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рд▓реЛрдб рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрддрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХреЛрд╖реЗрд░ рдирд╣реАрдВ рд╣реИ, Ext.Loader рдРрд╕реЗ рдЧреИрд░-рдЗрд╖реНрдЯрддрдо рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ JS рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред Ext.require () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдкрдпреБрдХреНрддрддрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд╛рдо рдЙрд╕ рдкрде рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпреЗ рд╡рд╕реНрддреБрдПрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, UsersApp.store.storeLocal рдСрдмреНрдЬреЗрдХреНрдЯ /app/store/storeLocal.js рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рднреМрддрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдРрдк рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП UsersApp рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╛рдо рдХреА рдореИрдкрд┐рдВрдЧ Ext.Loader рдмреВрдЯрд▓реЛрдбрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реЗрдЯ рд╣реИред

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

рддреЛ, рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди UsersApp.view.win рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдореБрдЦреНрдп рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╣рдореЗрд╢рд╛ рд▓реЙрдиреНрдЪ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

UsersApp.view.win рд╡рд┐рдВрдбреЛ рдХрд╛ рдХреЛрдб рд╕рд░рд▓ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж, рдореБрдЦреНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░, рджреГрд╢реНрдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреИрд╕реЗ рдКрдБрдЪрд╛рдИ-рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдЕрдиреНрдп рдорд╣рддреНрд╡рд╣реАрди рдХреНрд╖рдг рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ):

 Ext.define('UsersApp.view.win', { extend: 'Ext.Window', requires: ['UsersApp.view.grid'], itemId: 'usersWindow', layout: 'fit', items: [ { xtype: 'NamesGridPanel', itemId: 'NamesGrid' } ] }); 

рдпрд╣рд╛рдБ рд╣рдо UsersApp.view.win рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ Standard Ext.Window рд╡рд┐рдВрдбреЛ рдХреЗ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП UsersApp.view.grid рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдХреЛрдб:

 Ext.define('UsersApp.view.grid', { extend: 'Ext.grid.Panel', alias: 'widget.NamesGridPanel', requires: ['Ext.grid.plugin.CellEditing', 'Ext.form.field.*'], itemId: 'usersGrid', //   -      initComponent : function() { //        //    ,  //   CellEditing this.cellEditing = Ext.create('Ext.grid.plugin.CellEditing', { clicksToEdit: 2 }); this.plugins = this.cellEditing; this.columns = this.columnsGet(); this.tbar = this.tbarGet(); //       this.callParent(); }, tbarGet: function(){ return[ { text: '', iconCls: 'add', handler: this._onUserAddClick }, { text: '', iconCls: 'delete', handler: this._onUserDelClick } ] }, columnsGet: function(){ return [ { text: '', field: 'textfield', dataIndex: 'firstName' }, { text : '', field: 'textfield', dataIndex: 'secondName' } ] }, _onUserAddClick: function(button){ //      }, _onUserDelClick: function(button){ //      } }) 

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

рдпрд╣ рджреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ - рд╕рд░реНрд╡рд░ рдФрд░ рд╕реНрдерд╛рдиреАрдпред рдЗрди рджреЛрдиреЛрдВ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдПрдХ рд╣реА рдореЙрдбрд▓ рд╣реЛрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдореАрдкрддрд╛рдПрдВред рдореЙрдбрд▓ UsersApp.model.Names рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ:

 Ext.define('UsersApp.model.Names', { fields: [{name: 'id', type: 'int', useNull: true}, {name: 'firstName'}, {name: 'secondName'}], extend: 'Ext.data.Model', //       ,   validations: [{ type: 'length', field: 'firstName', min: 1 },{ type: 'length', field: 'secondName', min: 1 } ] }); 

рдореЙрдбрд▓ рдореЗрдВ рддреАрди рдХреНрд╖реЗрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ - рд╡реНрдпрдХреНрддрд┐ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдЙрд╕рдХрд╛ рдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдоред рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдирдВрдмрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдорд╛рди рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЕрдиреНрдпрдерд╛, рдпрд╣ 0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛)ред рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рднреА рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ - рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдо рдХрдо рд╕реЗ рдХрдо 1 рд╡рд░реНрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдбреЗрдЯрд╛ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреЛрд░реЗрдЬ рдмрдирд╛рдПрдБ:

 Ext.define('UsersApp.store.store', { extend: 'Ext.data.Store', requires : ['UsersApp.model.Names', 'Ext.data.proxy.Ajax'], model: 'UsersApp.model.Names', proxy: { type: 'ajax', api: { read: 'crud.php?act=read', update: 'crud.php?act=update', create: 'crud.php?act=create', destroy: 'crud.php?act=delete' }, reader: { type: 'json', root: 'names', idProperty: 'id' }, writer: { type: 'json', writeAllFields: false, root: 'names' } } }); 

рддреЛ, рд╕рд░реНрд╡рд░-рд▓реЛрдбрд┐рдВрдЧ рдореЙрдбрд▓ рдХреНрд░рдорд╢рдГ рдмрдирд╛рдП рдЧрдП рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреНрд░рдорд╢рдГ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП "рд░реАрдбрд░" рд░реАрдбрд░ рдФрд░ "рд▓реЗрдЦрдХ" рд▓реЗрдЦрдХ рдХреЗ рд╕рд╛рде рдЕрдЬрд╛рдХреНрд╕ рдкреНрд░реЙрдХреНрд╕реАред рдПрдкреАрдЖрдИ рдкреИрд░рд╛рдореАрдЯрд░ URL рдкрддреЗ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП Ext JS рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдЧрд╛ред

рд╕реНрдерд╛рдиреАрдп рд╕рдВрдЧреНрд░рд╣рдг рдХреЛрдб:

 Ext.define('UsersApp.store.storeLocal', { extend: 'Ext.data.Store', requires : ['UsersApp.model.Names', 'Ext.data.proxy.LocalStorage'], model: "UsersApp.model.Names", proxy: { type: 'localstorage', id : 'Names' } }); 

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

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

 Ext.define("UsersApp.controller.Main", { extend: 'Ext.app.Controller', requires: [ //     - ""  'UsersApp.Utils', 'UsersApp.store.storeLocal', 'UsersApp.store.store' ], init: function(){ //  getStore    , //     -    var storeLocal = this.getStore("storeLocal"); var store = this.getStore("store"); //       ,    //  __   storeLocal.addListener('load', function(){ //    -   // ,     . UsersApp.Utils.ping  //    callback  UsersApp.Utils.ping({ success: this._onPingSuccess, //   failure: this._onPingFailure //   }, this); }, this); //     storeLocal.load(); }, _onPingSuccess: function(){ //   var win = Ext.ComponentQuery.query('#usersWindow')[0]; var storeLocal = this.getStore('storeLocal'); var store = this.getStore('store'); var grid = win.getComponent('NamesGrid'); win.setTitle(", ") //       localCnt = storeLocal.getCount(); //    , // ,    if (localCnt > 0){ //  ,   //      //   for (i = 0; i < localCnt; i++){ var localRecord = storeLocal.getAt(i); var deletedId = localRecord.data.id; delete localRecord.data.id; store.add(localRecord.data); localRecord.data.id = deletedId; } //    store.sync(); //    for (i = 0; i < localCnt; i++){ storeLocal.removeAt(0); } } store.load(); //      grid.reconfigure(store); grid.store.autoSync = true; }, _onPingFailure: function(){ //  ,     var win = Ext.ComponentQuery.query('#usersWindow')[0]; var storeLocal = this.getStore('storeLocal'); var store = this.getStore('store'); var grid = win.getComponent('NamesGrid'); win.setTitle(", ") //      grid.reconfigure(storeLocal); grid.store.autoSync = true; } }); 

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

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

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

рдкреБрдирд╢реНрдЪред рдирдП рд░реБрд╕реНрддрд╡реЗрд▓реА рдПрд▓реНрдмрдо рдХреЗ рд╕рд╛рде рдкрд╛рд░рдЦреА - рдФрд░ рдЧрд░реНрдо рд╕рд░реНрджрд┐рдпреЛрдВ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╢рд╛рдо рдЖрдкрдХреЗ рд▓рд┐рдП :)

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


All Articles