рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрддреА рд╣реИ рдФрд░ рдХрд╛рдлреА рдЖрджрд┐рдо рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рдХрд╛рд░реНрдп рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реА рдЬрдЯрд┐рд▓рддрд╛ рднреА рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рди рдХрд┐ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рдкреИрдЪ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрдирд╛ред рдкреНрд░рддреНрдпреЗрдХ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдп рд╣рд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗред рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рдмреИрдЪ рдЕрдиреБрд░реЛрдз
- рдПрдХ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдирд╛рдВрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
- рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкрджрдирд╛рдо
- рдлрд╝реЙрд░рд╡рд░реНрдб-рдЯреНрд░рд┐рдк рдбреЗрдЯрд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рддреЗ рд╣реИрдВ, рдмрд╛рд░-рдмрд╛рд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдмрджрд╕реВрд░рдд рдмрд╛рдЗрдХ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл рд╕реЗ рднреА рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
jsonex рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдЯрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рд▓, рдПрдХреАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рдКрдкрд░ рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреНрд░рдпрд╛рд╕ рд╣реИред
рд╕рд╛рдордЧреНрд░реА
jsonexрд╕рдВрдХреЗрддрди рдХреЛ рдмреБрд▓рд╛рдУрдкреНрд░рд╕рдВрдЧрд╕рдВрдЪрд╛рд░ jsonex рдФрд░ рдЬреЗрдПрд╕рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рдбреЗрдЯрд╛ (рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдЯрд╛)рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рджреЗрдЦреЗрдВрдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдбреЗрдЯрд╛ рдХреЗ рд▓рд╛рднHTTP рдФрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрдмрдВрдзреА рдмрд╛рддреЗрдВJSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓рдЖрд░реНрдХрдирд┐рд╖реНрдХрд░реНрд╖jsonex
рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рдФрд░ рдЖрдЧреЗ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐
JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди, рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЙрд╕рдХреЗ рд╢реБрджреНрдзрддрдо рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рджреВрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред
рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдо JSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕реБрдВрджрд░ рд╣реИред рдпрд╣ рд╕рд░рд▓, рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ, рдЖрдкрдХреЛ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдлрд┐рд░ рднреА, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
- рдЯрд┐рдкреНрдкрдгреА рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
- рддрд╛рд░ рдХреЗ рд▓рд┐рдП apostrophes рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
- рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ
- рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдореЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
рд╣рдорд╛рд░реЗ JSON рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕рдВрд╕реНрдХрд░рдг (рдЗрд╕реЗ jsonex рдХрд╣рддреЗ рд╣реИрдВ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
{
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ JSON рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рджреВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрджрд┐рдЧреНрдз рд░реЗрдЦрд╛ рд╣реИ:
dateOfBirth: '1901-01-01',
рдпрд╣ рдХреНрдпрд╛ рд╣реИ рд╕реНрдЯреНрд░рд┐рдВрдЧ? рджрд┐рдирд╛рдВрдХ? рдПрдХ рд╡реНрдпрдХреНрддрд┐ рд╕рдВрджрд░реНрдн рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рд░реНрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рд▓рд╛рдХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рджрд┐рдирд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╛рд░реВрдк рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдбреЗрдЯрд╛ рд╕реНрдХреАрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ, рдпрд╛ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрдд рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдкрд╛рд░реНрд╕рд░ рдХреЛ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
JSON рдХреЛ рд╢реБрд░реВ рдореЗрдВ рдПрдХ рдпреЛрдЬрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реЛрдЧрд╛ рдЬреЛ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдмрддрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдХрд┐ рддрд╛рд░реАрдЦ рдХрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЪрд▓реЗрдВред рдЖрдк рдХрд┐рд╕реА рддрд┐рдерд┐ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рдмрдврд╝рд┐рдпрд╛ рд╣реИред
рд╕рдВрдХреЗрддрди рдХреЛ рдмреБрд▓рд╛рдУ
рд╣рдо рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
dateOfBirth: Date('1901-01-01'),
рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдЕрдм рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдкрд╛рд░реНрдХрд░ рдРрд╕рд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдлреА рд╕реАрдзрд╛ рд╣реИред рдлрд╛рд░реНрдо
SomeName(args...)
рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж
SomeName(args...)
рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЪрд╛рд╣рд┐рдП:
- рдЕрдкрдиреЗ рдбрд┐рдмреНрдмреЗ рдореЗрдВ
SomeName
рдирд╛рдо рдХрд╛ рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди SomeName
- рддрд░реНрдХреЛрдВ рдкрд░ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
args...
- рдореВрд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдмрдЬрд╛рдп рд╕рдВрд╕рд╛рдзрд┐рдд рдбреЗрдЯрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реА
Date('1901-01-01')
рдХреЙрд▓
Date('1901-01-01')
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ
date
, рдкрд╛рдпрдерди рдореЗрдВ
date
рдФрд░
datetime
рдЗрддреНрдпрд╛рджрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдПрдЧреАред
рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдкрд╛рд░реНрд╕рд░ рджрд┐рдП рдЧрдП рдирд╛рдо рдХреЗ рд╕рд╛рде рд╣реИрдВрдбрд▓рд░ рдХреЛ рдирд╣реАрдВ рдвреВрдВрдв рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдпрд╛ рддреЛ рдХреБрдЫ рдЙрдЪрд┐рдд рд▓реМрдЯрд╛рдПрдЧрд╛ рдпрд╛ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ред
рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдбреЗрдЯрд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рдХреЛрдб рдХреЗ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЯреБрдХрдбрд╝реЗ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реИ:
- рдбреЗрдЯрд╛ рдбреЗрдЯрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╣реИ
- рдкрд╛рд░реНрд╕рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
- рдХрд┐рд╕реА рднреА рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдХреНрд░рд┐рдп рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЧреЗ рд╣рдо рдЗрди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдмреАрдЪ, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рд╣рдореЗрдВ рдХреЗрд╡рд▓ рднрдпрд╛рдирдХ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИред рдирдП рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдХрд░, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
var handlers = { Date: function (ctx, v) { return new Date(v); }, Complex: function (ctx, real, imag) { return new Complex(real, imag); }, ArrayBuffer: function (ctx, v) { return base64DecToArr(v).buffer; }, Person: function (ctx, personDataDict) { return new Person(personDataDict); } };
рдпрд╣рд╛рдВ рд╣рдордиреЗ рдмреЗрд╕ 64 рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рджрд┐рдирд╛рдВрдХ, рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛, рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ - рдпрд╣ рд╕рдм рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдб рдХреА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкрд╛рд░реНрд╕рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ред
рдкреНрд░рд╕рдВрдЧ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╣реИрдВрдбрд▓рд░, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛,
ctx
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреНрд░рд╕рдВрдЧ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐
ctx
рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЦрд╛рд▓реА рд╢рдмреНрджрдХреЛрд╖ рд╣реИред рд╕рдВрджрд░реНрдн рдХреЗ рдХрд╛рд░рдг, рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде "рд╕рдВрд╡рд╛рдж" рдХрд░рдиреЗ рджреЗрдВ
- рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд╛рд╕ рдХрд░реЗрдВ
- рдмрд╛рд╣рд░реА рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░реЗрдВ
- рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рд╛рдкреНрдд рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╕рд╣реЗрдЬреЗрдВ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣реИрдВрдбрд▓рд░ рдХреЛ
get
рдФрд░
set
рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
var handlers = {
рд╕рдВрдЪрд╛рд░ jsonex рдФрд░ рдЬреЗрдПрд╕
JSON рдХреА рддрд░рд╣, jsonex JS рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрд╣ рдЬреЗрдПрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХрд╛ рдПрдХ рд╕рд┐рдиреНрдереЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реИ рдФрд░ рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬреЗрдПрд╕ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рдХреЛ рдЧрдгрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
[ foo(), bar.baz()
рдПрдХ рдорд╛рдиреНрдп рдФрд░, рдЕрдзрд┐рдХ, рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬреЗрдПрд╕-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдмрд╢рд░реНрддреЗ рдХрд┐
foo
рдФрд░
bar
рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд▓реЛрдЬрд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ
eval()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ jsonex рд▓реЗрдиреЗ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреБрдЫ рд▓рдЪреАрд▓реЗрдкрди рдХреЛ рдЦреЛ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдЯреАрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, jsonex рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ JS рдХрд╛ рд╕реАрдорд┐рдд рдЙрдкрд╕рдореВрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ jsonex рдбреЗрдЯрд╛ рдХреЛ JS рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рдбреЗрдЯрд╛ (рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдбреЗрдЯрд╛)
Jsonex рдореЗрдВ рдбреЗрдЯрд╛ рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЧрдгрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдЧрдгрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд╡реЗрд░реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
getUsers([1, 15, 7])
рд╕рд░реНрд╡рд░ рдЙрдЪрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
var handlers = { getUsers: function (ctx, userIds) { var listOfUsers = getUsersFromDbOrWhatever(userIds); return listOfUsers; } };
рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдо jsonex рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬреЗрдВ:
[ User({id: 1, name: 'John', ...}), ...]
рдЧреНрд░рд╛рд╣рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдИрдорд╛рдирджрд╛рд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рд╕рд░реНрд╡рд░ jsonex рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдЖрдкрдХреЛ url рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдбрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, GET рдФрд░ POST рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╕рдм рдХреБрдЫ рдЕрдкрдиреЗ рдЖрдк рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рджреЗрдЦреЗрдВ
рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдХреЙрд▓ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред
"getUsers([1, 15, 7])"
рдЬреИрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ jsonex рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдФрд░ рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
var getUsers = function (userIds) { return new jsonex.Call('getUsers', userIds);
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
server.ask( getUsers([1, 15, 7]),
server.ask()
рдХреЛ рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЛ jsonex рдореЗрдВ рдмрджрд▓ рджреЗрдВ
- рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬреЗрдВ
- Jsonex рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
- рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рднреЗрдЬреЗрдВ
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрд╣рд▓рд╛ рддрд░реНрдХ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐
getUsers()
рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдХрд┐ рдЯрд╛рдЗрдк
jsonex.Call
рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
'getUsers([1,15,7])'
рдпрд╣ рд╕рд░рд▓ рдФрд░ рд╕реБрдВрджрд░ рд▓рдЧрддрд╛ рд╣реИред рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рд░реЗрдбреА-рдЯреВ-рдпреВрдЬрд╝ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдЫрд┐рдкрд╛ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЙрдорд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рдм рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред
рдпрджрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рддреНрд░реБрдЯрд┐ рд╡рд░реНрдЧ рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ, рддреЛ
server.ask()
рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛ рджреА рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓рдмреИрдХ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдВрдЫрд┐рдд рд╡рд░реНрдЧ рдХрд╛ рддреИрдпрд╛рд░-рд╕реЗ-рдЙрдкрдпреЛрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
рддрджрдиреБрд╕рд╛рд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕ рдиреЛрдЯреЗрд╢рди рдХреЛ рддреНрд░реБрдЯрд┐ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХрдХреНрд╖рд╛ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:
UnexpectedError('Error details message')
рд╣реИрдВрдбрд▓рд░ рдЙрджрд╛рд╣рд░рдг:
handlers.UnexpectedError = function(ctx, msg) { return new ServerError(msg);
рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдбреЗрдЯрд╛ рдХреЗ рд▓рд╛рдн
рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдбреЗрдЯрд╛ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ:
- рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдорд╛рдирдХреАрдХреГрдд рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ - рдмрд╕ рдЗрдЪреНрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ
- рдкреНрд░рд╛рдердорд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдмреИрдЪ рдЕрдиреБрд░реЛрдз
- рд╕реНрдЯреЗрд░реЙрдпрдб рдмреИрдЪ рдЕрдиреБрд░реЛрдз - рдХреБрдЫ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреВрд╕рд░реЛрдВ рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
- рдЖрд╕рд╛рдиреА рд╕реЗ рд░рд╛рдЙрдВрдб-рдЯреНрд░рд┐рдк рдбреЗрдЯрд╛ рдХреЛ рдлреЙрд░рд╡рд░реНрдб рдХрд░реЗрдВ
- рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рджреЗрдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдХреЛрдИ рднреА рд╣реЗрдбрд░ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬрд┐рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдорд┐рд╢реНрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдПрдХ рдмреИрдЪ рдЕрдиреБрд░реЛрдз, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
[ getFoo(), getBar(1, 2, 3), ]
рдЬрд╡рд╛рдм рдореЗрдВ,
getFoo()
рдФрд░
getBar()
рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рдЖрдПрдЧреАред
рд╣рдо рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХ рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
[ set('x', getUserBooks(17)),
рдЙрддреНрддрд░ рдкреБрд╕реНрддрдХреЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдЗрди рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реЛрдЧреАред
рдиреЛрдЯ: рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЙрд▓рд┐рдВрдЧ
getProps()
рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрди рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреЗрд╢ рдХрд░рддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╢рд╛рдпрдж рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ - рдРрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред
рд░рд╛рдЙрдВрдб-рдЯреНрд░рд┐рдк рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░:
[ 137,
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 137 рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реЛрдЧреА рдФрд░ рдХреБрдЫ рдХреЙрд▓рд┐рдВрдЧ
someRequest()
рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред
рдиреЛрдЯ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд░рд╛рдЙрдВрдб-рдЯреНрд░рд┐рдк рдбреЗрдЯрд╛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдХреБрдЫ рдЕрдкрд╡рд╛рдж
someRequest()
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЕрдВрддрд░рдг:
last(
рдпрд╣рд╛рдБ,
metaInfo()
рдХреЙрд▓ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреБрдЫ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди рдЙрддреНрддрд░ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐
last()
рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рддрд░реНрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ред
HTTP рдФрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
HTTP рдЕрдиреБрд░реЛрдз, рдореБрдЦреНрдп рдбреЗрдЯрд╛ (рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп) рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрде, рд╡рд┐рдзрд┐ рдФрд░ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд░рд┐рдЯрд░реНрди рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред Jsonex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ - рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬрд┐рд╕ рддрд░рд╣ рдЖрдорддреМрд░ рдкрд░ рдмреИрдЪ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЬрдм рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдкреАрдЖрдИ рдХреЛ рдмрд┐рдЦреЗрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рд╣рдореЗрдВ HTTP рдкрджреНрдзрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрд┐рд╕реА рднреА рдХреЙрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рддреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдпрд╛ рдЗрд╕реЗ рдмрджрд▓рдирд╛ред рдлрд┐рд░ рднреА, рд╡рд┐рднрд┐рдиреНрди HTTP рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдФрд░ рдЕрдиреНрдп HTTP рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЙрдЪрд┐рдд рд╕рдВрдЪрд╛рд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдЧрдгрдирд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╣реИрдВрдбрд▓рд░ HTTP рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВрдЧреЗред рд╡рд╣реА рд░рд┐рдЯрд░реНрди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ jsonex рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди HTTP рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЙрдЪрд┐рдд рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдбреЗрдЯрд╛ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдХреЗ рд░реВрдк рдореЗрдВ, HTTP рдЕрдиреБрд░реЛрдз рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдРрд╕рд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ jsonex рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП POST рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХрд┐рд╕реА рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, GET, HEAD рдпрд╛ DELETE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ URL рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рд╕реНрддрд╛ рддрд░реАрдХрд╛ рд╣реИ - рдПрдХрд▓ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ jsonex рдкрд╛рд╕ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
query
ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрдиреБрд░реЛрдз
getUsers([1,2,3])
рдХреЙрд▓ рдХреЛ рдкрддреЗ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛
example.com/api?query=getUsers%28%5B1%2C2%2C3%5D%29
рдпрд╣ рднрдпрд╛рдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рд╣реИ, рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕реЗ рдбреАрдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкреИрдХреЗрдЬрд┐рдВрдЧ рджреЛрдиреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред рдпрджрд┐ рдбрд░рд╛рд╡рдиреЗ рдкрддреЗ рдЕрднреА рднреА рд╢рд░реНрдордирд╛рдХ рд╣реИрдВ, рддреЛ рдЙрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВред
рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк HTTP рд╣реЗрдбрд░ рдФрд░ jsonex рджреЛрдиреЛрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
last( authToken('myAuthToken'),
рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╣реЗрдбрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдирд┐рдпрдорд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЦреБрдж рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП, рд░рд╛рдЙрдВрдб-рдЯреНрд░рд┐рдк рдбреЗрдЯрд╛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рдкрде рдФрд░ рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
HTTP рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╢рд╛рд▓реАрдирддрд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рдЧреБрдг HTTP рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХреБрдЫ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмреЗрд░реЛрдЬрдЧрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдп рдирд╣реАрдВред рдЪреВрдБрдХрд┐ jsonex рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ idempotent рдФрд░ non-idempotent рдХреЙрд▓реНрд╕ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдРрд╕реЗ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдзреНрд╡рдЬ рдХреЛ рд▓рд╛рдж рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрд╡реНрдпрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓ рдореЗрдВ рдЬрд╛рдВрдЪреЗрдВ:
var handlers = { idempotent: function (ctx) { ctx.mustBeIdempotent = true; }, updateUser(ctx, userData) { if (ctx.mustBeIdempotent) { throw new NonIdempotentCallError('updateUser'); } ... } };
рдЕрдиреБрд░реЛрдз рдЙрджрд╛рд╣рд░рдг:
last( idempotent(), [ getUsers([1,2]), updateUser({id:1, ...})
рдХреЙрд▓реЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕реА рдмреЗрдХрд╛рд░ рд╣реИрдВ, рдпрд╣ рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
idempotent()
рд╣рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕
idempotent()
рдХрд┐ рдПрдХ рдЬрдЯрд┐рд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЦрддрд░рдирд╛рдХ рдХреБрдЫ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реБрд░рдХреНрд╖рд╛ рд╕рдВрдмрдВрдзреА рдмрд╛рддреЗрдВ
рд╣реИрдВрдбрд▓рд░ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЦрддрд░рдирд╛рдХ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
- рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреИрдХреЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдПрдХ рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
- рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╕рд┐рд╕реНрдЯрдо рдРрд╕реА рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рдХреНрд╡реЗрд░реА рдХреА рдХреБрд▓ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рд╕реАрдорд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдЧреНрд░рд╛рдл рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдпреЛрдЧреНрдп рд╣реИред рдХрд┐рд╕реА рдЕрдиреБрд░реЛрдз рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдпрджрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд░реЛрдХреЗрдВ:
handlers.expesiveCall = function (ctx, args...) { ctx.cost += calcCost(args...); if (ctx.cost > ctx.costThreshold) { throw new TooExpensiveError(); } ... } };
рд▓рд╛рдЧрдд рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рддрд░реНрдХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХреГрддрд┐ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рдПрдХ рдХрдард┐рди рдХрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рдкрд░ рднреА рдирдЬрд░ рд░рдЦрдиреА рд╣реЛрдЧреАред
рдПрдХ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдХреГрддреНрд░рд┐рдо рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдирд╛ рд╣реИред рдпрджрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЖрдкрдХреЛ рдпрд╣ рдЖрд╕рд╛рди рдФрд░ рд╕рд╕реНрддрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдкреНрд░рд╛рдкреНрдп рдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рддрдереНрдп рдирдП рдЦрддрд░реЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдмрдЪрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрджрд┐ рд╣реИрдВрдбрд▓рд░реНрд╕ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд┐рдВрддрд╛рдЬрдирдХ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрд▓рдЧ, рдЕрд▓рдЧ рд╕реЗрдЯ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реЗрдЯ рдПрдХ рдЕрд▓рдЧ рдкрддреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдХрд░ рд╕рдХреНрд░рд┐рдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд░рдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдИ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреЗрд╡рд▓ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдпрд╛
Date()
рдмрд╣реБрдд рд╣реА рдЖрджрд┐рдо рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВред рдпреЗ рд╣реИрдВрдбрд▓рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдореЙрдбрд▓ рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ, рдЬреЛ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рдорд╣рд╛рди рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕реЗ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡
рдпрджрд┐ рдЖрдк рдЕрднреА jsonex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ - JSON рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди jsonex рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рдХреНрд░рдорд╛рдВрдХрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрднреА рддрдХ рдЗрддрдиреЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ) рд▓реЗрдХрд┐рди рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ jsonex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред jsonex рддреАрди рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ JSON рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
рдкрд╣рд▓рд╛ рдирд┐рдпрдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╕рдВрдкрддреНрддрд┐ рд╣реИ? ' рд╡рд┐рд╢реЗрд╖ рдорд╣рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рдирд┐рдпрдо рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдорд┐рдд рд╢рдмреНрджрдХреЛрд╢ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдП? ' рддреЛ рдпрд╣ рдХреЙрд▓ рд╕рдВрдХреЗрддрди рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдФрд░ рддреАрд╕рд░рд╛ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рд╣реИ, рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдиреЛрдЯреЗрд╢рди рдХреЙрд▓ рдиреЛрдЯреЗрд╢рди рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдПрдХ рд╣реА рддрд░реНрдХ рд╣реИ рдФрд░ рдпрд╣ рддрд░реНрдХ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╣реИред рдпрд╣рд╛рдБ jsonex рдореЗрдВ рдбреЗрдЯрд╛ рдФрд░ JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
Person({
JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡:
{ "?": "Person", "name": "John", "dateOfBirth": {"?": ["Date", "1901-01-01"]}, "i": {"?": ["Complex", 0, 1]}, "d": {"?": ["?", 123]} }
JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдмрд╛рдд рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЖрдк
JSON.parse()
рдорд╛рдирдХ
JSON.parse()
рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдкрд╛рд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛, рдХреБрдЫ рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕реЗ рд╕реАрдзреЗ
JSON.parse () рдХреЛ
рджрд┐рдП рдЧрдП рд░рд┐рд╡рд╛рдЗрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╡рд╣реА JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИ - рдпрд╣
JSON.stringify () рдореЗрдВ рдЙрддреНрддреАрд░реНрдг
рдкреНрд░рддрд┐рдХреГрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдХрдореНрдкреНрдпреВрдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓
рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╕рднреА рдХреЙрд▓ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдереЗред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
[ set('x', getUserBooks(17)), getAuthors(getProps(get('x'), 'authorId')), ]
getUserBooks()
рдФрд░
getAuthors()
рдХреЛ рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, I / O рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реЛред рдЗрд╕рд▓рд┐рдП рд╣рдо рдореМрдХреЗ рдкрд░ рдЙрдирдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рддрдВрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рднреА рд╣рдо рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдирд╣реАрдВред
рд╕рдорд╛рдзрд╛рди рдПрдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЛ рдХрддрд╛рд░рдмрджреНрдз рдХрд░реЗрдЧрд╛, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред рдлрд┐рд░, рд╕рднреА рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рднрд╛рдЧреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рднрд╛рдЧреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдордиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЧрдгрдирд╛ рддреИрдпрд╛рд░ рдереАред
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЕрд╕рд┐рдиреНрдпреВрдХреЗрдпреВ () рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдПрдХ рджрд┐рдП рдЧрдП рд╕реНрддрд░ рдХреЗ рд╕рдорд╛рдирддрд╛ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редрд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рд░реНрдп рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреБрдЫ рдХреЙрд▓ рдХреА рдЧрдгрдирд╛ рджреВрд╕рд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ; рд╣рдо рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ set()
рдЬрдм рддрдХ рд╣рдо рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рддреЗ getUserBooks()
ред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ set()
, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рдЧрдгрдирд╛ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрди рд╕рднреА рдЧрдгрдирд╛рдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рди рдкрд░ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬреИрд╕реЗ рд╣реА рд╡реЗ рддреИрдпрд╛рд░ рд╣реЛрдВ, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ set()
ред рдпрд╣рд╛рдВ рд╣рдо рдареАрдХ рдПрдХ рдЖрд╕реНрдердЧрд┐рдд рдЧрдгрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ - getUserBooks()
рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕рдВрднрд╡ рд╣реИрдВредрд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИред
рдПрдХ рдХреЙрд▓ get()
рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рддрдХ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ set()
ред рдЗрд╕рд▓рд┐рдП, get()
рдпрд╣ рдПрдХ рд╡рд┐рд▓рдВрдмрд┐рдд рдЧрдгрдирд╛ рднреА рдмрди рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рд╕рдордп рд╕реЗ рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ set()
ред рдмрджрд▓реЗ рдореЗрдВ, getProps()
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ get()
, рд▓реЗрдХрд┐рди getAuthors()
рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ getProps()
редрд╣рдорд╛рд░реЗ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рдХреЛ рдЗрди рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рд▓рдВрдмрд┐рдд рдЧрдгрдирд╛рдУрдВ рдХреЛ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредрдЖрд░реНрдХ
рдЖрд░реНрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдФрд░ рдЖрд╢реНрд░рд┐рдд рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдбреЗрдЯрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИред рдЗрдВрдЬрди рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдб рдХреА рдХрдИ рд╕реМ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдЗрд╕рдореЗрдВ рдХреЛрдИ рднреА рдХрдард┐рди рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдмрд╣реБрдд рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИредрдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдЯреЛрдХрди рдХреА рдПрдХ рдзрд╛рд░рд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЯреЛрдХрди рдХреЗрд╡рд▓ JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдзреЗ jsonex рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХреЛрдиреЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╣реИред рдЖрд░реНрдХ Node.js рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ browserify ред рдЪрд╛рдк рдХреЗ рд▓рд┐рдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рдмрд╕ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЛ рдЙрдЪрд┐рдд рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ, рдФрд░ рдЗрдВрдЬрди рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд╕рд╛рд░реА рдореЗрд╣рдирдд рдХрд░реЗрдЧрд╛: handlers.getUserBooks = function (ctx, userId) { return ctx.async(function (cb) { doSomethingAsync(...args, cb); }); };
рдЬрдмрдХрд┐ рдХреЗрд╡рд▓ рдХреЙрд▓рдмреИрдХ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рд╡рд╛рджрд╛ рд╕рдорд░реНрдерди рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг, рд╕рд╛рде рд╣реА jsonex рдореЗрдВ рдХреНрд░рдорд╛рдВрдХрди рдФрд░ JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ редрдЕрдиреБрдкреВрд░рдХрдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ, рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд▓реЗрдЦ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдмрд╛рдж, рдЪрд╛рдк рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛ ред рд╣рдмреНрд░рд╛рд╕ рдореЗрдпрд░реЛрд╡рдк рдиреЗ JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ jsonex рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдорд╛рдирдХ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ JSON.parse()
рдФрд░ рдП + рд╡рд╛рджрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдгJSON.parse()
, рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЗрддрдирд╛ рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ jQuery рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: var parser = new JSONEX.parser({ allow_async: true, functions: { Foo: function() { var result = $.Deferred(); setTimeout(function() { result.resolve("Hello, world!"); }, 1000); return result.promise(); } }}); $.when(parser.parse('[{"?": ["Foo"]}]')) .done(function(result) { console.log(result); });
рдирд┐рд╖реНрдХрд░реНрд╖
Jsonex рдФрд░ arc рджреЛрдиреЛрдВ рдЕрднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдИ рдЧрдИ jsonex рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╢рд╛рдпрдж рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреА, рд▓реЗрдХрд┐рди рдирдП рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗ, рдЬреИрд╕реЗ рдирд╛рдо рд╕реНрдерд╛рди, рдмрд╛рдЗрдирд░реА рдЪрдВрдХ, рд╕реНрдЯреНрд░реАрдо рдФрд░ рд╕реНрдХреЛрдкред рдЖрд░реНрдХ рдореЗрдВ рдХрд╛рдлреА рдмрджрд▓рд╛рд╡ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИредрдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдирд╡реАрдирддрд╛ рдФрд░ рдЧреИрд░-рд░реЛрд▓рд┐рдВрдЧ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред рдлрд┐рд░ рднреА, рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреА рдпрджрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЫрд╛рдкреЛрдВ, рдЕрдиреБрднрд╡реЛрдВ рдФрд░ рдЦреЛрдЬреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рднреА рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред