рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ, рдореИрдВ рдбрд░реНрдмреА (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдлреБрд▓рд╕реНрдЯреИрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ) рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣рд╛ рд╣реВрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреБрдЫ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред
рдЬрдм рдореИрдВ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рдерд╛, рддрдм рдХрдИ рд╡рд┐рдЪрд╛рд░ рдЙрдареЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЬрд╛рдирдХрд╛рд░реА рд╣реИ: рдкреНрд░рд▓реЗрдЦрди рджреБрд░реНрд▓рдн рд╣реИ, рдФрд░ рдЬреЛ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ (рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдЖрдорддреМрд░ рдкрд░ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдпрд╛ рджреЛ рджрд┐рди рдмрд┐рддрд╛рдПред рджреВрд╕рд░реЗ, рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдЗрд╕ рддрдХрдиреАрдХ рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд╛рдХрд┐рдл рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╢реБрд░реБрдЖрддреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ - рдкреНрд░рд╛рдкреНрдд рдЬреНрдЮрд╛рди рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдорд╛рдВрдЧ рдореЗрдВ рд╣реЛрдЧрд╛ред рдореИрдВ рдбрд░реНрдмреА-рдЙрджрд╛рд╣рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЫрд╛рдВрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╛ рддреЛ рдЙрдиреНрд╣реЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдХрд░, рд░рд╛рд╕реНрддреЗ рдореЗрдВ, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдирд┐рд░реНрдорд╛рдг рдХреЗ рддрд░реНрдХ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ, рдпрд╛, рдПрдХ рд╕рдорд╛рдкреНрдд рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЙрди рдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдордЭрд╛рдПрдВ рдЬрд┐рдирдХрд╛ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ 5-6 рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╕рдВрд╕реНрдХрд░рдг 0.6
рд╣рдо рдбрд░реНрдмреА рд╕рдВрд╕реНрдХрд░рдг 0.6 рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗред рд╕рдВрд╕реНрдХрд░рдг 0.6 рдЕрд▓реНрдлрд╛ 5 рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ 0.5 рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╕рднреА рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 0.6 рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, type4fame 0.6 рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореЗрд░рд╛ рджреЛрд╕реНрдд рдХрд╛ рд╢реМрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг 0.5 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдм рдХреБрдЫ рдмреЗрд╣рддрд░ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рд░реВрдкрд░реЗрдЦрд╛ рдХреЛрдб рд╕рдВрд░рдЪрд┐рдд рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдкреНрд░рддрд┐рдкрд╛рджрди рдореЗрдВ рддреЗрдЬреА рдЖрдИ рд╣реИ, рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рдХрдЯ рд╣реБрдЖ рд╣реИред рдирдИ рдШрдЯрдХ рдкреНрд░рдгрд╛рд▓реА рдЖрдкрдХреЛ рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдХрдо рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рд╡рд╛рд▓реЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЫрд╛рдкреЗрдВ рд╣реИрдВред
рдиреНрдпрд╛рдп рдХреЗ рд▓рд┐рдП, рдпрд╣ рдпрд╣рд╛рдБ рдЬреЛрдбрд╝рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдФрд░ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ TODOs рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рднреА рд╣реЛрддреА рд╣реИрдВ (рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддреА рд╣реИрдВ)ред
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реНрддрд░
рдЬрд▓реНрджреА рд╕реЗ рдбрд░реНрдмреА рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЙрди рдореБрдЦреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдЬрд╛рдирдирд╛ рдФрд░ рд╕рдордЭрдирд╛ рд╣реИ:
- рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдореВрд▓ рдЬреНрдЮрд╛рди (html, css, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ);
- рдиреЛрдбрдЬ - рдЖрдкрдХреЛ рдЖрдордЬрди рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдирдкреАрдПрдо, рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдорд╛рдирдХ http рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдП;
- рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬ - рдбрд░реНрдмреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдФрд░ рд╕рд░реНрд╡рд░ рдЬреЗрдПрд╕ (рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓, рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЕрдиреБрд░реЛрдз, рдЖрджрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рднреА рд╣реИ рдЬреЛ рдбрд░реНрдмреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рдорджрдж рдорд┐рд▓реЗрдЧреА (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдЗрд╕ рд╕рднреА рдХреЛ рдЫреВ рд▓реЗрдВрдЧреЗ)
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
- рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
- рдкрд░рд┐рдЪрд╛рд▓рди рд░реВрдкрд╛рдВрддрд░рдг - Google рдбреЙрдХреНрд╕ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдПрдХ рддрдХрдиреАрдХ
- browserify
- MongoDB
рдордВрдЪ
рд▓рд┐рдирдХреНрд╕, рдореИрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ - рд╕рдВрд╕реНрдХрд░рдг 0.5 рдиреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рддрд╣рдд рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдЦреБрдж рдХреЛ рд░реЗрдбрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг 2.6 рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдерд╛), рд╕рдВрд╕реНрдХрд░рдг 0.6 рдЗрд╕рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдРрд╕реЗ рдкреБрд▓-рдЕрдиреБрд░реЛрдз рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ рдореБрдЦреНрдп рднрдВрдбрд╛рд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрднреА рддрдХ рд╢реБрд░реБрдЖрддреА рд╣реИрдВ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рд▓рд╛рдпрдХред
рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ:
- NodeJS
- MongoDB
- рд░реЗрдбрд┐рд╕ 2.6 (рдиреЛрдЯ рд╕рдВрд╕реНрдХрд░рдг 2.4 рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ) - рдЕрдкрдбреЗрдЯ рд░реЗрдбрд┐рд╕ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
рд╕рдм рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрд╡реЗрджрди рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЙрд╕ рд╕рдордп рдореЛрдВрдЧрд╛ рдФрд░ рдореВрд▓реА рдЪрд▓ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ: https://github.com/zag2art/derby-example-hello ред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рд╣реЛрдВрдЧреЗред
рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рд╕рдорд╛рдкреНрдд рдЙрджрд╛рд╣рд░рдг рдХреА рдирдХрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЗрд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд▓рд┐рдП рдЪреБрдиреЗрдВ, рдореИрдВ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛ред
рдореЗрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреЙрдкреА рдХрд░реЗрдВ:
# git clone https://github.com/zag2art/derby-example-hello.git # cd derby-example-hello # ( derby derby-starter) npm install # localhost:3000 npm start
рд╣рдо рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдЦреБрдж рдмрдирд╛рддреЗ рд╣реИрдВ (рдбреИрдбреА рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕реЗ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж):
рд╣рдо npm
npm init
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдХ рд░реВрдк рд╕реЗ
package.json
рдмрдирд╛рддреЗ рд╣реИрдВ (рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ server.js рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ), рдлрд┐рд░ npm рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЛ рдореЙрдбреНрдпреВрд▓ рднреА рдЬреЛрдбрд╝реЗрдВ:
# 0.6 ( npm 0.5), package.json npm install derby@~0.6 -S # derby-starter npm install derby-starter -S
derby-starter
рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж: рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдХреЛрдб рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбрд░реНрдмреА рдорд┐рдбрд▓-рд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд┐рд▓рддреА рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рдбрд░реНрдмреА рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдбреЗрдЯрд╛ (рдореВрдВрдЧ рдФрд░ рдореВрд▓реА) рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдареАрдХ рд╣реИ, рдбрд░реНрдмреА рдХреЗ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреЛ рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрд╣ рдХреЛрдб рдбрд░реНрдмреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП,
racer-access
рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз, рдпрд╛ рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдбрд░реНрдмреА рдирд╣реАрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдбреБрдкреНрд▓реАрдХреЗрдЯ рд░реЗрд╕реНрдЯрдлреБрд▓-рдПрдкреАрдЖрдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдм рдЕрднреА рддрдХ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ:
server.js
require('derby-starter').run(__dirname+'/index.js');
рд╣рдо рдбрд░реНрдмреА рдХреЗ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ index.js рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдбрд░реНрдмреАрдЬ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдпрдВ рд╕реНрдерд┐рдд рд╣реИред
рддреЛ, рдЖрд╡реЗрджрди 2 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ: index.js
var app = module.exports = require('derby').createApp('hello', __filename); app.loadViews(__dirname); // app.get('/', function(page, model) { // model.subscribe('hello.message', function() { page.render(); }); });
рдФрд░ index.html
<Body:> <!-- html --> Holler: <input value="{{hello.message}}"> <h2>{{hello.message}}</h2>
рдкрд╣рд▓реЗ, рдЙрдиреНрд╣реЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдПрдВ, рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗрдВ, рдФрд░ рдлрд┐рд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдПрдХ рд╣реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ: package.json, server.js, index.js рдФрд░ index.htmlред рдбрд░реНрдмреА рдФрд░ рдбрд░реНрдмреА-рд╕реНрдЯрд╛рд░реНрдЯрд░ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ рдФрд░ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рдореЛрдВрдЧреЛ рдФрд░ рд░реЗрдбрд┐рд╕ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред
рд╣рдо рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (npm рд╢реБрд░реВ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рд╕реАрдзреЗ - рдиреЛрдб server.js):
zag2art@laptop:~/work/derby-example-hello$ npm start > derby-example-hello@0.0.0 start /home/zag2art/work/derby-example-hello > node server.js Master pid 11291 11293 listening. Go to: http://localhost:3000/
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрд▓реЗрдВ, рдкрддрд╛ рджрд░реНрдЬ рдХрд░реЗрдВ http: // localhost: 3000 / , рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреЗрдЬреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рд╣рдо рдЬреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдордиреЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдерд╛, рд╡рд╣ h2 рдмреНрд▓реЙрдХ рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрдирдкреБрдЯ рдХреЗ рдиреАрдЪреЗ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдпрд╣рд╛рдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдФрд░ рдкреНрд░рдпреЛрдЧ, рдЙрд╕реА рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЯреИрдм рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ http: // localhost: 3000 / ред рд╣рдо рдкрд╣рд▓реЗ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдбреЗрдЯрд╛ рдЯреИрдм рдХреЗ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдмреАрдЪ)ред рдЖрдЗрдП рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдкрд░рд┐рд╡рд░реНрддрди рддреБрд░рдВрдд рдкрдбрд╝реЛрд╕реА рдЯреИрдм рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛, рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмреНрд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ, рдЕрд░реНрдерд╛рддреН, рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдкреГрд╖реНрда рдХрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╕реАрдзреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рджреВрд╕рд░реЗ рдЯреИрдм рдореЗрдВ рдкреГрд╖реНрда рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ:
рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд░рд╛ рд╣реБрдЖ рдкреГрд╖реНрда рджрд┐рдпрд╛ рд╣реИ - рдЬреЛ рдЦреЛрдЬ рдЗрдВрдЬрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдордг рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рджреЛрдиреЛрдВ рд╣реИрдВ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рдЕрдкрдбреЗрдЯ рдФрд░ рдЦреЛрдЬ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪред
рдЕрдм рдЖрдЗрдП рдбрд░реНрдмреА рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрд░реЛрдд рдХреЛрдб рднреАред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕реЛрдЪрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рд╕реЗ рд╣реЛрддреА рд╣реИрдВ:
- рдбрд░реНрдмреА, рдПрд╕рдкреАрдП (рдЬрдЯрд┐рд▓, рддрддреНрд╡-рд╕рдореГрджреНрдз рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ) рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреЗрдЬ рдХреЗ рднреАрддрд░ рдордЬрдмреВрдд рдкреБрдирд░реНрд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреБрдХрдорд╛рд░реНрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП - рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд░рд╛рдЬреНрдп рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде, рдпреВрдЖрд░рдПрд▓ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛
- рд╡рд╣реА рд╕рд░реНрдЪ рдЗрдВрдЬрди рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╛рддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЦреБрдж рдХреЗ рд▓рд┐рдП рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд url рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВред
рдЗрд╕рд▓рд┐рдП, рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд╕рдордЭрд╛, рдпрджрд┐ рдкреГрд╖реНрда рд╕рд░реНрд╡рд░ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП, рд╣рд░ рдмрд╛рд░ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪреЗрдВ, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рдПрдХ рд╕реНрдХреНрд░реАрди рдлрд╝реНрд▓рд┐рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдореИрдВ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреЗрдЬ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛрдб рдХреА рдирдХрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдкрд░ рдкреЗрдЬ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдХреЛрдб рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ - рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рднреА рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреЗрдЬ (templatization, html рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛) рдФрд░ рд░рд╛рдЙрдЯрд┐рдВрдЧ (рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдПрдбреНрд░реЗрд╕ рдмрджрд▓рддреЗ рд╕рдордп url рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдкрд░ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВред рдРрд╕рд╛ рдХреЛрдб, рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдкрд░ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдбрд░реНрдмреА рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдпрд╣ рдирд┐рдХрд▓рд╛ рдбрд░реНрдмреА рдореЗрдВ 2 рднрд╛рдЧ рд╣реИрдВ:
- рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ (рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдореЙрдбреНрдпреВрд▓ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛, рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬреЗрд╕ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдирд╛)ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рдкрд╛рджрди рдпрд╛ рд░реВрдЯрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдбрд░реНрдмреА-рд╕реНрдЯрд╛рд░реНрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде server.js рдлрд╝рд╛рдЗрд▓ рд╣реИред
- рд╕рдорджреНрд╡рд┐рдмрд╛рд╣реБ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реАред рдЬрдм рд╕рд░реНрд╡рд░ рд╕реЗ рдкреГрд╖реНрда рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдХреЛрдб рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХреЛрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЪрд▓рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ index.js рдФрд░ index.html рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред
рдореБрдЭреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рджреЗрдВред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдПрдХ рдбрд░реНрдмреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ 3 рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
-
/
- рд╕рд╛рдЗрдЯ рдХрд╛ рдореБрдЦ рдкреГрд╖реНрда -
/about
- рдирд┐рд░реНрдорд╛рддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреГрд╖реНрда -
/projects
- рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреЗрдЬ
рд╕рднреА рдкреЗрдЬ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд▓рд┐рдВрдХ рд╣реИрдВред рдРрд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рд╕рд░реНрдЪ рдЗрдВрдЬрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡рд╣ 3 рдкреНрд░рд╢реНрди рдХрд░реЗрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░реЗрдЧрд╛ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред (рдзреНрдпрд╛рди рджреЗрдирд╛ - рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ)ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди рддреАрди рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдкрд░ рднреА рд╕рд╛рдЗрдЯ (рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛, рдпрд╛ рдкрддрд╛ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдкрддрд╛ рджрд░реНрдЬ рдХрд░рдХреЗ) рджрд░реНрдЬ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╣реЛрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐, рддреИрдпрд╛рд░ рдкреГрд╖реНрда рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдкреВрд░реНрдг рдЖрдЗрд╕реЛрдореЙрд░реНрдлрд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рддрдерд╛рдХрдерд┐рдд рдмрдВрдбрд▓, рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкреИрдХреЗрдЬреНрдб рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ - рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЗрдВ рдЬрд┐рд╕рдореЗрдВ url рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде HTML рдлрд╛рдЗрд▓реЗрдВ, рдПрдХ рд╕реАрдПрд╕рдПрд╕ рдлрд╝рд╛рдЗрд▓ , рд╕рд╛рде рд╣реА рдбрд░реНрдмреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛ рдпрд╣ рд╕рдм рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢реБрд░реВ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдкрд░, рдкреГрд╖реНрда рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреНрд░рд╛рд╣рдХ рдкрд░ рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдПрд╕рдкреАрдП рдЖрд╡реЗрджрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдм, рдЕрдЧрд░ рд╡рд╣ (рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреГрд╖реНрда рдкрд░) / рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ - рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ (рдпрд╣рд╛рдВ рдПрдХ рддрд╛рд░рд╛рдВрдХрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдореИрдВ рдмрд╛рдж рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд░реВрдВрдЧрд╛)ред рдкреГрд╖реНрда рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реАрдзреЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рдЗрддрдиреЗ рдкрд░: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди рддреАрди рдкреГрд╖реНрдареЛрдВ рдкрд░, рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред
рддреЛ, рдЕрдм index.js рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
var app = module.exports = require('derby').createApp('hello', __filename); app.loadViews(__dirname); // app.get('/', function(page, model) { // model.subscribe('hello.message', function() { page.render(); }); });
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ index.js рдПрдХ рд╕рд╛рдорд╛рдиреНрдп .js рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
var _ = require('underscore');
ред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ, рдбрд░реНрдмреА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╣реИред
app.loadViews(__dirname);
рдпрд╣рд╛рдВ рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╛рдЗрд▓реЗрдВ рдХрд╣рд╛рдВ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рдЙрд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ index.js рдЭреВрда рд╣реИ, рдЬрдВрдЧрд▓ рд╡рд╣рд╛рдВ рджрд┐рдЦреЗрдЧрд╛ рдФрд░ index.html рдвреВрдВрдвреЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдиреНрдпреВрдирддрдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ css рд╢реИрд▓рд┐рдпрд╛рдБ рд╣реЛрддреАрдВ, рддреЛ рдпрд╣рд╛рдБ рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ:
// app.loadViews (path.join(__dirname, '../views')); app.loadStyles(path.join(__dirname, '../styles'));
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ index.css рдлрд╝рд╛рдЗрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдареАрдХ рд╣реИ, рдпрд╛ рддреЛ index.styl рдпрд╛ index.less - рдбрд░реНрдмреА рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ)ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЖрдЧреЗ рдмрдврд╝реЛ, рдФрд░ рдлрд┐рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдб рдпреВрдЖрд░рдПрд▓ред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрджрд┐ рд╣рдо рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдерд╛ (3 рдХрд╛рдордХрд╛рдЬреА рдорд╣рд┐рд▓рд╛рдУрдВ рдХреЗ рд▓рд┐рдП) - рдпрд╣рд╛рдБ рд╣реЛрдЧрд╛:
app.get('/', function(page, model) { ... }); app.get('/about', function(page, model) { ... }); app.get('/projects', function(page, model) { ... });
рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ, рд╣реИ рдирд╛? рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдПрдХ рдЕрд▓рдЧ рдкреГрд╖реНрда рдХрд╣рд╛ рд╣реИ, рдПрдХ рд╣реИрдВрдбрд▓рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдмрддрд╛рдПрдЧрд╛)ред рд╣рд╛рдВ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдкреВрд░реА рдЪреАрдЬ рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдпрд╣рд╛рдВ рдЖрдк рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
app.get('/users/:user', getUser);
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВред
рд╣рдо рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХреНрд╕рдкреНрд░реЗрд╕рдЬ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, рд╣рдореЗрдВ рдкреЗрдЬ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдлрд┐рд░ рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрдЪрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рдпреЛрдЬрдирд╛ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЗрдЯрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдкрд╛рд╕)ред рдбрд░реНрдмреА рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдврд╛рдВрдЪрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ: рдпрд╛ рддреЛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдлрд┐рд▓рд╣рд╛рд▓ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЛ рдЖрдЧреЗ рджреЗрдВ, рдпрд╛ рд╣рдо рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рдо рднреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ... рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдЖрдЗрдП рдХрд┐рд╕реА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрда рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдпрджрд┐ рд╣рдордиреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╕рдм рдХреБрдЫ рд╕реНрдерд┐рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЕрдЧрд░ рд╣рдордиреЗ рдЕрдкрдбреЗрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рднреА рд▓реЗ рд▓реА рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкреЗрдЬ рдкрд░ рд╕реВрдЪреА рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рдПрдЧреА (рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕реЗрд╕ рд╡рд╛рд▓рд╛ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ, рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛)ред рдХреЛрдб рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
// model.fetch('list', function(){ // // render }); // c model.subscribe('list', function(){ // , // // render });
рддреЛ, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдб:
model.subscribe('hello.message', function() { page.render(); });
рд╣рдо 'hello.message' рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди (рдЬрдм рдбреЗрдЯрд╛ рдХреЛ рдКрдкрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдореЗрдВ рд╣рдо рд░реЗрдВрдбрд░ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣ рдХрдИ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИ: 'рд╣реЗрд▓реЛ.рдореИрд╕реЗрдЬ' рдХреНрдпрд╛ рд╣реИ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреНрдпреЛрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреЛрдИ рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд╛рдо рдпрд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ)?
рдПрдХ рдбрд░реНрдмреА рдореЗрдВ, рд░реЗрд╕рд░ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддрдерд╛рдХрдерд┐рдд "рдкрде" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 'hello.message' рд╣реИ - рдпрд╣ рд╡рд╣ рдорд╛рд░реНрдЧ рд╣реИ рдЬрд╣рд╛рдБ 'hello' рдореЛрдВрдЧреЛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдирд╛рдо рд╣реИ (sql рдореЗрдВ рдПрдХ рдЯреЗрдмрд▓ рд╣реЛрдЧрд╛), 'message' рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЖрдИрдбреА рд╣реИред рдпрд╣реА рд╣реИ, рд╣рдордиреЗ рдпрд╣рд╛рдВ рд╣реИрд▓реЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрди рдЕрдк рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рдбреЗрдЯрд╛ рд╣реИ рдЬреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдЖрдПрдЧрд╛ред рдбреЗрдЯрд╛ рдФрд░ рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ: html рдХреЗ рд▓рд┐рдП url = / рдХреЛ рдореБрдЦреНрдп html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (index.html рд░реВрдЯ рдПрдХ рд╣реИ, рдЖрдпрд╛рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрдИ рдФрд░ рдЬреБрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ , рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдбреЗрдЯрд╛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ "рдкрде" рддрдХ рд╣реИред
рдЕрдм рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ index.html рд╣реИ:
<Body:> <!-- html --> Holler: <input value="{{hello.message}}"> <h2>{{hello.message}}</h2>
рддреЛ, рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реА рдХрдИ рд╕реЗрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ - рдмреЙрдбреА), рдбрд░реНрдмреА рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ, рдЗрдиреНрд╣реЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣реИ, рдЗрд╕ рддрд░рд╣ рд╕реЗ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдмреЙрдбреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рд╣рдо рдЗрд╕рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рд╡рд╣ рдкрд░рд┐рдгрд╛рдореА HTML рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдбрд░реНрдмреА рдорд╛рдирдХреАрдХрд░рдг рдХреА рдкреВрд░реА рдкреНрд░рдгрд╛рд▓реА рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдирд╛рдорд╕реНрдерд╛рди, рд╡рд┐рд░рд╛рд╕рдд рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред (рдЕрдиреБрдЪрд┐рдд рдЙрджрд╛рд╣рд░рдг), рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред рдбрдмрд▓ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рдореЗрдВ - рдбреЗрдЯрд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рд╣рдорд╛рд░реЗ рдмрд╣реБрдд рдкрде)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреГрд╖реНрда рдХрд╛ рд╢реАрд░реНрд╖рдХ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрдиреНрдп рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╢реАрд░реНрд╖рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
<Title:> - <Body:> <!-- html --> Holler: <input value="{{hello.message}}"> <h2>{{hello.message}}</h2>
рдЕрдВрджрд░, рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИред рдореИрдВ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ (рд╡рд┐рд╢реЗрд╖рдХрд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рд╕реЛрдЪреЛ):
<Body:> {{if _page.login}} <h3> Hello, friend! </h3> {{/}} {{each _page.todos as #todo, #index}} <p>{{#todo.text}}</p> {{if #index % 5 === 0}} <!-- 0, 5, 10, 15 --> <b></b> {{/}} {{/}}
рдЦреИрд░, рдмрд╛рдзреНрдпрдХрд╛рд░реА рдШрдЯрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
<a href="#" on-click="{{removeTopic(topic[#index])}}">Ok</a>
рдпрд╣рд╛рдВ рд╣рдо рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рднрд╛рдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдЪрд┐рдд рд╣реИред рдЕрдЧрд▓реЗ рд╣рдлреНрддреЗ, рд╣рдо рдПрдХ "рдЯреВ-рдбреВ рд▓рд┐рд╕реНрдЯ" (TODO-list) рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдБ рдЗрд╕ рд╕рдмрдХрд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдЗрд╕ рдмреАрдЪ, рдХреЛрдб рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рд╢реАрд░реНрд╖рдХ рдмрджрд▓реЗрдВ (рдбрд░реНрдмреА рд▓рд┐рд╡рд░реЗрд▓реЛрдЗрдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЬреИрд╕реЗ рд╣реА рдЖрдк рдПрдЪрдЯреАрдПрдордПрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░ рджреЗрдЧрд╛)ред рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдкреБрдирд╢реНрдЪ
рдпрджрд┐ рдЖрдк рдбрд░реНрдмреА рдкрд░ рдорд╛рдирдХ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 0.5 рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЗ рд╡рд╣рд╛рдВ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред
рдЖрдк рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ: рдирд┐рдпрдВрддреНрд░рдХ, рдореЙрдбрд▓ред рдХреНрдпрд╛ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ: рджреГрд╢реНрдп, рдЯреЗрдореНрдкрд▓реЗрдЯ, рдШрдЯрдХ - рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред
рдкреА рдкреА рдПрд╕
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ, рдХреГрдкрдпрд╛ рд▓рд┐рдЦреЗрдВ рдХрд┐ рдЖрдк рдбрд░реНрдмреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХреНрдпрд╛ рд╣реИ? рд╢рд╛рдпрдж рдХреБрдЫ рд╕рд╡рд╛рд▓ рд╣реИрдВ? рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ - рдЙрдиреНрд╣реЗрдВ рдкреНрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ, рддреЛ рдПрдХ рдареЛрд╕ рдиреАрдВрд╡ рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдЕрджреНрдпрддрди
рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг http://habrahabr.ru/post/221703/ рд╣реИ
рддреАрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ http://habrahabr.ru/post/222399/
рдпрджрд┐ рдЖрдк рдбрд░реНрдмреАрдЬ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ - рддреЛ рдЬреАрдердм рдкрд░ рддрд╛рд░рд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рдиреА рди рд▓реЗрдВ