рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреЛрд╕реНрдЯ
рдЕрд░реБрдгреЛрдбрд╝рд╛ рд╕реБрд╕рд┐рд░рд┐рдкрд╛рд▓рд╛ рд╕реЗ рд▓рд╛рдЗрдХрд╛
рдореЗрдЯреНрдпреЛрд░рдЬ рдПрд╕ рдПрдкреНрд▓реАрдХреЗрд╢рди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ
рд╕рдорд░реНрдкрд┐рдд рд╣реИ ред рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВ:
- Laika рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИ (PhantomJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)
- рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЖрдкрдХрд╛ MeteorJS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╕рд╛рдл рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
- рдЖрдк рдЙрд▓реНрдХрд╛ рдФрд░ рдЙрд▓реНрдХрд╛рдкрд┐рдВрдб рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рдЗрдХрд╛ рдЗрди рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИ
- рдЖрдк рдПрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдиреБрдорддрд┐, рд╕рджрд╕реНрдпрддрд╛ рдФрд░ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдЬреИрд╕реЗ рдХреНрд╖рдгреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
- рдЪреВрдВрдХрд┐ MeteorJS рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓рд╛рдЗрдХрд╛ рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдЕрд░реНрдерд╛рддреН, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рдо рдХрд╛ рдЕрдиреБрдХрд░рдг
- рддрд░реНрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреЛрдб рдХреЛ рдорд╛рди рджреЗрдирд╛
- рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЬреЗрдирд░реЗрд╢рди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░
рд╕реНрдерд╛рдкрдирд╛
1. npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
sudo npm install -g laika
2.
PhantomJS рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓
рдХрд░реЗрдВ ред
3. рднрд╛рдЧреЛ рдордВрдЧреЛрд▓реЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
$ mongod --smallfiles --noprealloc --nojournal
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред
$ meteor create meteor-laika
рдЗрд╕рдореЗрдВ рдХрд▓реЗрдХреНрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдФрд░ рдкреЛрд╕реНрдЯреЗрдЬреЗрдЬ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ
рдЗрд╕рдореЗрдВ рдЯреЗрд╕реНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдФрд░ рдкреЛрд╕реНрдЯреЗрдЬреЗрдЬ рдмрдирд╛рдПрдВ
рдпрд╣рд╛рдВ рд╣рдордиреЗ рдкреЛрд╕реНрдЯреНрд╕ рдирд╛рдордХ рдПрдХ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЯреЗрд╕реНрдЯ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЬреЛрдбрд╝реА рдЧрдИ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрд╛:
server.eval(function() { Posts.insert({title: 'hello title'});
рдЬрдм рд╣рдо рдПрдорд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣рд╛рдБ рд╣реИрдВ:
server.once('docs', function(docs) {
рдкрд░реАрдХреНрд╖рдг рддреИрдпрд╛рд░ рд╣реИред рдЖрд╡реЗрджрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд┐рдЦреЗрдВ
$ laika
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг
рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдЕрдВрджрд░, рд╣рдо рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
test('using both client and the server', function(done, server, client) { server.eval(function() { Posts.find().observe({ added: addedNewPost
рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдЧрд╛:

рджреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг
рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдЕрдВрджрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
test('using two client', function(done, server, c1, c2) { c1.eval(function() { Posts.find().observe({ added: addedNewPost
рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛:

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