рдХреИрд╕реЗ рдЧреНрд░реАрди рдЬреВрдирд┐рдпрд░ рдиреЗ рдЕрдкрдирд╛ рд╣реЙрдЯ-рд░реАрд▓реЛрдбрд░ рд▓рд┐рдЦрд╛

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


рд▓реЗрдЦрдХ рдХреЗ рд╕реНрддрд░ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдордЭ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рд▓ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБред
рдореЗрд░рд╛ рдирд╛рдо рдпреВрдЬреАрди рд╣реИ рдФрд░ рдореИрдВ рдПрдХ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рдЧреНрд░реАрди рдЬреВрдирд┐рдпрд░ рдлреНрд░рдВрдЯреЗрдВрдб рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВред
рдХреБрдЫ рдФрд░ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдХреЗрд╡рд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдЕрдкрдиреЗ рдкреЗрд╢реЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рджрд┐рд╕рдВрдмрд░ 2018 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬ рд▓рд┐рдпрд╛ рдФрд░ рдЕрднрд┐рдирдп рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
рдХреБрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рдЧрднрдЧ рдЫрд╣ рдорд╣реАрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдлреНрд░рдВрдЯрдПрдВрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдиреМрдХрд░реА рдорд┐рд▓рддреА рд╣реИред рдореИрдВрдиреЗ рдореМрд▓рд┐рдХ рдЪреАрдЬреЗрдВ рд╕реАрдЦреА рд╣реИрдВ (рдореИрдВ рдРрд╕рд╛ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ), js, DOM рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ + reduxред HTML рдФрд░ CSS рдХрдо рд╕реЗ рдХрдо + рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдордЭ, git, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ + рд░рд┐рдбреНрдпреВрдХреНрд╕ рдкрд░ рдПрдХ рдЪреИрдЯ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдирдХреЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдорд╛рдирдХ рдЖрдзреБрдирд┐рдХ рд╕рдЬреНрдЬрди рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИрдВред
рдкрд╣рд▓реЗ рд╣рдлреНрддреЗ рдФрд░ рдПрдХ рдЖрдзреЗ рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╕реНрдерд╛рдкрд┐рдд рдХреА, рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрд░рд┐рдЪрд┐рдд рдФрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВ рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВ: рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде (рдФрд░ "рд╕реАрдЦреЛ" рд╕реВрдЪреА рдореЗрдВ рдЦреБрдж рдХреЛ рдПрдХ рдФрд░ рдмреБрдХрдорд╛рд░реНрдХ рд░рдЦреЛ), рдкреЛрдЯреАрди, рд╡рд┐рдВрдбрд╕реНрдХреНрд░реАрди рдЖрджрд┐ред
рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЗрд╕ рдмрд╛рдзрд╛ рдХреЛрд░реНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдореЛрд░реНрдЪреЗ рдкрд░ рдЬрд╛рдПрдВред

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд░реАрд▓реЛрдбрд░ рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд╣реЗрдмреНрд░рд╛ рдкрд░ рд▓реЛрдЧреЛрдВ рд╕рд╣рд┐рдд рдПрдирд╛рд▓реЙрдЧреНрд╕ рдорд┐рд▓реЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╢реБрд░реБрдЖрдд


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

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

рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд minuses рд╣реИрдВред

рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛: рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреБрдЫ рдкреНрд░рд╛рдЪреАрди рдиреНрдпреВрдирддрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЖрдзреБрдирд┐рдХ рдЬреЗрдПрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдХреЛрдИ рдирд╣реАрдВ () => {}, рдХреЙрдиреНрд╕реНрдЯ рд░реЗрд╕ = [... рдбреЗрдЯрд╛, рд╕рдмрдСрди], async / рдкреНрд░рддреАрдХреНрд╖рд╛ ...

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

рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ред рдмрдирд╛рдП рд░рдЦрд╛ред F5ред рдЕрд╕рд╣рдЬред рджрд░реНрдж? рдкреНрд░рддреНрдпрдХреНрд╖ рджрд░реНрдж рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрд╕рд╣рдЬред

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

рдЪреМрдереА рд╕рдорд╕реНрдпрд╛: рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рд▓рд┐рдмрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ рдФрд░ index.html рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдФрд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА-рд╕рднреА (рд╡реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП)ред
рдФрд░ рд╣рд░ рдЬрдЧрд╣ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рдВрдХреЗрдд рд╣реИрдВред

