
рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЛ 2 рднрд╛рдЧреЛрдВ (рдХрднреА-рдХрднреА рдЕрдзрд┐рдХ) - рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ред рдЕрдХреНрд╕рд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЕрдкрдиреА рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рдмреИрдХрдПрдВрдб рдФрд░ рдПрдХ рджреГрд╢реНрдпрдкрдЯрд▓ рдореЗрдВ рдХреЛрдб рдХреЗ рдорд╛рдирдХ рд╣рд╛рд░реНрдб рдбрд┐рд╡реАрдЬрди рдкрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рдФрд░ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдХреЛрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░реЗрдЦрд╛ рдирд╣реАрдВ рд╣реИред
рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╡рд┐рдкрдХреНрд╖
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдорд╛рдирдХ рд╡рд┐рднрд╛рдЬрди рдХреЛ 2 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдиреБрдХрд╕рд╛рди рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХрд╛ рдХреНрд╖рд░рдг рд╣реИред рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝реЙрд░реНрдо рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджрд╛рджрд╛рдЬреА рдХреЗ рдЧрд╛рдВрд╡ (рд╕рд░реНрд╡рд░ рдкрд░) рднреЗрдЬрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рд╡рд╣рд╛рдВ, рдЖрдкрдХреЛ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╛рдиреА, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдирдХрд▓ рдХрд░реЗрдВ), рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░реЗрдВ (рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ, рдИ-рдореЗрд▓ рднреЗрдЬреЗрдВ, рдЖрджрд┐)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░реНрд╡рд░ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлреЙрд░реНрдо рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдкреВрд░реЗ рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрдИ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рднреВрдорд┐рдХрд╛рдУрдВ рдХреЛ рдПрдХ рдЯреАрдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмреИрдХреЗрдВрдб рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрдЧрдардирд╛рддреНрдордХ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред
рд╕рдкрдиреЗ рджреЗрдЦрддреЗ рд╣реИрдВ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдПрдХ рдореЙрдбрд▓ рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рдлреЙрд░реНрдо рд╕реЗ рдкреВрд░реЗ рдбреЗрдЯрд╛ рдкрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреЛрдб рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ (рдХреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ):
class MyDataModel {
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореЙрдбрд▓ рдХрд╛ рдкреВрд░рд╛ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рд╣рдорд╛рд░реА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рд╣реИред рдРрд╕реЗ рдХреЛрдб рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдпрд╣рд╛рдВ рдРрд╕реЗ рдлрд╛рдпрджреЗ рд╣реИрдВ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдПрдХ рдореЙрдбрд▓ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдПрдХ рдЬрдЧрд╣ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдЖрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рд░реНрд╡рд░ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдмреИрдХрдПрдВрдб рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рддрд░реАрдХреЛрдВ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрдкреВрд░реНрдг рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯред
- рд▓рдВрдмрд╡рдд рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рдкрд░рд┐рд╕реАрдорди рдХреА рдХреНрд╖реИрддрд┐рдЬ рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдмрджрд▓рдирд╛ред
рдореИрдВ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░реВрдВрдЧрд╛ред рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдЧреНрд░рд╛рд╣рдХ-рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ:

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

рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдирд╛ рдЬреНрдпрд╛рджрд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЧрд▓рддреА рдЬреНрдпрд╛рджрд╛ рд╕рд╣рдирд╢реАрд▓ рд╣реЛрддреА рд╣реИред рд╡рд╛рд╕реНрдпрд╛ рдФрд░ рдлреЗрдбреНрдпрд╛ рд╡рд┐рдирд┐рдореЗрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕ рд╕рдм рдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рд╕рдм рдХреБрдЫ рдЦреЛрдП рдмрд┐рдирд╛ рдЬреЛ рд╣рдореЗрдВ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХрд╛ рдЕрд▓рдЧ рдЕрд╕реНрддрд┐рддреНрд╡ рджреЗрддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдПрдХ рдПрдХреАрдХреГрдд рдЧреНрд░рд╛рд╣рдХ рд╕рд░реНрд╡рд░ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдРрд╕рд╛ рдирд┐рд░реНрдгрдп рд╕рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рд╕реЗ рдЕрддреНрдпрдВрдд рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реЛрдЧрд╛ред рдХрд╛рд░реНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмреИрдХрдПрдВрдб рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдХрд▓ рдХреЛрдб рдЖрдзрд╛рд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдорд╛рдирдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рднреА рдлрд╛рдпрджреЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рдирд┐рд░реНрдгрдп
рдореИрдВ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ, рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдорд╛рдирдХ JS рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдмрд╣реБрдд рдЕрд▓рдЧ рдерд╛: n.js рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ AJAX рдХреЗ рд╕рднреА рдЬрд╛рджреВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (...)ред рдИрдПрд╕-рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ, "рдЖрдпрд╛рдд" рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ Node.js рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рд╣реИ рдФрд░ ES- рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ "--experimental-рдореЙрдбреНрдпреВрд▓" рдзреНрд╡рдЬ рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдпрд╣ рдЖрд╢рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдиреЛрдб рдХреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреБрдЫ рдмрд╣реБрдд рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рдИрдПрд╕-рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░, рдмрд▓реНрдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХрд╛рдЙрдВрдЯрд░-рддрд░реНрдХ рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ)ред
рд╕рдорд╛рдзрд╛рди рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддреАрди рдореБрдЦреНрдп рдХреИрдЯрд▓реЙрдЧ рд╣реИрдВ:
рд╕рдВрд░рдХреНрд╖рд┐рдд - рдмреИрдХрдПрдВрдб;
рдЬрдирддрд╛ - frontend;
рд╕рд╛рдЭрд╛ - рд╕рд╛рдЭрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдореЙрдбрд▓ред
рдПрдХ рдЕрд▓рдЧ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдЭрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреА рд╣реИ рдФрд░, рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддреА рд╣реИ (рд╕рдВрд░рдХреНрд╖рд┐рдд / рд╕рд╛рдЭрд╛ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ / рд╕рд╛рдЭрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ)ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рджреВрдд рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рдореЗрдВ рддрд╛рдЬрд╛ рдиреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЬреЗрдПрд╕ (рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг 11.0.0 рд╣реИ) рдФрд░ рд░реЗрдбрд┐рд╕ (рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдпрд╣рд╛рдВ рдХрд╡рд░ рдирд╣реАрдВ рд╣реИ)ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреНрд▓реЛрди:
git clone https://github.com/Kolbaskin/both-example cd ./both-example npm i
рдкреНрд░реЗрдХреНрд╖рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдЖрд░реЗрдЦ рдореЗрдВ рдкреНрд░реЗрдХреНрд╖рдХ) рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЪрд▓рд╛рдПрдВ:
npm i both-js -g both ./index.mjs
рдпрджрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рддреЛ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рд╕рд╛рдЭрд╛ рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдЬрдм рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рдВрдЧрдд рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░, рдЪреМрдХреАрджрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдЧрд╛ред
рдЖрдк рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рджреВрдд рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ
http://localhost:3000/index.html?token=123&user=Vasya
(рдЯреЛрдХрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдордирдорд╛рдирд╛ рд╣реИрдВ)ред рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ рдЯреЛрдХрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рджреВрд╕рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╣реА рдкреГрд╖реНрда рдЦреЛрд▓реЗрдВред
рдЕрдм рдереЛрдбрд╝рд╛ рдХреЛрдбред
рд╡реЗрдм рд╕рд░реНрд╡рд░
рд╕рдВрд░рдХреНрд╖рд┐рдд / server.mjs
import express from 'express'; import bodyParser from 'body-parser';
рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рд░реНрд╡рд░ рд╣реИ, рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдиреЛрдбреНрд╕ рдореЗрдВ ES рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП mjs рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЧреНрд░рд╛рд╣рдХ
public / index.html
<!DOCTYPE html> <html lang="en"> <head> ... <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="/main.mjs" type="module"></script> </head> <body> ... <ul id="users"> <li v-for="user in users"> {{ user.name }} ({{user.id}}) </li> </ul> <div id="messages"> <div> <input type="text" v-model="msg" /> <button v-on:click="sendMessage()"></button> </div> <ul> <li v-for="message in messages">[{{ message.date }}] <strong>{{ message.text }}</strong></li> </ul> </div> </body> </html>
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ Vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред Vue рдХреЗ рдмрдЬрд╛рдп, рд╡рд╣рд╛рдБ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ (рдиреЙрдХрдЖрдЙрдЯ, рдХреЛрдгреАрдп) рдореЗрдВ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ / main.mjs
main.mjs рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреА рд╣реИред рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рдВрджреЗрд╢ рдлрд╝реАрдб рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реАрдзреЗ index.html рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдбреЗрдЯрд╛ рдореЙрдбрд▓
рд╕рд╛рдЭрд╛ / рд╕рдВрджреЗрд╢ / рдореЙрдбрд▓ / dataModel.mjs
рдпреЗ рдХрдИ рддрд░реАрдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдирд┐рд░реНрджреЗрд╢! #Client рдФрд░! #Sverver рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рднрд╛рдЧ (рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рд╕рд░реНрд╡рд░) рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпреЗ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдкрд╣рд▓реЗ рдЯрд┐рдкреНрдкрдгреА рд╕реНрд▓реИрд╢ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдорд╛рдирдХ IDE рдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╢рдкрде рд▓реЗрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИрдВред
рдкрде рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ & рд░реВрдЯ рд▓реБрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдФрд░ рд░реВрдЯ рдХреЛ рдХреНрд░рдорд╢рдГ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдзрд┐ рд╕реЗ, рдЖрдк рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо "$" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
...
рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдмрд╛рд╣рд░ рд╕реЗ рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рддрд░реАрдХреЛрдВ рдХреА рдУрд░ рдореБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдП рдЙрди рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╣реИрдВред
рдЧреНрд░рд╛рд╣рдХ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ / рд╕рд╛рдЭрд╛ / рд╕рдВрджреЗрд╢ / рдореЙрдбрд▓ / dataModel.mjs)
import Base from '/lib/Base.mjs'; export default class dataModel extends Base { __getFilePath__() {return "messages/model/dataModel.mjs"}
рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рдкрд░, рдореЙрдбрд▓ Vue рд╡рд░реНрдЧ (Base.mjs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдирд┐рдпрдорд┐рдд Vue рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдиреЗ рдореЙрдбрд▓ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ __getFilePath__ рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛, рдЬреЛ рдХреНрд▓рд╛рд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрде рджреЗрддрд╛ рд╣реИ рдФрд░ $ sendMessage рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐ рдХреЛрдб рдХреЛ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдмрджрд▓рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ rpc рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ (рдкреЗрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдореЗрдВ __runSaredFunction рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ (рд╕рдВрд░рдХреНрд╖рд┐рдд / рд╕рд╛рдЭрд╛ / рд╕рдВрджреЗрд╢ / рдореЙрдбрд▓ / dataModel.mjs)
import Base from '../../lib/Base.mjs'; export default class dataModel extends Base { __getFilePath__() {return "messages/model/dataModel.mjs"} ... ...
рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, __getFilePath__ рдкрджреНрдзрддрд┐ рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛! # рд░реЛрдЧреА
рдореЙрдбрд▓ рдХреЗ рджреЛрдиреЛрдВ рдЙрддреНрдкрдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рд╕рднреА рд╣рдЯрд╛рдП рдЧрдП рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЦрд╛рд▓реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбрд┐рдмрдЧрд░ рдкрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЙрдбрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд░реЗрдЦрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреЛрдЬ рд╕рдХреЗред
рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди
рдЬрдм рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреБрдЫ рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдХреЙрд▓ рдПрдХ рд╣реА рдореЙрдбрд▓ рдХреЗ рднреАрддрд░ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
... !#client async sendMessage(e) { await this.$sendMessage(this.msg); this.msg = ''; } !#server async $sendMessage(msg) {
рдЖрдк рджреВрд╕рд░реЗ рдореЙрдбрд▓ рдХреЛ "рдЦреАрдВрдЪ" рд╕рдХрддреЗ рд╣реИрдВ:
import dataModel from "/shared/messages/model/dataModel.mjs"; var msg = new dataModel(); msg.$sendMessage('blah-blah-blah');
рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ, рдЕрд░реНрдерд╛рддреНред рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдЫ рдХреНрд▓рд╛рдЗрдВрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдПрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВред рдпрджрд┐ рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдИрд╡реЗрдВрдЯ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
рдлрд╛рдпрд░рдЗрдирд╡реЗрдВрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ 3 рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддреЗ рд╣реИрдВ: рдШрдЯрдирд╛ рдХрд╛ рдирд╛рдо, рдЬрд┐рд╕реЗ рдпрд╣ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдбреЗрдЯрд╛ред рдЖрдк рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдХреАрд╡рд░реНрдб "рдСрд▓" - рдИрд╡реЗрдВрдЯ рдХреЛ рдЙрди рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдпрд╛ рдРрд░реЗ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЗ рд╕реЗрд╢рди рдЯреЛрдХрди рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдШрдЯрдирд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рд╡рд░реНрдЧ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдмрдВрдзреА рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣реИрдВрдбрд▓рд░ рдЙрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЖрдЧ рд▓рдЧрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдлрд╛рдпрд░рд╡рд░реНрде рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдХреНрд╖реИрддрд┐рдЬ рдмреИрдХреЗрдВрдб рд╕реНрдХреЗрд▓рд┐рдВрдЧ
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдореЙрдбрд▓ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ: рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИред рдЖрдк "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдХрд╣реАрдВ рднреА рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реЗрдм рд╕рд░реНрд╡рд░ (nginx, Apache, рдЖрджрд┐) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рдирдП рдмреИрдХреЗрдВрдб рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд░реЗрдбрд┐рд╕ рдФрд░ рдХреНрдпреВ рдХрддрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╛рдЗрдВрдЯ
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╡рд┐рд╡рд┐рдз рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ - рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ, рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ, рдпрд╣ рд╕рдм рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдиреГрддреНрдп рдХреЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рдХреЙрд▓рд┐рдВрдЧ рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╣реБрдб рдХреЗ рддрд╣рдд рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ рдЖрд░рдкреАрд╕реА рд╣реИред рд╡реЗрдм рд╕рд░реНрд╡рд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдпрд╣ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдПрдХ рдЖрд╡рд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдкреЛрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдо
рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рдХреНрд░рд╛рдВрддрд┐рдХрд╛рд░реА рдмрджрд▓рд╛рд╡ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЖрд░рд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЗрдХрдЯреНрдареЗ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛, рдЖрдкрдХреА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдкреНрд░рдпреЛрдЧ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред