рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ / рд░рд┐рдбреНрдпреВрдХреНрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓реЗрдЦрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд░реНрдЪрд╛ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдП рдереЗ, рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдФрд░, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдореИрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдмрд┐рдВрджреБ рдкрд░ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдм рд╣рдо рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ?
Redux рдЪрдпрдирдХрд░реНрддрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рд╕реНрдЯреЛрд░) рдХреА рд╕реНрдерд┐рддрд┐ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЪрдпрдирдХрд░реНрддрд╛ reselect createSelector () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрдИ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдЯреЛрд░ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рддрджрдиреБрд╕рд╛рд░, рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЪреНрдЫреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреВрд░реНрдг рд╕реНрдЯреЙрдк рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдПрдХ рдирдХрд▓реА рд╕реНрдЯреЛрд░ рдмрдирд╛рдиреЗ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдПрдХ рдЬрдЯрд┐рд▓ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдЯреЛрд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдЕрдиреНрдп рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ, рддреЛ рд╣рдореЗрдВ рдкреВрд░реНрдг рдпрд╛ рд▓рдЧрднрдЧ рдкреВрд░реНрдг рд░рд╛рдЬреНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдПред
рдпрд╣рд╛рдБ рдЖрдк рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдФрд░ рд░рд╛рдЬреНрдп рдХреЛ рдЙрддрд╛рд░рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Redux devtools рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛;
- рдмрд╕ рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдХрд▓рдо рдХреЗ рд╕рд╛рдеред рдпрджрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рд░рд╛рдЬреНрдп рдореЗрдВ рдХрдИ "рд╢рд╛рдЦрд╛рдПрдБ" рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЬрдЯрд┐рд▓ рдФрд░ рд╢реНрд░рдорд╕рд╛рдзреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд┐рдЪрд╛рд░
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рднреА рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рдж, рд╕рднреА рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- рдШрдЯрдирд╛ (рдХрд╛рд░реНрд░рд╡рд╛рдИ);
- рдЖрд╡реЗрджрди рд░рд╛рдЬреНрдп (рд╕реНрдЯреЛрд░);
- рдЗрд╕ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рд╕рднреА рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо;
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реЛрдЧрд╛: рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдпрд╣ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрдпрдирдХрд░реНрддрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рд░реНрдп рд╕рд░рд▓, рддрдХрдиреАрдХреА рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдпрджрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ (рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЧрддрд╛ рд╣реИ :)), рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди
Redux CheckState рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рднреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЖрдк рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореА рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЪрд▓ рд░рд╣реЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдФрд░ рд╕рд┐рд▓реНрдХрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЫреЛрдЯреЗ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЪрд░рдг 1. рдирд┐рд░реНрдпрд╛рдд рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ, рдЖрдкрдХреЛ checkState.config.js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЙрди рд╕рднреА рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рдирд╕реЗ рдЖрдк рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореЗрд░реА рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
export { selectCategories, selectActiveCategory, selectIsCategoryActive, selectActiveCategoryId, } from "./state/category"; export { selectPopup, selectPopupType, selectIsPopupOpen, } from "./state/popup"; export { selectTasks, selectActiveTasks, selectActiveDoneTasks, selectActiveInProgressTasks, } from "./state/task";
рдЧрд┐рддреБрдм рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВредрдЪрд░рдг 2. рдорд┐рдбрд┐рд▓рд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЕрдм рдЖрдкрдХреЛ рдорд┐рдбрд┐рд▓рд╡реЗрдпрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬреЛ рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдЧрд╛ред
рдХреЛрдб рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ:
import * as selectors from "./checkState.config"; const checkStateMiddleware = (options = {}) => { return window && window["__checkStoreExtension__"] ? window["__checkStoreExtension__"](options) : store => next => action => next(action); };
рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдореЗрдВ, рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдХрд▓реНрдк рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВредрдпрд╣реА рд╣реИ, рдЗрд╕ рдкрд░ рдХреЛрдбрд┐рдВрдЧ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИред рдЕрдм рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдЕрдзрд┐рдХ рдПрдХреНрд╢рди рдЧреЗрдореНрд╕ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рд╣реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЖрдкрдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдЖрдк рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕рд╣реА рд╣реИ - рдмрд╕ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣ рдЕрднреА рднреА рдЖрд╕рд╛рди рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реАрдПрд▓рдЖрдИ рдЙрдкрдХрд░рдг рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ред рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
npm i рдЪреЗрдХ-рд░рд╛рдЬреНрдп-рдЬреА
рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рдЪреЗрдХ-рд╕реНрдЯреЗрдЯ рдкреНрд░рд╛рд░рдВрдн
рдЪреЗрдХ рд╕реНрдЯреЗрдЯ рд╕реАрдПрд▓рдЖрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдвреВрдВрдвреЗрдЧрд╛ рдФрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛ (рдЬрдмрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ)ред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╕реЗ рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЧрдгрдирд╛ рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдЙрдореНрдореАрдж рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рдПрдЧреА (рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╕реЗ рднреА)ред рдпрджрд┐ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рд╣рд░реЗ рд░рдВрдЧ рдХреА рд░реЗрдЦрд╛ рджреЗрдЦреЗрдВрдЧреЗ, рдЕрдЧрд░ рдПрдХ рд▓рд╛рд▓ рд░реЗрдЦрд╛ рд╣реИ, рддреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА:
- рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╛ рдирд╛рдо;
- рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо
- рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдгрд╛рдо;
- рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рд╕реЗ рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯред
рдПрдХ "рдЧрд┐рд░" рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИредрдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдЪрдпрдирдХрд░реНрддрд╛ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
рдЙрджрд╛рд╣рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧрдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЗ рд▓реЗрдЦрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╢рд╛рдпрдж рдЖрдк рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ :)
рдпрджрд┐ рдЖрдк рдЙрдкрдХрд░рдг рдХреЗ рддрдХрдиреАрдХреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
рдореБрдЭреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЦреБрд╢реА рд╣реЛрдЧреА :)