рдореИрдВ рдХрд╛рд░реНрдпрд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдПрдХ рд╕реБрдВрджрд░ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рд░рд╣рддрд╛ рдерд╛, es6 +, webpack-dev-server, tdd, eslint, automatic build рд╡рдЧреИрд░рд╣ рд╕реЗ рднрд░рд╛ рд╣реБрдЖред

рдФрд░ рдпрд╣рд╛рдБ рд╡рдпрд╕реНрдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИ ...

рдЯрд╛рдИ


рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ, рдореИрдВ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЖрддреНрдо-рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдХрдВрдкрдиреА рдЕрдЪреНрдЫреА рд╣реИ, рд╡рд╛рддрд╛рд╡рд░рдг рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИ, рдореЗрд░реА рдЖрдВрдЦреЛрдВ рдореЗрдВ рдЖрдЧ рд╣реИ!

рдХрд╛рдо рдХреЗ рдШрдВрдЯреЛрдВ рдореЗрдВ рдореИрдВ рдХрд╛рдо рдХреЗ рдХрд╛рдореЛрдВ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрддрд╛ рд╣реВрдВ, рдЕрдкрдиреЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рдореИрдВ рдХреБрдЫ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред

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

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

рд╕рд╛рдл-рд╕реБрдерд░реЗ рдбреИрдбреА рд▓рд┐рдмрд╛рд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реИред рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ: рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреБрд░рд╛рдиреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЦрдирди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдБ - "рддреБрдо рдпрд╣рд╛рдБ рдордд рдЬрд╛рдУ ... рд╕рд┐рд░ рдХреЛ рдХреЛрдб рдорд┐рд▓реЗрдЧрд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░рд╛ рд╣реЛрдЧрд╛ред" рдореИрдВ рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реВрдБ: рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд╣реБрд░реНрд░реЗ! рдЕрдм рдореЗрд░реЗ рдкрд╛рд╕ рдЙрди рд╕рднреА рдЕрдЪреНрдЫреЗ рдирдП рд╕реНрдЯрд╛рдЗрд▓рд┐рд╢ рдЯреНрд░реЗрдВрдбреА рдпреБрд╡рд╛ рдЪреАрдЬреЛрдВ рдХреА рдкрд╣реБрдВрдЪ рд╣реИ! рдкрд╣рд▓реА рдЬреАрддред рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореМрдХреЗ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ e.bat (рдИ-рдПрд╡реЗрдВрдЬ) рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред

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

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

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

рд░реБрдЪрд┐ рдордЬрдмреВрдд рд╣реЛрддреА рд╣реИред

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

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

рдореБрдЦреНрдп рд╢рд░реАрд░


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

рдХрд╛рд░реНрдп: рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВред
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ: рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп index.html рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЖрдкрдХреЛ рдЖрдпрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рдЕрднреА рддрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВред рдПрдХ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдореЗрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ!

рдпрд╣ рд╕рдм рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреЛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рддрдп рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореИрдВ рдПрдХ рдРрд╕реА рддрдХрдиреАрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдХреНрд╖рдо рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдФрд░ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ F5 рд╕реЗ рдмрдЪрд╛рдПрдЧреАред

рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдЧреЗ рдмрдврд╝рддреА рд╣реИ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреА рдПрдХ рджреГрд╖реНрдЯрд┐ рд╕рд┐рд░ рдореЗрдВ рдмрдирддреА рд╣реИред
рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рд░реНрд╡рд░ (рдЬреИрд╕реЗ рд╣рдорд╛рд░рд╛), рдЗрд╕рдореЗрдВ рдореИрдВ рдкреВрд░реЗ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдКрдВрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдВрд╢реЛрдзрди рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдКрдВрдЧрд╛ред

