NodeJS рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдХрд╣реАрдВ рднреА рдиреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ) рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдвреЗрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЦреБрдж рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдзреНрдпрд╛рди рджреЗрдВ : рдореИрдВрдиреЗ рд╕рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдиреБрднрд╡реА рд╣реИрдмреНрд░реЗрдЯрд╛рдЯреЗрд▓ рдмреЗрд╣рддрд░ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред рдореИрдВрдиреЗ рдмреНрд▓реЙрдЧ рдкрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреИрдХреЗрдЬ рдЙрдард╛рдПред рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХреЛ рдЬреАрдердм (рд╕рд┐рддрд╛рд░реЛрдВ, рдХрд╛рдВрдЯреЛрдВ) рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рджреЗрдЦрд╛ред
рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓рд░
npm рдиреЛрдб рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╣реИред рдпрд╣ рдиреЛрдб рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдпрд╣ рдЗрддрдирд╛ рд╕рдЯреАрдХ рд╣реИ)ред
рд░реВрдмреА рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ: рд░реВрдмреАрдЬ + рдмреБрдВрдбрд▓рд░ред PHP рд╕рдорддреБрд▓реНрдп: рд╕рдВрдЧреАрддрдХрд╛рд░ред
рдкреИрдХреЗрдЬ рдЦреЛрдЬ
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рдЬрд┐рд╕реНрдЯрд░ ред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд╣реАрдВ:
npmsearch ,
packagefinder ,
nipsterрд╡реЗрдм рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдвреЗрд░
рд╡реЗрдм рд╕рд░реНрд╡рд░
рдХрдиреЗрдХреНрдЯ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ HTTP рд╕рд░реНрд╡рд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмрд┐рд▓реНрдЯ-рдЗрди рдФрд░
рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдкреНрд▓рдЧ рдЗрди рдХреА рд╕реВрдЪреАред
рд░реВрдмреА рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ: рд░реИрдХред
рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ
рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдХ рдорд┐рдирд┐рдорд▓рд┐рд╕реНрдЯрд┐рдХ рдлрд╝реНрд▓реЗрдХреНрд╕рд┐рдмрд▓ рдиреЛрдб рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдЬреЛ рд╕рд┐рдВрдЧрд▓, рдорд▓реНрдЯреА-рдкреЗрдЬ рдФрд░ рд╣рд╛рдЗрдмреНрд░рд┐рдб рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЪрдпрди ред
рд░реВрд╕реА рдкреНрд░рд▓реЗрдЦрди ред
рд░реВрдмреА рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ: рд╕рд┐рдирд╛рддреНрд░рд╛ред PHP рд╕рдордХрдХреНрд╖: Silexред
рдЕрднреА рднреА
рдЧреЗрдбреНрдбреА рд╣реИрдВ ред рдпрд╣ рд░реЗрд▓ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдЬрд╛рдирд╡рд░ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред
рдЖрдзрд╛рд░
рдЖрдо рдиреЛрдб рдХреЗ рд▓рд┐рдП рдордВрдЧреЛрд▓реЛрдб рдХреЗ рд▓рд┐рдП рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╡рд╕реНрддреБ рдореЙрдбрд▓рд┐рдВрдЧред
рдкреНрд░рд▓реЗрдЦрди рдФрд░
рдкреНрд▓рдЧрдЗрдиреНрд╕рдЕрдиреНрдп PLs рдореЗрдВ, ORM (рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ) рд╢рдмреНрдж рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди mongoose ODM (рдСрдмреНрдЬреЗрдХреНрдЯ-рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореИрдкрд┐рдВрдЧ) рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рди рдХреЗрд╡рд▓ рдиреЛрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрдмреА рдореЗрдВ рдПрдХ
рдореЛрдВрдЧреЙрдпрдб рд╣реИ ред
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдЬреЗрдб рдПрдХ рд╣рд╛рдИ-рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдиреЛрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИ рдЬреЛ рд╣реИрдо рд╕реЗ рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рд▓реЗрдЦрди ,
рдХрд╛ред рдкреНрд░рд▓реЗрдЦрдирд░реВрдмреА рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ: рд╕реНрд▓рд┐рдо (
рдПрдХреНрдЬреЗрди ),
рд╣реЗрдорд▓ ред
рд╕реАрдПрд╕рдПрд╕ рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ
рд▓реЗрдЦрдиреА ред рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ, рдЧрддрд┐рд╢реАрд▓, рдордЬрдмреВрдд рд╕реАрдПрд╕рдПрд╕
рдХрдо рд╣реИ ред LESS рдиреЗ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдЪрд░, рдорд┐рд╢реНрд░рдг, рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛
рд░реВрдмреА рдореЗрдВ рдПрдирд╛рд▓реЙрдЧреНрд╕: рд╕реИрд╕, рдХрдоред
рдкреНрд░рдорд╛рдгреАрдХрд░рдг
рд╣рд░ рдЖрдкрдХреЗ рдХрдиреЗрдХреНрдЯ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг (рдкрд╛рд╕рд╡рд░реНрдб, рдлреЗрд╕рдмреБрдХ, рдЖрджрд┐)ред
рдореЛрдВрдЧреЛрдЬрд╝ рдФрд░ рдПрд░рд╛рде рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрдЪреНрдЫрд╛
рдореЛрдВрдЧреЛрдЬрд╝- рдСрд░реНрдХ рд╣реИред
рд░реВрдмреА рдореЗрдВ рдПрдирд╛рд▓реЙрдЧреНрд╕: рдУрдордиреАрдСрдеред
рд╕реАрд░рд┐рдпрди рдкрд╛рд╕рдкреЛрд░реНрдЯрдЬрд╕ рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИред рдиреЛрдб рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рдкреЛрд░реНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реИред рдмрд╣реБрдд рд▓рдЪреАрд▓рд╛ рдФрд░ рдореЙрдбреНрдпреВрд▓рд░ рд╕рдорд╛рдзрд╛рдиред рдкрд╛рд╕рдкреЛрд░реНрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рддреНрд░ рднрдВрдбрд╛рд░рдг
рдХрдиреЗрдХреНрдЯ-рдореЛрдВрдЧреЛ ред рдХрдиреЗрдХреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддреНрд░ рднрдВрдбрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ MongoDB
рдИрдореЗрд▓
рдиреЛрдбреЗрдореИрд▓рд░ рдиреЛрдб (рдПрд╕рдПрдордЯреАрдкреА рдпрд╛ рд╕реЗрдВрдбрдореЗрд▓ рдпрд╛ рдЕрдореЗрдЬрд╝реЕрди рдПрд╕рдИрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдХ рдЖрд╕рд╛рди-рд╕реЗ-рдЙрдкрдпреЛрдЧ рд╡рд╛рд▓рд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдФрд░ рдпреВрдирд┐рдХреЛрдб рд╕рдорд░реНрдерд┐рдд рд╣реИред
рдкрд╛рд╕рд╡рд░реНрдб рд╣реИрд╢рд┐рдВрдЧ
bcrypt ред рд╣реИрд╢рд┐рдВрдЧ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реАред
рдорд╛рдиреНрдпрддрд╛
рдиреЛрдб-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреА рдЬрд╛рдВрдЪ, рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдФрд░ рд╕реНрд╡рдЪреНрдЫрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред
рдиреЛрдб-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд▓рд┐рдП рдмрдВрдбрд▓ -
рдПрдХреНрд╕рдкреНрд░реЗрд╕-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛i18n
i18n- рдиреЛрдб рдЧрддрд┐рд╢реАрд▓ рдЬреЛрдВрд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП
рдПрдХ рд╣рд▓реНрдХрд╛ рд╕рд░рд▓ рдореЙрдбреНрдпреВрд▓ рд╣реИред (рдзрдиреНрдпрд╡рд╛рдж
рдореИрдХреНрд╕рд╡рд░реНрдХ )
рд▓реЙрдЧрд┐рдВрдЧ
рд╡рд┐рдирд╕реНрдЯреЛрди ред рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБ-рдкрд░рд┐рд╡рд╣рди рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп
log.io рдЖрдкрдХреЛ рдПрдХрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд▓реЙрдЧ рд╕рдВрджреЗрд╢ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП
рдЧреНрд░рдиреНрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ред рдЬреИрд╕реЗ рдмрдирд╛рдУ, рд░реЗрдХред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд╕рд╛рдордиреЗ рдХреЗ рдЕрдВрдд рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЬрдореАрди (рдЦрдирди рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛, рдЖрджрд┐)ред
рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рд╕реВрдЪреА ред
рд░реАрдпрд▓рдЯрд╛рдЗрдо (рд╕реЙрдХреЗрдЯреНрд╕, рдкрдм-рд╕рдм)
рд╕реЙрдХреЗрдЯ
socket.io рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рд╡рд╣рди рддрдВрддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░реЛрдВ рдХреЛ рдорд┐рдЯрд╛рддреЗ рд╣реБрдП рдХрд┐рд╕реА рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдирд╛ рд╣реИред
AHTUNG: рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕реБрдЪрд╛рд░реВ рдирд╣реАрдВ рд╣реИ,
рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдлрдВрд╕реА рд╣реБрдИ
рдХреАрдбрд╝реЗ рд╣реИрдВ ред рдХреБрдЫ
SockJs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣
рджреЗрддреЗ рд╣реИрдВRedis
рдиреЛрдб_рд░реЗрдбрд┐рд╕ рдпрд╣ рдиреЛрдб рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЧреНрд░рд╛рд╣рдХ рд╣реИред рдпрд╣ рд░реЗрдбрд┐рд╕ рдХреА рд╕рднреА рдЯреАрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬреЛрдбрд╝реА рдЧрдИ рдХрдИ рдЯреАрдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреИрд╕реЗ рд░реЗрдбрд┐рд╕ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдмреНрд░рдВрдЪ рд╕реЗ EVALред
рдкрд░реАрдХреНрд╖рдг
рдкрд░реАрдХреНрд╖рдг рд░реВрдкрд░реЗрдЦрд╛
рдореЛрдЪрд╛ рдПрдХ рдмрд╣реБрдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкрд░реАрдХреНрд╖рдг рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдврд╛рдВрдЪрд╛ рд╣реИ рдЬреЛ рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЖрд╕рд╛рди рдФрд░ рдордЬреЗрджрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓рдЪреАрд▓реА рдФрд░ рд╕рдЯреАрдХ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
Bdd рд╢реИрд▓реА
рдореАрдЯреНрдЯреА рдиреЗ
рдЪрд╛рдИ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреАред рдпрд╣ рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ BDD / TDD рдЕрднрд┐рдХрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
should.js - рдЕрд░реНрдердкреВрд░реНрдг, рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рдиреЛрдб рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░редHTTP рдореЛрдХреА
nock - рдиреЛрдб рдХреЗ рд▓рд┐рдП рдореЛрдХреНрд╕ рдФрд░ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреА HTTP рд▓рд╛рдЗрдмреНрд░реЗрд░реА
Moki
рд╕рд┐рдиреЛрдЬреНрдЬ ред рд╕реНрд╡рд╛рдпрддреНрдд рдкрд░реАрдХреНрд╖рдг "рдЬрд╛рд╕реВрд╕", рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрдмреНрд╕ рдФрд░ рдореЛрдХреАред
рдХрд╡рд░реЗрдЬ
рдХрдВрдмрд▓ рдЪрд┐рдХрдирд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╡рд░реЗрдЬ
рд░реВрдмреА рдПрдирд╛рд▓реЙрдЧ: RCov
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рд┐рдореБрд▓реЗрд╢рди
рдЬрд╝реЛрдВрдмреА рдПрдХ рдирдХрд▓реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП
рдПрдХ рд╣рд▓реНрдХрд╛ рдврд╛рдВрдЪрд╛ рд╣реИред рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рд░реВрдмреА рд╕рдорддреБрд▓реНрдп: рдХреИрдкреАрдмрд╛рд░рд╛
рдбрд┐рдЬрд╝рд╛рдЗрди
рдбрд┐рдмрдЧ
WebKit рд╡реЗрдм рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдиреЛрдб рдХреЗ рд▓рд┐рдП
рдиреЛрдб-рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдбрд┐рдмрдЧрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред
рд╣реИрдмреЗ рдкрд░ рд▓реЗрдЦрд╣реЙрдЯ рд░реАрд▓реЛрдб рдХреЛрдб
рдиреЛрдбрдорди рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдиреЛрдбрдо рдЪрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрджрд┐ рд╡реЗ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдиреЛрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдЧрд╛ред
рд╡реИрдХрд▓реНрдкрд┐рдХ:
рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХрдбрд┐рдмрдЧ + рд╣реЙрдЯ рдХреЛрдб рд░рд┐рдмреВрдЯ
рдиреЛрдбрд╡ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдиреЛрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рддрд╛ рд╣реИред рдиреЛрдбрд╡ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдиреЛрдб-рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд╛рдЗрд▓реЗрдВ рдмрджрд▓рдиреЗ рдкрд░ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдиреЛрдбрд╡ рдиреЛрдбрдореЛрди рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИред
рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдирд┐рд░реАрдХреНрд╖рдХ
рдЖрдБрдЦреЗрдВ - рдиреЛрдб рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореВрд▓реНрдп
рд░реВрдмреА рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ: рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдкреНрд░рд┐рдВрдЯред
рдЙрдкрдпреЛрдЧрд┐рддрд╛рдПрдБ
рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг
рдХрджрдо ред рдиреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдкреБрд╕реНрддрдХрд╛рд▓рдпред рд╕рдорд╛рдирд╛рдВрддрд░ рдФрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдмрдирд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рджрд░реНрдж рд░рд╣рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рддреНрд░реБрдЯрд┐ред
async рдПрдХ рдРрд╕рд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдФрд░
рдирдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рдФрд░
рд╕реВрдЪреАрдЙрдкрдХрд░рдг
рдореАрдЯреНрдЯреАрдпрд╛ рдиреЗ
рд▓реЙрдбрд╢ рдХреЛ рд╡рд╛рдкрд╕
рдмреБрд▓рд╛рдпрд╛ ред рд╡рд╣ рдПрдХ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рд╣реИред
рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдПрдХ рдЬреЗрдПрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реНрд╡рд┐рд╕ рдЪрд╛рдХреВ, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк.рдЬреЗ (рдпрд╛ рд░реВрдмреА) рдХреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк.js рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдПрдореНрдмреЗрдбреЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИредрдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА
рд╣рдореЗрд╢рд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрдкрдХрд░рдг рд╣реИ рдХрд┐ рджреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░рдВрддрд░ рдЪрд▓рддреА рд╣реИ (рдпрд╛рдиреА рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП)ред
HTTP рдХреНрд▓рд╛рдЗрдВрдЯ
рдЕрдиреБрд░реЛрдз HTTP рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред
рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдЧреНрд░рд╛рдо - рдиреЛрдб рдХреЗ рд▓рд┐рдП GraphicsMagick
рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓реАрдХреЗрд╢рди
рд╕рд╛рдВрд╡рд▓рд╛ рд░рдВрдЧ
рд░рдВрдЧ - рдЕрдкрдиреЗ рдиреЛрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдореЗрдВ рд░рдВрдЧ рдФрд░ рд╢реИрд▓рд┐рдпрд╛рдБред
рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП
рдХрдорд╛рдВрдбрд░ .js ред рдиреЛрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕рдорд╛рдзрд╛рди рдкреВрд░рд╛ рдХрд░реЗрдВ
рдиреЛрдб-рдЖрд╢рд╛рд╡рд╛рджреА - рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп
Coffescript
рдХреЙрдлреА-рд╕реНрдХреНрд░рд┐рдкреНрдЯ ред
рдиреЛрдбрдо рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛
рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдХреЗ рдмрдЬрд╛рдп рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬрд╛рджреВ
рдореИрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд▓реЗрдХрд┐рди
рдЙрд▓реНрдХрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рдЙрд▓реНрдХрд╛ рдХреБрдЫ рд╣реА рд╕рдордп рдореЗрдВ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдордВрдЪ рд╣реИ, рдЪрд╛рд╣реЗ рдЖрдк рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рд╣реЛрдВ рдпрд╛ рдмрд╕ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред
рдкреЗрдВрдЪрдХрд╕ рдХреЛ рджреЗрдЦрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ:
1 ,
2 ред рдпрд╛ рд╡реЗ рдкрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ
рд╣рдмреЗрд░рд╛ рдкрд░ рдЙрд▓реНрдХрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдирд┐рдХрдЯрддрдо рдкреНрд░рддрд┐рдпреЛрдЧреА:
рдбрд░реНрдмреА ,
рд╕реЙрдХреЗрдЯрд╕реНрдЯреНрд░реАрдоUPD рдХреЛ Habr├й рдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдкреЛрд╕реНрдЯ рдорд┐рд▓реА