Node.js: рдЬрдирд░рд▓-рдкрд░реНрдкрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреАрдЬ рдХрд╛ рдЕрд╡рд▓реЛрдХрди

Node.js

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



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



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



рдкреАрдЫреЗ рд╣рдЯрдирд╛



рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЧреНрд░рдВрдЯ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╕рдлрд▓рддрд╛ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЖрдк рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЖрдк "рдЙрдиреНрдирдд" рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ "рдЧрд▓реНрдк" рди рдЪрд┐рд▓реНрд▓рд╛рдПрдВ, рдЕрдкрдиреЗ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЕрдкрдирд╛рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред



рдкрд░реАрдХреНрд╖рдг



рдЪреБрдирд╛рд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╕рдВрдж рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдореЙрдбрд▓ рдХреЛ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛ рд░рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЖрдк рдкрд░ рдереЛрдкрддрд╛ рдирд╣реАрдВ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдорд╛рдзреНрдпрдорд┐рдХ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реА рдкрд╕рдВрдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдмрдиреА рдереА:

  1. рдХреБрдЫ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдХреНрд╖рдг рдЬрд┐рдирдореЗрдВ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЪрдореЗрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
  2. рдХреЛрдб рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ Node.js рдФрд░ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдердиред
  3. рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдкрд░рд┐рдкрдХреНрд╡рддрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ред




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

npm install grunt-jasmine-node --save-dev
      
      







Gruntfile.js рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

 jasmine_node: { options: { forceExit: true, match: '.', matchall: false, extensions: 'js', specFolders : ['./spec/'] }, all: ['spec/'] }
      
      







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



рдЯреЗрд╕реНрдЯ рдХрд╡рд░реЗрдЬ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛрдб



рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ 100% рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢рд░реНрдд рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдЖрдк рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ рдпрд╛ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдХрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ 100% рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдХреЛрдб рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рдХрд╡рд░реЗрдЬ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ istanbul рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред "рдирдЧреНрди" рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЗрддрдирдмреБрд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдЯреЗрд╕реНрдЯ рд░рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЧреНрд░рдВрдЯ-рдЬреИрд╕реНрдореАрди-рдиреЛрдб-рдХрд╡рд░реЗрдЬ рдореЙрдбреНрдпреВрд▓ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЗ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдкрдХреЛ html-form (рдФрд░ рди рдХреЗрд╡рд▓) рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред



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

 npm install grunt-jasmine-node-coverage --save-dev
      
      







рдЪреВрдВрдХрд┐ рд╣рдо рдЪрдореЗрд▓реА рдХреЛ рдЗрддрдирдмреБрд▓ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЪрдореЗрд▓реА рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛

 jasmine_node: { coverage: {}, //     options: { forceExit: true, match: '.', matchall: false, extensions: 'js', specFolders : ['./spec/'] }, all: ['spec/'] }
      
      







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



рдпреЗ рдЙрдкрдХрд░рдг рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдЖрдЧреЗ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░реЗрдЧреАред



рдкреБрд╕реНрддрдХрд╛рд▓рдп рднрд╛рдЧ рдХреЗ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛



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



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

 npm install grunt-browserify --save-dev
      
      







рд╡рд┐рдиреНрдпрд╛рд╕

 browserify: { dist: { files: { 'dist/my-library.js': ['lib/my-library.js'] } } }
      
      





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



рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧреНрд░рд╛рд╣рдХ рдкрд░реАрдХреНрд╖рдг



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



 browserify: { dist: { files: { 'dist/my-library.js': ['lib/my-library.js'], 'dist/my-library.spec.js': ['spec/my-library.spec.js'] } } }
      
      







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



рддреЛ, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд╣реАрдВ рд╣реИред рдЪрдореЗрд▓реА рдорд╛рдирддреА рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХ html рдкреГрд╖реНрда (рддрдерд╛рдХрдерд┐рдд TestRunner) рдЦреЛрд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлреИрдВрдЯрдордЬ рдирд╛рдордХ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧреАред рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ UI рдХреЗ рдмрд┐рдирд╛ред рдпрд╣реА рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдпреВрдЖрдИ рдХреЗ - рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯред рдРрд╕рд╛ рдмреНрд░рд╛рдЙрдЬрд░ рдлреИрдВрдЯрдордЬ рдореЗрдВ рд╢реБрд░реВ рдХреА рдЧрдИ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



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

 npm install phantomjs --save-dev
      
      







рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ TestRunner.html рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

1. рдПрдХ n.js рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ рдЬреЛ phantom.js рд▓реЙрдиреНрдЪ рдХрд░реЗрдЧреА (рдЪрдореЗрд▓реА рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП)

2. рдкреНрд░реЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрд┐рдП рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛:



3. рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрдд рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ред



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

рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдиреБрднрд╡ рдкрд░ рдпрд╣ рд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд▓рд┐рдВрдХ
1. рдлреИрдВрдЯрдордЬ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЪрдореЗрд▓реА рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рдЪрд╛рд▓рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ ред

2. рдЕрд╕рд▓реА рдпреБрдХреНрддрд┐ рдлрд╝рд╛рдЗрд▓ ред рдкрд╣рд▓рд╛ рдФрд░ рддреАрд╕рд░рд╛ рдЕрдВрдХред

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





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



рдореЗрдореЛрд░реА рд▓реАрдХ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ



рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдХреЛрдб 100% рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЛ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп "рд▓реАрдХ" рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░, рд╡рд╕реНрддреБрдирд┐рд╖реНрда рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕реНрдХреЛрд░ рдХрд┐рдпрд╛, рддреЛ "рджреНрд░рд╡" рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдПрдХ рд╡рд┐рдлрд▓рддрд╛ рд╣реИред

рдореЗрдореЛрд░реА рд▓реАрдХ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдо рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЙрдкрдХрд░рдг рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдореЗрдореЛрд╡рдЪ ( рд╣рдм рдкрд░ рд▓реЗрдЦ )ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдХреЛрдИ рд╕реНрдерд┐рд░рддрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ)ред

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

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



рд╡реИрд╕реЗ, рдЗрд╕ рдЙрдкрдХрд░рдг рдХреА рдорджрдж рд╕реЗ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдмрд╣ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд▓реАрдХ рдорд┐рд▓рд╛ред рдФрд░ рдпреЗ рд▓реАрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдереЗ: EventEmitterред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ EventEmitter "рдЙрдкрд╣рд╛рд░ рд▓рд╛ рд░рд╣рд╛ рд╣реИ ..."ред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдЕрдиреБрднрд╡ рдПрдХ рдЕрдореВрд▓реНрдп рдЪреАрдЬ рд╣реИред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╣рдо рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдХрд╛рдо рджреЗрдЦреЗрдВрдЧреЗред



All Articles