рдлрд┐рд░, рдкреНрд░рддреНрдпреЗрдХ n рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рдореИрдВ рдмрд╛рд░-рдмрд╛рд░ рдмрд╛рдИрдкрд╛рд╕ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдордп рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реВрдВрдЧрд╛ред рдкрд░рд┐рд╡рд░реНрддрд┐рдд - рдкреБрдирдГ рд▓реЛрдбред рдПрдХ рджреЛрд╕реНрдд рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ - "рдкрд╣рд┐рдпрд╛ рдХреЛ рдордЬрдмреВрдд рди рдХрд░реЗрдВ, рдиреЛрдб рдореЗрдВ рдПрдХ рдШрдбрд╝реА рд╣реИред рдЬреЗрдПрд╕"ред рдорд╣рд╛рди, рдореИрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реВрдВрдЧрд╛ред Server.js рдореЗрдВ, рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдкреАрдЫреЗ рдШрдбрд╝реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдХреБрдЫ рдЕрдВрджрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ location.reload () рдХреЛ рдХреЙрд▓ рдХрд░реВрдВрдЧрд╛ред

рдкрд╣рд▓рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐:

server.js
var express = require('express'); var app = express(); var server = require('http').Server(app); const port = 9080; server.listen(port); app.use(express.static(__dirname + '/src')); location.reload(). 


рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рд╕реНрдерд╛рди рд╣реИ- рдпрд╣ рдПрдХ рдиреЛрдб.рдЬреЗрдПрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдирд╣реАрдВ рд╣реИ (рдЗрд╕ рд╕рдордп рдореИрдВ рдЗрд╕ рдмрд╛рдд рдХреА рд╕рдордЭ рд╣рд╛рд╕рд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рдореЗрд░реЗ рдкреНрд░рдпрд╛рд╕ рдХреНрдпреЛрдВ рдереЗред рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рднреА рдЕрд╕рдлрд▓ рдереЗ))ред

рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдордиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдлрд┐рд░ рд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

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

рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ:

server.js
 var express = require('express'); //  express var app = express(); var server = require('http').Server(app); //  http  app var io = require('socket.io')(server); //  socket.io     var fs = require('fs'); const port = 9080; server.listen(port); app.use(express.static(__dirname + '/src')); let count = 0; app.get('/data', (req, res) => { res.data = count; res.send(`${count}`); }) const dir = './src'; fs.watch(dir, () => { io.emit('change', {data: count}); count += 1; }) 


рдореЛрд░реНрдЪреЗ рдкрд░ рдореИрдВ angularjs рдкрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдРрдк рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

