Meteor за 15 минут

44
Meteor Js за 15 минут Иван Рожков Moscow Js Москва октябрь 2014

description

Слайды выступления Ивана Рожкова на MoscowJS 16. Тема доклада "Meteor за 15 минут"

Transcript of Meteor за 15 минут

Page 1: Meteor за 15 минут

Meteor Js за 15 минут

Иван Рожков Moscow Js

Москва октябрь 2014

Page 2: Meteor за 15 минут

Что такое Meteor?Это платформа для быстрого построения высококачественных веб приложений.

Построена на Node JS.

Текущая версия 0.9.4

2 /44

Page 3: Meteor за 15 минут

Почему это интересно?1. Быстрый старт.2. Не писать лишний код.3. Удобство и магия...

3 /44

Page 4: Meteor за 15 минут

1.Быстрый старт

Все из коробки.Q:Что нужно для разработки на Meteor?

A: Meteor!Установить - две минуты, далее сразу разработка!

4 /44

Page 5: Meteor за 15 минут

2. Не писать лишний код

Meteor

Логика на Клиенте

Логика на Сервере

Доступ к Данным

JavaScript

5 /44

Один язык на клиенте и сервере

Page 6: Meteor за 15 минут

REST AJAX data loading

6 /44

2. Не писать лишний код

Page 7: Meteor за 15 минут

3. Удобство и магияВсе сделано для удобства разработки:1. Автозагрузка файлов.2. Классная система пакетов.3. Автоматическое обновление кода.4. Реактивность....

7 /44

Page 8: Meteor за 15 минут

Автозагрузка файлов.

Html

Js

a.html b.htmlc.html

a.js b.jsc.js

Meteora.css b.css

c.cssCss

8 /44

Page 9: Meteor за 15 минут

Автозагрузка файлов.

<script src="/scripts/browser.js"></script>

<link rel="stylesheet" type="text/css" src="class.css"/>

9 /44

Page 10: Meteor за 15 минут

Автозагрузка файлов.

<script src="/scripts/browser.js"></script>

<link rel="stylesheet" type="text/css" src="class.css"/>

Не нужно инклюдить!

10 /44

Page 11: Meteor за 15 минут

d3

Система пакетов

bootstapjquery

d3Система пакетов

11 /44

Page 12: Meteor за 15 минут

d3

Система пакетов

bootstapjquery

d3Система пакетов

bootstrapjqueryd3

...

12 /44

Page 13: Meteor за 15 минут

Система пакетов

● пакеты работают с сервером и с клиентом● позволяет создавать собственные пакеты● легко расширяемая● следит за версиями пакетов

13 /44

Page 14: Meteor за 15 минут

Автоматическое обновление кода

Код Meteor Сервер

Клиент 1

Клиент 2перезапуск

изменение

...

14 /44

Page 15: Meteor за 15 минут

Автоматическое обновление кода

Код Meteor Сервер

Клиент 1

Клиент 2

новый код

...

15 /44

Page 16: Meteor за 15 минут

Автоматическое обновление кода

Код Meteor Сервер

Клиент 1

Клиент 2

...

Метеор сам следит за актуальностью скриптов на клиенте!Больше никаких “нажмите Ctrl + R”!

16 /44

перезапуск

Page 17: Meteor за 15 минут

РеактивностьБД (данные)

Meteor Сервер

Клиент 1 Клиент 2

изменение

Клиент N17 /44

...

Page 18: Meteor за 15 минут

Как это работает

Page 19: Meteor за 15 минут

Как это работаетСвязь между клиентом и сервером осуществляется по DDP протоколу.

DDP отвечает за:● синхронизацию данных между клиентом и

сервером● RPC (вызов серверных процедур на клиенте)

*

* - data distributed protocol. 19 /44

Page 20: Meteor за 15 минут

Как работает синхронизация

Клиент СерверDDP

minimongo mongo

20 /44

Page 21: Meteor за 15 минут

Пример: создание проекта> meteor create meteor_messages

> ls -la

.meteormeteor_messages.cssmeteor_messages.htmlmeteor_messages.js

> meteor 21 /44

Page 22: Meteor за 15 минут

Пример: создание проекта> meteor create meteor_messages

> ls -la

.meteormeteor_messages.cssmeteor_messages.htmlmeteor_messages.js

> meteor 22 /44

Создаем проект

Запускаем проект

Page 23: Meteor за 15 минут

Пример: meteor_messages.js 1. var Messages = new Meteor.Collection("messages"); 2. if(Meteor.isClient) {... //клиентская логика13. }

23 /44

Page 24: Meteor за 15 минут

Пример: meteor_messages.js 1. var Messages = new Meteor.Collection("messages"); 2. if(Meteor.isClient) {... //клиентская логика13. }

24 /44

Page 25: Meteor за 15 минут

Пример: meteor_messages.js 1. var Messages = new Meteor.Collection("messages"); 2. if(Meteor.isClient) {... //клиентская логика13. }

25 /44

Page 26: Meteor за 15 минут

Пример: 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

Page 27: Meteor за 15 минут

Пример: 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

Page 28: Meteor за 15 минут

Пример: 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

Page 29: Meteor за 15 минут

Пример: 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

Page 30: Meteor за 15 минут

Meteor шаблонный языкШаблонный движок BlazeЯзык шаблонов Spacebars, основанный на Handlebars.

Возможно подключить другие языки: Jade.

30 /44

Page 31: Meteor за 15 минут

Пример: 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

Page 32: Meteor за 15 минут

Пример: 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

Page 33: Meteor за 15 минут

Пример: 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

Page 34: Meteor за 15 минут

Пример: 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

Page 35: Meteor за 15 минут

Пример: результат - быстро!

35 /44

Page 36: Meteor за 15 минут

Пример: результат - быстро!

Время создания проекта - 2 минуты!В результате:● Возможность создавать сообщения● Мгновенная синхронизация между клиентами

36 /44

Page 37: Meteor за 15 минут

Обратная сторона медали1. подходит не для всех приложений2. управление подписками3. управление правами4. запуск на реальном сервере

37 /44

Page 38: Meteor за 15 минут

Подходит не для всех приложений1. подходит не для всех приложений

Подходит для много-пользовательских приложений. Реактивность - это не всегда хорошо.

2. управление подписками3. управление правами4. запуск на реальном сервере

38 /44

Page 39: Meteor за 15 минут

Подходит не для всех приложений1. подходит не для всех приложений2. управление подписками

Нужно управлять подписками.

3. управление правами4. запуск на реальном сервере

39 /44

Page 40: Meteor за 15 минут

Подходит не для всех приложений1. подходит не для всех приложений2. управление подписками3. управление правами

Нужно управлять правами

4. запуск на реальном сервере

40 /44

Page 41: Meteor за 15 минут

Подходит не для всех приложений1. подходит не для всех приложений2. управление подписками3. управление правами4. запуск на реальном сервере

Потребуется NodeJs сервербалансировщик нагрузкикластер mongoDb

41 /44

Page 42: Meteor за 15 минут

Вывод: meteor идеально для прототипа● Быстро разрабатывать● Удобно разрабатывать● Легко рефакторить

42 /44

Page 43: Meteor за 15 минут

Попробуйте!

1. Установите meteor:

$ curl https://install.meteor.com/ | sh

2. Экспериментируйте

3. Посетите https://www.meteor.com/

43 /44

Page 44: Meteor за 15 минут

Спасибо за внимание

Иван Рожков

[email protected]