SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Meteor Js за 15 минут 
Иван Рожков 
Moscow Js 
Москва октябрь 2014
Что такое Meteor? 
Это платформа для быстрого построения 
высококачественных веб приложений. 
Построена на Node JS. 
Текущая версия 0.9.4 
2 /44
Почему это интересно? 
1. Быстрый старт. 
2. Не писать лишний код. 
3. Удобство и магия... 
3 /44
1.Быстрый старт 
Все из коробки. 
Q:Что нужно для разработки на Meteor? 
A: Meteor! 
Установить - две минуты, далее сразу разработка! 
4 /44
2. Не писать лишний код 
Meteor 
Логика на 
Клиенте 
Логика на 
Сервере 
Доступ к 
Данным 
JavaScript 
5 /44 
Один язык на клиенте и сервере
REST AJAX data loading 
6 /44 
2. Не писать лишний код
3. Удобство и магия 
Все сделано для удобства разработки: 
1. Автозагрузка файлов. 
2. Классная система пакетов. 
3. Автоматическое обновление кода. 
4. Реактивность. 
... 
7 /44
Автозагрузка файлов. 
Html 
Js 
a.html b.html 
c.html 
a.js b.js 
c.js 
Meteor 
a.css b.css 
c.css 
Css 
8 /44
Автозагрузка файлов. 
<script src="/scripts/browser.js"></script> 
<link rel="stylesheet" type="text/css" src="class.css"/> 
9 /44
Автозагрузка файлов. 
<script src="/scripts/browser.js"></script> 
<link rel="stylesheet" type="text/css" src="class.css"/> 
Не нужно инклюдить! 
10 /44
Система пакетов 
bootstap 
jquery 
d3 
d3 
Система 
пакетов 
11 /44
Система пакетов 
bootstap 
jquery 
d3 
d3 
Система 
пакетов 
bootstrap 
jquery 
d3 
... 
12 /44
Система пакетов 
● пакеты работают с сервером и с клиентом 
● позволяет создавать собственные пакеты 
● легко расширяемая 
● следит за версиями пакетов 
13 /44
Автоматическое обновление кода 
Код Meteor 
Сервер 
Клиент 1 
Клиент 2 
перезапуск 
изменение 
... 
14 /44
Автоматическое обновление кода 
Код Meteor 
Сервер 
Клиент 1 
Клиент 2 
новый код 
... 
15 /44
Автоматическое обновление кода 
Код Meteor 
Сервер 
перезапуск 
Клиент 1 
... 
Клиент 2 
Метеор сам следит за актуальностью 
скриптов на клиенте! 
Больше никаких “нажмите Ctrl + R”! 
16 /44
Реактивность 
БД (данные) 
Meteor Сервер 
изменение 
Клиент 1 Клиент 2 
Клиент N 
17 /44 
...
Как это работает
Как это работает 
Связь между клиентом и сервером 
осуществляется по DDP * 
протоколу. 
DDP отвечает за: 
● синхронизацию данных между клиентом и 
сервером 
● RPC (вызов серверных процедур на клиенте) 
* - data distributed protocol. 19 /44
Как работает синхронизация 
DDP 
Клиент Сервер 
minimongo mongo 
20 /44
Пример: создание проекта 
> meteor create meteor_messages 
> ls -la 
.meteor 
meteor_messages.css 
meteor_messages.html 
meteor_messages.js 
> meteor 21 /44
Пример: создание проекта 
> meteor create meteor_messages 
> ls -la 
Создаем проект 
.meteor 
meteor_messages.css 
meteor_messages.html 
meteor_messages.js 
Запускаем проект 
> meteor 22 /44
Пример: meteor_messages.js 
1. var Messages = new Meteor.Collection("messages"); 
2. if(Meteor.isClient) { 
... //клиентская логика 
13. } 
23 /44
Пример: meteor_messages.js 
1. var Messages = new Meteor.Collection("messages"); 
2. if(Meteor.isClient) { 
... //клиентская логика 
13. } 
24 /44
Пример: meteor_messages.js 
1. var Messages = new Meteor.Collection("messages"); 
2. if(Meteor.isClient) { 
... //клиентская логика 
13. } 
25 /44
Пример: meteor_messages.js 
1. var Messages = new Meteor.Collection("messages"); 
2. if(Meteor.isClient) { 
3. Template.messages.helpers( 
4. {messagesList: function () { 
5. return Messages.find({}, 
6. { sort: { time: -1 }}); 
6. }}); 
7. Template.messages.events = { 
8. "click #add-message" : function(e){ 
9. var mes = prompt("Please enter message", ""); 
10. Messages.insert({ 
11. message: mes, time: Date.now() 
12. }); 
13. }}} 26 /44
Пример: meteor_messages.js 
3. Template.messages.helpers( 
4. {messagesList: function () { 
5. return Messages.find({}, 
6. { sort: { time: -1 }}); 
7. }}); 
8. Template.messages.events = { 
9. "click #add-message" : function(e){ 
10. var mes = prompt("Please enter message", ""); 
11. Messages.insert({ 
12. message: mes, time: Date.now() 
13. }); 27 /44
Пример: meteor_messages.js 
3. Template.messages.helpers( 
4. {messagesList: function () { 
5. return Messages.find({}, 
6. { sort: { time: -1 }}); 
7. }}); 
8. Template.messages.events = { 
9. "click #add-message" : function(e){ 
10. var mes = prompt("Please enter message", ""); 
11. Messages.insert({ 
12. message: mes, time: Date.now() 
13. }); 28 /44
Пример: meteor_messages.js 
3. Template.messages.helpers( 
4. {messagesList: function () { 
5. return Messages.find({}, 
6. { sort: { time: -1 }}); 
7. }}); 
8. Template.messages.events = { 
9. "click #add-message" : function(e){ 
10. var mes = prompt("Please enter message", ""); 
11. Messages.insert({ 
12. message: mes, time: Date.now() 
13. }); 29 /44
Meteor шаблонный язык 
Шаблонный движок Blaze 
Язык шаблонов Spacebars, основанный на 
Handlebars. 
Возможно подключить другие языки: Jade. 
30 /44
Пример: meteor_messages.html 
1. <body> 
2. {{> messages}} 
3. </body> 
4. 
5. <template name="messages"> 
6. {{#each messagesList}} 
7. {{message}}<br> 
8. {{/each}} 
9. 
10. <input type="button" value="Add message" 
11. id="add-message"/> 
12. </template> 31 /44
Пример: meteor_messages.html 
1. <body> 
2. {{> messages}} 
3. </body> 
4. 
5. <template name="messages"> 
6. {{#each messagesList}} 
7. {{message}}<br> 
8. {{/each}} 
9. 
10. <input type="button" value="Add message" 
11. id="add-message"/> 
12. </template> 32 /44
Пример: meteor_messages.html 
1. <body> 
2. {{> messages}} 
3. </body> 
4. 
5. <template name="messages"> 
6. {{#each messagesList}} 
7. {{message}}<br> 
8. {{/each}} 
9. 
10. <input type="button" value="Add message" 
11. id="add-message"/> 
12. </template> 33 /44
Пример: meteor_messages.html 
1. <body> 
2. {{> messages}} 
3. </body> 
4. 
5. <template name="messages"> 
6. {{#each messagesList}} 
7. {{message}}<br> 
8. {{/each}} 
9. 
10. <input type="button" value="Add message" 
11. id="add-message"/> 
12. </template> 34 /44
Пример: результат - быстро! 
35 /44
Пример: результат - быстро! 
Время создания проекта - 2 минуты! 
В результате: 
● Возможность создавать сообщения 
● Мгновенная синхронизация между клиентами 
36 /44
Обратная сторона медали 
1. подходит не для всех приложений 
2. управление подписками 
3. управление правами 
4. запуск на реальном сервере 
37 /44
Подходит не для всех приложений 
1. подходит не для всех приложений 
Подходит для много-пользовательских 
приложений. 
Реактивность - это не всегда хорошо. 
2. управление подписками 
3. управление правами 
4. запуск на реальном сервере 
38 /44
Подходит не для всех приложений 
1. подходит не для всех приложений 
2. управление подписками 
Нужно управлять подписками. 
3. управление правами 
4. запуск на реальном сервере 
39 /44
Подходит не для всех приложений 
1. подходит не для всех приложений 
2. управление подписками 
3. управление правами 
Нужно управлять правами 
4. запуск на реальном сервере 
40 /44
Подходит не для всех приложений 
1. подходит не для всех приложений 
2. управление подписками 
3. управление правами 
4. запуск на реальном сервере 
Потребуется NodeJs сервер 
балансировщик нагрузки 
кластер mongoDb 
41 /44
Вывод: meteor идеально для 
прототипа 
● Быстро разрабатывать 
● Удобно разрабатывать 
● Легко рефакторить 
42 /44
Попробуйте! 
1. Установите meteor: 
$ curl https://install.meteor.com/ | sh 
2. Экспериментируйте 
3. Посетите https://www.meteor.com/ 
43 /44
Спасибо за внимание 
Иван Рожков 
ivan133ru@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo KazymyrovFwdays
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersAleksey Fomkin
 
Dump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScriptDump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScriptMikhail Davydov
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»FDConf
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Fwdays
 
#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман СальниковJSib
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьCodeFest
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23MoscowJS
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложенияJohn Wezel
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik HimiranovFwdays
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Fwdays
 
День 2: Автоматизированное тестирование: Jenkins
 День 2: Автоматизированное тестирование: Jenkins День 2: Автоматизированное тестирование: Jenkins
День 2: Автоматизированное тестирование: JenkinsOleg Popov
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)7bits
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)Bakyt Niyazov
 
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium SQALab
 
Async Javascript
Async JavascriptAsync Javascript
Async JavascriptGetDev.NET
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеYandex
 

Was ist angesagt? (20)

"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
 
Алексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web WorkersАлексей Фомкин, Практическое применение Web Workers
Алексей Фомкин, Практическое применение Web Workers
 
Dump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScriptDump-IT Загрузка и инициализация JavaScript
Dump-IT Загрузка и инициализация JavaScript
 
Meteor
MeteorMeteor
Meteor
 
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 
#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников
 
Изоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесьИзоморфный JavaScript — будущее уже здесь
Изоморфный JavaScript — будущее уже здесь
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
 
"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov"Web Vitals monitoring & optimizations", Erik Himiranov
"Web Vitals monitoring & optimizations", Erik Himiranov
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
 
День 2: Автоматизированное тестирование: Jenkins
 День 2: Автоматизированное тестирование: Jenkins День 2: Автоматизированное тестирование: Jenkins
День 2: Автоматизированное тестирование: Jenkins
 
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)
 
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
 
Async Javascript
Async JavascriptAsync Javascript
Async Javascript
 
Spring in java
Spring in javaSpring in java
Spring in java
 
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртываниеВладимир Кузнецов — Прототип сайта: разработка и развёртывание
Владимир Кузнецов — Прототип сайта: разработка и развёртывание
 

Ähnlich wie Meteor за 15 минут

#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
Meteor Day in Bishkek, Nov.6, 2014
Meteor Day in Bishkek, Nov.6, 2014Meteor Day in Bishkek, Nov.6, 2014
Meteor Day in Bishkek, Nov.6, 2014Daler Karimov
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5Dima Dzuba
 
Enterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianEnterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianSergiy Shychynov
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node jsAlex Tumanoff
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Yandex
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
C# Desktop. Занятие 15.
C# Desktop. Занятие 15.C# Desktop. Занятие 15.
C# Desktop. Занятие 15.Igor Shkulipa
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммыPlatonov Sergey
 
Влад Селиверстов – Веб-сервер Phantom
Влад Селиверстов – Веб-сервер Phantom  Влад Селиверстов – Веб-сервер Phantom
Влад Селиверстов – Веб-сервер Phantom Media Gorod
 
«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...MDDay_4
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Dmytro Mindra
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»MskDotNet Community
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Yulia Tsisyk
 
UAFPUG6 - PureMVC
UAFPUG6 - PureMVCUAFPUG6 - PureMVC
UAFPUG6 - PureMVCmandrew182
 
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryUafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryMax Rozdobudko
 

Ähnlich wie Meteor за 15 минут (20)

#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
Meteor Day in Bishkek, Nov.6, 2014
Meteor Day in Bishkek, Nov.6, 2014Meteor Day in Bishkek, Nov.6, 2014
Meteor Day in Bishkek, Nov.6, 2014
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5
 
Enterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russianEnterprise flex pure mvc, slides, russian
Enterprise flex pure mvc, slides, russian
 
Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
Windows Azure and node js
Windows Azure and node jsWindows Azure and node js
Windows Azure and node js
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
C# Desktop. Занятие 15.
C# Desktop. Занятие 15.C# Desktop. Занятие 15.
C# Desktop. Занятие 15.
 
Асинхронность и сопрограммы
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммы
 
Log+
Log+Log+
Log+
 
Влад Селиверстов – Веб-сервер Phantom
Влад Селиверстов – Веб-сервер Phantom  Влад Селиверстов – Веб-сервер Phantom
Влад Селиверстов – Веб-сервер Phantom
 
«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...«трудности при разработке сложных распределённых систем на Java. способы реше...
«трудности при разработке сложных распределённых систем на Java. способы реше...
 
Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012 Windows Azure & NodeJS Microsoft SWIT 2012
Windows Azure & NodeJS Microsoft SWIT 2012
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
UAFPUG6 - PureMVC
UAFPUG6 - PureMVCUAFPUG6 - PureMVC
UAFPUG6 - PureMVC
 
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryUafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
 
PureMVC and Papervision
PureMVC and PapervisionPureMVC and Papervision
PureMVC and Papervision
 

Mehr von MoscowJS

Александр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in actionАлександр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in actionMoscowJS
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIMoscowJS
 
Favicon на стероидах
Favicon на стероидахFavicon на стероидах
Favicon на стероидахMoscowJS
 
E2E-тестирование мобильных приложений
E2E-тестирование мобильных приложенийE2E-тестирование мобильных приложений
E2E-тестирование мобильных приложенийMoscowJS
 
Reliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyReliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyMoscowJS
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkMoscowJS
 
Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31MoscowJS
 
Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31MoscowJS
 
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31MoscowJS
 
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31MoscowJS
 
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33MoscowJS
 
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33MoscowJS
 
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33MoscowJS
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...MoscowJS
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...MoscowJS
 
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29MoscowJS
 
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29MoscowJS
 
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29MoscowJS
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28MoscowJS
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27MoscowJS
 

Mehr von MoscowJS (20)

Александр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in actionАлександр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in action
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public API
 
Favicon на стероидах
Favicon на стероидахFavicon на стероидах
Favicon на стероидах
 
E2E-тестирование мобильных приложений
E2E-тестирование мобильных приложенийE2E-тестирование мобильных приложений
E2E-тестирование мобильных приложений
 
Reliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyReliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkey
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA Framework
 
Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31
 
Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31
 
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
 
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
 
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
 
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
 
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
 
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
 
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
 
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27
 

Meteor за 15 минут

  • 1. Meteor Js за 15 минут Иван Рожков Moscow Js Москва октябрь 2014
  • 2. Что такое Meteor? Это платформа для быстрого построения высококачественных веб приложений. Построена на Node JS. Текущая версия 0.9.4 2 /44
  • 3. Почему это интересно? 1. Быстрый старт. 2. Не писать лишний код. 3. Удобство и магия... 3 /44
  • 4. 1.Быстрый старт Все из коробки. Q:Что нужно для разработки на Meteor? A: Meteor! Установить - две минуты, далее сразу разработка! 4 /44
  • 5. 2. Не писать лишний код Meteor Логика на Клиенте Логика на Сервере Доступ к Данным JavaScript 5 /44 Один язык на клиенте и сервере
  • 6. REST AJAX data loading 6 /44 2. Не писать лишний код
  • 7. 3. Удобство и магия Все сделано для удобства разработки: 1. Автозагрузка файлов. 2. Классная система пакетов. 3. Автоматическое обновление кода. 4. Реактивность. ... 7 /44
  • 8. Автозагрузка файлов. Html Js a.html b.html c.html a.js b.js c.js Meteor a.css b.css c.css Css 8 /44
  • 9. Автозагрузка файлов. <script src="/scripts/browser.js"></script> <link rel="stylesheet" type="text/css" src="class.css"/> 9 /44
  • 10. Автозагрузка файлов. <script src="/scripts/browser.js"></script> <link rel="stylesheet" type="text/css" src="class.css"/> Не нужно инклюдить! 10 /44
  • 11. Система пакетов bootstap jquery d3 d3 Система пакетов 11 /44
  • 12. Система пакетов bootstap jquery d3 d3 Система пакетов bootstrap jquery d3 ... 12 /44
  • 13. Система пакетов ● пакеты работают с сервером и с клиентом ● позволяет создавать собственные пакеты ● легко расширяемая ● следит за версиями пакетов 13 /44
  • 14. Автоматическое обновление кода Код Meteor Сервер Клиент 1 Клиент 2 перезапуск изменение ... 14 /44
  • 15. Автоматическое обновление кода Код Meteor Сервер Клиент 1 Клиент 2 новый код ... 15 /44
  • 16. Автоматическое обновление кода Код Meteor Сервер перезапуск Клиент 1 ... Клиент 2 Метеор сам следит за актуальностью скриптов на клиенте! Больше никаких “нажмите Ctrl + R”! 16 /44
  • 17. Реактивность БД (данные) Meteor Сервер изменение Клиент 1 Клиент 2 Клиент N 17 /44 ...
  • 19. Как это работает Связь между клиентом и сервером осуществляется по DDP * протоколу. DDP отвечает за: ● синхронизацию данных между клиентом и сервером ● RPC (вызов серверных процедур на клиенте) * - data distributed protocol. 19 /44
  • 20. Как работает синхронизация DDP Клиент Сервер minimongo mongo 20 /44
  • 21. Пример: создание проекта > meteor create meteor_messages > ls -la .meteor meteor_messages.css meteor_messages.html meteor_messages.js > meteor 21 /44
  • 22. Пример: создание проекта > meteor create meteor_messages > ls -la Создаем проект .meteor meteor_messages.css meteor_messages.html meteor_messages.js Запускаем проект > meteor 22 /44
  • 23. Пример: meteor_messages.js 1. var Messages = new Meteor.Collection("messages"); 2. if(Meteor.isClient) { ... //клиентская логика 13. } 23 /44
  • 24. Пример: meteor_messages.js 1. var Messages = new Meteor.Collection("messages"); 2. if(Meteor.isClient) { ... //клиентская логика 13. } 24 /44
  • 25. Пример: meteor_messages.js 1. var Messages = new Meteor.Collection("messages"); 2. if(Meteor.isClient) { ... //клиентская логика 13. } 25 /44
  • 26. Пример: meteor_messages.js 1. var Messages = new Meteor.Collection("messages"); 2. if(Meteor.isClient) { 3. Template.messages.helpers( 4. {messagesList: function () { 5. return Messages.find({}, 6. { sort: { time: -1 }}); 6. }}); 7. Template.messages.events = { 8. "click #add-message" : function(e){ 9. var mes = prompt("Please enter message", ""); 10. Messages.insert({ 11. message: mes, time: Date.now() 12. }); 13. }}} 26 /44
  • 27. Пример: meteor_messages.js 3. Template.messages.helpers( 4. {messagesList: function () { 5. return Messages.find({}, 6. { sort: { time: -1 }}); 7. }}); 8. Template.messages.events = { 9. "click #add-message" : function(e){ 10. var mes = prompt("Please enter message", ""); 11. Messages.insert({ 12. message: mes, time: Date.now() 13. }); 27 /44
  • 28. Пример: meteor_messages.js 3. Template.messages.helpers( 4. {messagesList: function () { 5. return Messages.find({}, 6. { sort: { time: -1 }}); 7. }}); 8. Template.messages.events = { 9. "click #add-message" : function(e){ 10. var mes = prompt("Please enter message", ""); 11. Messages.insert({ 12. message: mes, time: Date.now() 13. }); 28 /44
  • 29. Пример: meteor_messages.js 3. Template.messages.helpers( 4. {messagesList: function () { 5. return Messages.find({}, 6. { sort: { time: -1 }}); 7. }}); 8. Template.messages.events = { 9. "click #add-message" : function(e){ 10. var mes = prompt("Please enter message", ""); 11. Messages.insert({ 12. message: mes, time: Date.now() 13. }); 29 /44
  • 30. Meteor шаблонный язык Шаблонный движок Blaze Язык шаблонов Spacebars, основанный на Handlebars. Возможно подключить другие языки: Jade. 30 /44
  • 31. Пример: meteor_messages.html 1. <body> 2. {{> messages}} 3. </body> 4. 5. <template name="messages"> 6. {{#each messagesList}} 7. {{message}}<br> 8. {{/each}} 9. 10. <input type="button" value="Add message" 11. id="add-message"/> 12. </template> 31 /44
  • 32. Пример: meteor_messages.html 1. <body> 2. {{> messages}} 3. </body> 4. 5. <template name="messages"> 6. {{#each messagesList}} 7. {{message}}<br> 8. {{/each}} 9. 10. <input type="button" value="Add message" 11. id="add-message"/> 12. </template> 32 /44
  • 33. Пример: meteor_messages.html 1. <body> 2. {{> messages}} 3. </body> 4. 5. <template name="messages"> 6. {{#each messagesList}} 7. {{message}}<br> 8. {{/each}} 9. 10. <input type="button" value="Add message" 11. id="add-message"/> 12. </template> 33 /44
  • 34. Пример: meteor_messages.html 1. <body> 2. {{> messages}} 3. </body> 4. 5. <template name="messages"> 6. {{#each messagesList}} 7. {{message}}<br> 8. {{/each}} 9. 10. <input type="button" value="Add message" 11. id="add-message"/> 12. </template> 34 /44
  • 35. Пример: результат - быстро! 35 /44
  • 36. Пример: результат - быстро! Время создания проекта - 2 минуты! В результате: ● Возможность создавать сообщения ● Мгновенная синхронизация между клиентами 36 /44
  • 37. Обратная сторона медали 1. подходит не для всех приложений 2. управление подписками 3. управление правами 4. запуск на реальном сервере 37 /44
  • 38. Подходит не для всех приложений 1. подходит не для всех приложений Подходит для много-пользовательских приложений. Реактивность - это не всегда хорошо. 2. управление подписками 3. управление правами 4. запуск на реальном сервере 38 /44
  • 39. Подходит не для всех приложений 1. подходит не для всех приложений 2. управление подписками Нужно управлять подписками. 3. управление правами 4. запуск на реальном сервере 39 /44
  • 40. Подходит не для всех приложений 1. подходит не для всех приложений 2. управление подписками 3. управление правами Нужно управлять правами 4. запуск на реальном сервере 40 /44
  • 41. Подходит не для всех приложений 1. подходит не для всех приложений 2. управление подписками 3. управление правами 4. запуск на реальном сервере Потребуется NodeJs сервер балансировщик нагрузки кластер mongoDb 41 /44
  • 42. Вывод: meteor идеально для прототипа ● Быстро разрабатывать ● Удобно разрабатывать ● Легко рефакторить 42 /44
  • 43. Попробуйте! 1. Установите meteor: $ curl https://install.meteor.com/ | sh 2. Экспериментируйте 3. Посетите https://www.meteor.com/ 43 /44
  • 44. Спасибо за внимание Иван Рожков ivan133ru@gmail.com