app.js
 angular.module('App', []) .controller('myAppCtrl',['$scope', '$timeout','$http', ($scope, $timeout, $http) => { $scope.title = '       '; $scope.count = 0; $scope.todo = [ '  ,  ', '   node.js watch   ', '     ,         ', ' , codeclimate  travis   ' ] $scope.marks = [ 'watcher      ' ] // var socket = io(); // socket.on('change', (data) => { // console.log(data.data); // $scope.count = data.data; // console.log('scope.count: ', $scope.count); // $scope.$digest();// // location.reload();//agfr // }) $http({method: 'GET',url: 'data'}) .then(response => { $scope.count = response.data;// }); }]) 


рдФрд░ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдЗрд╕реЗ рдкреБрдирдГ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЕрд▓рдЧ, рддрд╛рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рди рд╣реЛред

watch.js
 var socket = io(); socket.on('change', () => { location.reload(); }) 


рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд╡рд╣ js рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рднреА рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ!): рдЪреЗрдХ рдХрд┐рдпрд╛ рд╣реБрдЖ .json, .css
рдореИрдВ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реВрдВ - рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдареАрдХ рд╣реИ, рдЕрдм рдореИрдВ рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдХрд╛рдЯ рджреВрдВрдЧрд╛ред рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреВрдЧрд▓ рдФрд░ - рд╡реЙрдЗрд▓рд╛ - рддреИрдпрд╛рд░ рд╣реИ
рдирд┐рд░реНрдгрдпред

рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдЬреЛрдбрд╝реЗрдВред

server.js
 var express = require('express'); //  express var app = express(); var server = require('http').Server(app); //  http  app var io = require('socket.io')(server); //  socket.io     var fs = require('fs'); var watch = require('node-watch'); const port = 9080; server.listen(port); app.use(express.static(__dirname + '/src')); let count = 0; let changed = []; app.get('/data', (req, res) => { res.data = count; res.send({count, changed}); }) const translate = { remove: "", update: "" } watch('./', { recursive: true }, function(evt, name) { io.emit('change', {data: count}); count += 1; changed = [{name, evt}, ...changed]; }); 


рд╣реБрд░реНрд░реЗ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

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

рд▓рд┐рдВрдЯрд░ рдХреА рдХрд╕рдо рд╣реИ рдХрд┐ рдХреЛрдгреАрдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдореЗрд░реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИрдВ, рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВред рдЙрд╕реА рд╕рдордп, рдореИрдВ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдЪрд░ рдХреЛ рдереЛрдбрд╝рд╛ рдкреЗрдВрдЪ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рд╡рд╣ рд╕реЛрдорд╡рд╛рд░ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ рдФрд░ рдкреВрд░реЗ рдЦреЗрдд рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдерд╛ред рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рддрд╛рдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рдХреБрдЫ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реЛ, рддрд╛рдХрд┐ рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдкрдврд╝рд╛ред

рдирддреАрдЬрддрди, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:

server.js
 const express = require('express'), http = require('http'), watch = require('node-watch'), proxy = require('http-proxy-middleware'), app = express(), server = http.createServer(app), io = require('socket.io').listen(server), exeptions = ['git', 'js_babeled', 'node_modules', 'build', 'hotreload'], // ,   ,    backPortObj = { /*  ,   back*/ }, address = process.argv[2] || /*    back*/, localHostPort = process.argv[3] || 9080, backMachinePort = backPortObj[address] || /*   back */, isHotReload = process.argv[4] || "y", // "n" || "y" target = `http://192.168.${address}:${backMachinePort}`, str = `Connected to machine: ${target}, hot reload: ${isHotReload === 'y' ? 'enabled' : 'disabled'}.`, link = `http://localhost:${localHostPort}/`; server.listen(localHostPort); app .use('/bg-portal', proxy({ target, changeOrigin: true, ws: true })) .use(express.static('.')); if (isHotReload === 'y') { watch('./', { recursive: true }, (evt, name) => { let include = false; exeptions.forEach(item => { if (`${name}`.includes(item)) include = true; }) if (!include) { console.log(name); io.emit('change', { evt, name, exeptions }); }; }); }; console.log(str); console.log(link); 


app.js
 var socket = io.connect(); socket.on('change', ({ evt, name, exeptions }) => { location.reload(); }); 


рдЪрд▓ рд░рд╣реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ package.json рдореЗрдВ рдХреЗрд╡рд▓ рдиреЛрдб рдХреЗ рддрд╣рдд server.js рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:

 npm start 1.100 8080 

рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ред рдмрдирд╛рдП рд░рдЦрд╛ред F5

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рд╡рд╛рдиреНрдпрд╛ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореЗрд░реЗ рджреЛрд╕реНрдд, рдХреБрдЫ рдЬрдЧрд╣реЛрдВ рдкрд░ рдорд╛рд╕реНрдЯрд░рдорд╛рдЗрдВрдб рдФрд░ рдореБрдЦреНрдп рдХрд┐рдХрд░, рд╕рд╛рде рд╣реА рд╕рд╛рд╢рд╛ - рд╡рд╣ рдЖрджрдореА рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдкрдирд╛ рдЧреБрд░реБ рдорд╛рдирддрд╛ рд╣реВрдВ!

рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп


рдФрд░ 2 рд╕рдкреНрддрд╛рд╣ рдХреЗ рдмрд╛рдж, рдореЗрд░реА рдкрд░реАрдХреНрд╖рдг рдЕрд╡рдзрд┐ рдХреЗ рдЕрдВрддрд┐рдо рджрд┐рди, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╡реЗрдмрдкреИрдХ рдФрд░ рд╡реЗрдмрдкреИрдХ-рджреЗрд╡-рд╕рд░реНрд╡рд░ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджрд┐рдпрд╛, рдЕрдкрдиреЗ рдЧрд░реНрдо рд░реАрд▓реЛрдбрд░ рдХреЛ рдЗрддрд┐рд╣рд╛рд╕ рд╢реЗрд▓реНрдл рдкрд░ рдзреВрд▓ рдореЗрдВ рднреЗрдЬ рджрд┐рдпрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрди 2 рд╣рдлреНрддреЛрдВ рдХрд╛ рд╣рдордиреЗ рд╣рд░ рджрд┐рди рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛!

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


All Articles