30 ,
24 ,
19 рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐
1 рд▓рд╛рдЗрди
рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╢рд╛рдВрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рднреА рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рд╣рдмрд░ рдХреЗ рд╕реНрд╡рдЪреНрдЫ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдлреАрдХрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореИрдВ рдПрдХ рдЖрдордВрддреНрд░рдг рдЪрд╛рд╣рддрд╛ рдерд╛ , рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░
рдерд╛ ред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рдо рдкрд░ рдореБрдЭреЗ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдирд╛ рд╕реАрдЦрдирд╛ рдкрдбрд╝рд╛ред рдЪреВрдВрдХрд┐ рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рдЫреЛрдЯрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдереЗ рдореЗрдВ рдПрдХ рдиреВрдбрд▓ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдФрд░ рднрдВрдбрд╛рд░рдг рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реЛрдХрд░, рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░, рдХрдо рд╕реЗ рдХрдо, рдореБрдЭреЗ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рдХреБрдЫ рдереНрд░реЗрдб рд░реИрдкрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЧреБрдЧрд▓реА рдХрд░рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдХрдВрдЧреЛ рдорд┐рд▓рд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ (рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдФрд░ рдореИрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреА рдмрд╛рдЗрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдХрдВрдЯреЗрдирд░ рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ:
- LocalStorage рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдоред рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рд╕рд╣рд┐рдд рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред
- рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рддреНрдпрд╛рдкрди (рдпрджрд┐ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИ рддреЛ)ред
- рдЬрдм рдПрдХ рдвреЗрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдвреЗрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦрд░рд╛рдм рд╣реЛрддреА рд╣реИред
- рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХреЛрдВ рдХреЗ рдкреГрдердХреНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛, рдЬрдмрдХрд┐ рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рдПрдХ рдЫреЛрдЯреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЫреЛрдЯреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореБрдЭреЗ 100% рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред
рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ 3 рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ: addStorage, addValidator рдФрд░ addModuleред
addStorage
рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдареАрдХ рд╣реИ, рд▓рд┐рдЦреЛ
app.addStorage('option');
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ app.option () рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк рд╕рдореВрд╣ рд╕реЗ рд╕реНрдерд╛рдиреАрдпрд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ # 2: рд╣рдо рдХрдЯрд▓реЗрдЯ рд╕реЗ рдордХреНрдЦрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдореВрд╣ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ, рд╣рдо рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ)ред app.option () 2 рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ: рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕рдХрд╛ рдореВрд▓реНрдпред рджреВрд╕рд░рд╛ рддрд░реНрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧреА; рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ред рд╣реБрдб рдХреЗ рддрд╣рдд app.option рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдХреЗ рд▓рд┐рдП JSON.stringify рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JSON.parseред
app.option('foo', 'bar');
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, addStorage рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ, рд╣рдо рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдерд╛рдиреАрдпрд╕реНрдЯреЛрд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
app.addStorage('whatever_you_want'); app.whatever_you_want('foo', 'bar');
addValidator
рдпрд╣ рд╡рд┐рдзрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рдЬреЛрдбрд╝рддреА рд╣реИред рдпрд╣ 3 рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ: рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо, рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо, рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк app.option ('foo') рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ foo рдХреЗ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдХреЛрдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
var a = localStorage['option.foo'];
рдпрд╣ рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИред
addModule
addModule рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рд╕рдВрдкреВрд░реНрдг рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ 2 рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ: рдПрдХ рдирд╛рдо рдФрд░ рдПрдХ рд╡рд┐рдзрд┐ рдЬрд┐рд╕рдореЗрдВ рдЧреБрдг рдпрд╛ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВред
app.addModule('foo', { bar: function() {
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдерд╛, рддреЛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХреБрдЫ рдЬрд╛рджреВ рдЬреЛрдбрд╝реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдореЙрдбреНрдпреВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЗрдирд┐рдЯ () рд╡рд┐рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рддрдм рдПрдХ рдореЙрдбреНрдпреВрд▓ (рдЬреИрд╕реЗ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛) рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдореЗрдВ рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрд░реНрдХ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ, рдлреВ рдореЙрдбреНрдпреВрд▓ рдЦреБрдж рдРрдк рдХрдВрдЯреЗрдирд░ рдХреА рдПрдХ рдорд┐рдиреА рдХреЙрдкреА рдмрди рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рдХрд╛рд░реНрдп addStorage, addValidator рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ addModule рдЗрд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ! рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдЗрдП рдЖрд╡реЗрджрди рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХред
this.addStorage('option');
ред рдпрд╣рд╛рдВ рд╣рдордиреЗ i18n рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдпрд╣ i18n рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрд╡реЗрджрди рдореЗрдВ, рдЗрд╕ рд╕рдореВрд╣ рддрдХ рдкрд╣реБрдВрдЪ
app.i18n.option('foo');
рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ
app.i18n.option('foo');
ред рдпрд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ # 2 рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреНрдпрд╛ рдорд┐рд▓рд╛: рдХреЛрдб рдХреА рдПрдХ рд╕реНрдкрд╖реНрдЯ, рд╕реНрдкрд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛, рд╡реИрд╢реНрд╡рд┐рдХ рджрд╛рдпрд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рд▓рдЯрдХрд╛ рдирд╣реАрдВ; рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдореЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛; рд▓реЛрдХрд▓рд╕реНрдЯреЗрдЬ рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдореБрдХреНрдд рдХрд╛рдо - рд╡реЗ рдЬреЛ рдбрд╛рд▓рддреЗ рд╣реИрдВ рд╡рд╣реА рдЙрдиреНрд╣реЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ; рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди - рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд╛ рдФрд░ рднреБрд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛; рдЦреИрд░, рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЫреЛрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗрд╡рд▓ 30 рд▓рд╛рдЗрдиреЗрдВ рд╣реИ :)
рддреНрдпрд╛рдЧ
рдореИрдВ рдЗрд╕ рдХрдВрдЯреЗрдирд░ рдХреА рдХрд┐рд╕реА рднреА 100% рдЬрд░реВрд░рдд рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХрд╛ рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред рдХрд┐рд╕реА рднреА рд░рдЪрдирд╛рддреНрдордХ рддрд░реНрдХ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдХреБрдЫ рд░реЛрдЪрдХ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реЗрдЧреАред
рдХрдВрдЯреЗрдирд░ рдХреЛрдб рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда
var app = { validator: {}, addStorage: function(name) { this[name] = function(key, value) { var local_storage_name = typeof this.name === 'undefined' ? name : this.name + '.' + name; if (typeof value === 'undefined') { var param = typeof localStorage[local_storage_name + '.' + key] !== 'undefined' ? JSON.parse(localStorage[local_storage_name + '.' + key]) : null; if (typeof this.validator[name + '.' + key] !== 'undefined') { param = this.validator[name + '.' + key](param); } return param; } localStorage[local_storage_name + '.' + key] = JSON.stringify(value); }; }, addValidator: function(storage, name, callback) { this.validator[storage + '.' + name] = callback; }, addModule: function(name, object) { object.name = name; object.validator = {}; object.addStorage = this.addStorage; object.addValidator = this.addValidator; object.addModule = this.addModule; this[name] = object; if (typeof this[name].init !== 'undefined') { this[name].init(); } } };