Сергей Морковкин "Разработка realtime spa с...

25
Сергей Морковкин Lohika Разработка Realtime SPA с использованием VueJS и RethinkDB

Upload: fwdays

Post on 14-Jan-2017

170 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Сергей МорковкинLohika

Разработка Realtime SPA с использованием VueJS и RethinkDB

Page 2: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

ПОСТАНОВКА ЗАДАЧИКакую проблему будем решать?

Разработать одностраничное web-приложение с возможностью realtime взаимодействия, используя

современный и не избыточный стек технологий.

ПРОСТОЕЛЕГКОЕ БЫСТРОЕ

Page 3: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

БЫСТРОДЕЙСТВИЕЧто критично для realtime-приложений?

4

3

2

1 Моментальный доступ к обновлениям в БД

Соединение с сервером в режиме real-time

Высокая скорость обновления DOM-модели

Всевозможные оптимизации траффика

Page 4: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

СТЕК ТЕХНОЛОГИЙ

STORAGE TRANSPORT FRAMEWORK

Что нам потребуется для realtime SPA?

RETHINK.DB WEB SOCKETS(SOCK.JS or SOCKET.IO)

VUE.JS

Page 5: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Какие выгоды использования данной связки?СТЕК ТЕХНОЛОГИЙ

ПОДПИСКИ НА ИЗМЕНЕНИЕ ДАННЫХ

ВЫСОКАЯ ПРОИЗВОДИТЕЛЬНОСТЬ

ЛЕГКАЯ МАСШТАБИРУЕМОСТЬ

ПРОСТОТА, ЛЕГКОСТЬ И СКОРОСТЬ

ПОЛНАЯ РЕАКТИВНОСТЬ

РАЗВИТАЯ ИНФРАСТРУКТУРА

Page 6: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Client Server

GET /APP (много файлов)

REST API по HTTP(S)

WEB SOCKET FULL DUPLEX

RETHINK.DBVUE.JS

Page 7: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

RETHINK.DBVUE.JS

PUB/SUB

Как это работает?REALTIME-ВЗАИМОДЕЙСТВИЕ

SUBSCRIBE

PUBLISH

ACTION

Page 8: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

SERVER DB

дай мне все изменения

дай мне все изменения

отправить в сокет

отправить в сокет

НЕДОСТАТКИ POLLING-а

update

Page 9: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

отправить в сокет

ПРЕИМУЩЕСТВА CHANGEFEEDs

SERVER DB

подписываюсь

update

Page 10: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Какой алгоритм эффективнее и быстрее?POLLING vs CHANGEFEED

POLLING CHANGEFEED

VS

блокирующие вызовы нет блокирующих вызовов

перегрузка БД запросами нет излишней нагрузки

простота реализациисложность реализации

большая задержка минимальная задержка

Page 11: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Может ли RethinkDB оповещать нас?CHANGEFEEDS в RETHINK.DB

Page 12: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Как взаимодействовать с RethinkDB?ПРИМЕРЫ ЗАПРОСОВ REQL

Page 13: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

СРАВНЕНИЕ REQL С ДРУГИМИ ЯЗЫКАМИ

MySQL MongoQL ReQL

Page 14: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Функциональность или производительность?РЕЖИМЫ РАБОТЫ VUE.JS

STANDALONE RUNTIME-ONLY

VS

есть компилятор шаблонов легкий, без компилятора

полная поддержка шаблонов только в файлах компонентов

пре-компиляция при сборкекомпиляция на клиенте

24.74 Kb 17.24 Kb

шаблоны передаются как строки передаются как render-функции

Page 15: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Vue.JS React

Самый быстрый 23ms 63ms

Медиана 42ms 81ms

Среднее 51ms 94ms

Самый медленный 343ms 453ms

Кто быстрее в рендеринге?СРАВНЕНИЕ VUE.JS И REACT

https://github.com/chrisvfritz/vue-render-performance-comparisons

Page 16: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

СИНТАКСИС ШАБЛОНОВ VUE.JS

Page 17: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Зачем она нужна?ВИРТУАЛЬНАЯ DOM

APP VIRTUAL DOM REAL DOM

JavaScript Environment

build/modify build/modify

eventsevents

Page 18: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Как она работает?ВИРТУАЛЬНАЯ DOM

CHANGE #1 CHANGE #2 REAL DOM

Page 19: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Как она работает?РЕАКТИВНОСТЬ VUE.JS

Page 20: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Зачем это нужно?СИСТЕМА КОМПОНЕНТОВ VUE.JS

Page 21: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

В чем ее преимущества?СИСТЕМА КОМПОНЕНТОВ VUE.JS

Позволяет повторно использовать компоненты

Позволяет разбить приложение на составные части

Поддерживает 1-файловые компоненты (JS, CSS, HTML)

Уже сейчас соответствует Web Components Spec от W3C

Система распределения контента на основе слотов

Page 22: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Как разрабатывать компонент в одном файле?СИСТЕМА КОМПОНЕНТОВ VUE.JS

}

Page 23: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Какие существуют способы маршрутизации?МАРШРУТИЗАЦИЯ В VUE.JS

Vue Router

3rd Party Library

Custom Router

официально рекомендован +7.01 Kb

можно подключить page.js, director и др.

контроль нужно писать и отлаживать код

Page 24: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Что облегчит и ускорит работу?«ПЛЮШКИ» ДЛЯ РАЗРАБОТЧИКОВ

ИНСТРУМЕНТЫ РАЗРАБОТЧИКА VUE-DEVTOOLS ДЛЯ CHROME

СЕРВЕР РАЗРАБОТКИ С HMR (HOT MODULE REPLACEMENT)

ВОЗМОЖНОСТЬ СОЗДАВАТЬ 1-ФАЙЛОВЫЕ КОМПОНЕНТЫ

ШАБЛОНЫ И RENDER-ФУНКЦИИ С JSX (ОПЦИОНАЛЬНО)

ОФИЦИАЛЬНЫЙ CLI ДЛЯ БЫСТРОГО СКЭФФОЛДИНГА

Page 25: Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"

Facebook: https://www.facebook.com/sergey.morkovkin.5

LinkedIn: https://ua.linkedin.com/in/sergeymorkovkin

Email: [email protected]

Portfolio: http://morkovkin.info

Skype: sergeymorkovkin

Viber: +38 (050) 445-01-45

Сергей Морковкин

БЛАГОДАРЮ ЗА ВНИМАНИЕ