Top Banner
ОБО МНЕ Работаю в Avito Делаю большое SPA Преподаю JS в LoftSchool Учу создавать веб-приложения Люблю жену и JS Но больше жену Распространяю basis.js Верю, что basis.js захватит мир Сергей Мелюков 1 @smelukov
32

Современные Single Page Application

Jan 07, 2017

Download

Internet

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Современные Single Page Application

ОБО МНЕ

Работаю в Avito Делаю большое SPA

Преподаю JS в LoftSchool Учу создавать веб-приложения

Люблю жену и JS Но больше жену

Распространяю basis.js Верю, что basis.js захватит мир

Сергей Мелюков

1

@smelukov

Page 2: Современные Single Page Application

SINGLE PAGE APPLICATION

СОВРЕМЕННЫЕ

2

Page 3: Современные Single Page Application

ПЛАН

3

• история развития • проблемы разработки • решение проблем • демонстрация • Q&A

О ЧЕМ ПОГОВОРИМ

Page 4: Современные Single Page Application

ХАОС И УНЫНИЕДО 2005 ГОДА

• Internet Explorer 6 • IFrame • ActiveX • Java Applet • Flash

4

Page 5: Современные Single Page Application

РЫВОК В СТОРОНУ ИНТЕРАКТИВНОСТИ2005-2008 ГОДА

• AJAX • SSE • JSON-P • jQuery • Internet Explorer 6 всё еще жив

5

Page 6: Современные Single Page Application

СТРЕМИТЕЛЬНОЕ РАЗВИТИЕ ТЕХГОЛОГИЙ2008-НАШИ ДНИ

• HTML 5 • Angular • Backbone • Knockout • React

6

Page 7: Современные Single Page Application

ОДНОСТРАНИЧНОЕ ПРИЛОЖЕНИЕSPA

«Нет» - перезагрузкам страниц!

• уменьшение общего времени ожидания

• ощущение целостности

• стирание границ web - desktop

7

Page 8: Современные Single Page Application

ДЕЛАТЬ КРУТЫЕ ВЕБ-ПРИЛОЖЕНИЯТЕПЕРЬ-ТО МЫ МОЖЕМ

Правда…?

8

Page 9: Современные Single Page Application

АРХИТЕКТУРАПРОБЛЕМА #1

• расширяемость без костылей

• работоспособность с течением времени

• переиспользование

9

Page 10: Современные Single Page Application

ИСПОЛНИТЕЛИПРИЛОЖЕНИЕ-КАТАЛОГ

• список исполнителей

• количество альбомов

• пагинация

10

Page 11: Современные Single Page Application

ЖАНРЫПРИЛОЖЕНИЕ-КАТАЛОГ

• список жанров

• количество альбомов

• пагинация

11

Page 12: Современные Single Page Application

ИСПОЛНИТЕЛЬПРИЛОЖЕНИЕ-КАТАЛОГ

• жанры

• альбомы

• треки

• длительность

• пагинация

12

Page 13: Современные Single Page Application

АЛЬБОМПРИЛОЖЕНИЕ-КАТАЛОГ

• треки

• длительность

• пагинация

• реакция на изменения

13

Page 14: Современные Single Page Application

ПЕРЕИСПОЛЬЗОВАНИЕ

14

ОДИН ИСТОЧНИК - МНОГО ОТОБРАЖЕНИЙ

СПИСОК ИСПОЛНИТЕЛЕЙ

ЖАНРЫ И АЛЬБОМЫ

ИСПОЛНИТЕЛЬ

АЛЬБОМ

ВИДЖЕТЫ

СТАТИСТИКА

ОБЛАКО ТЕГОВ

ГРАФИКИ

ИСПОЛНИТЕЛИ АЛЬБОМЫ ПЕСНИ ЖАНРЫ

Page 15: Современные Single Page Application

ГЛАВНЫЙ ВОПРОСПЕРЕИСПОЛЬЗОВАНИЕ

- Надо ли постоянно запрашивать с сервера новые данные?

- Нет! Храните всё на клиенте.

15

Page 16: Современные Single Page Application

КАКОЙ ОБЪЕМ ДАННЫХ МОЖНО ОБРАБОТАТЬ НА КЛИЕНТЕ?ПЕРЕИСПОЛЬЗОВАНИЕ

• 1 000 записей?

• 5 000 записей?

• 10 000 записей?

• 50 000 записей?

Всё упирается в ресурсы, алгоритмы и архитектуру!

16

Page 17: Современные Single Page Application

МНОГО ДАННЫХПРОБЛЕМА #2

• как получать?

• как хранить?

• как обрабатывать?

• как отображать?

17

Page 18: Современные Single Page Application

DATA FLOWЖИЗНЕННЫЙ ЦИКЛ НЕ SPA

БРАУЗЕРСЕРВЕР ПОЛЬЗОВАТЕЛЬ

HTML DOM

действияредирект

18

Page 19: Современные Single Page Application

DATA FLOWЖИЗНЕННЫЙ ЦИКЛ SPA

SPA ПРИЛОЖЕНИЕСЕРВЕР

статика/JSON

get/post

ОТОБРАЖЕНИЕ

?ПОЛЬЗОВАТЕЛЬ

DOM

действия

19

Page 20: Современные Single Page Application

ШАБЛОН

<DIV>{NAME}</DIV> <DIV>{LAST_NAME}</DIV>

ОТОБРАЖЕНИЕСТРОКОВЫЕ ШАБЛОНИЗАТОРЫ

ДАННЫЕСЕРВЕР БРАУЗЕР

полная перерисовка

узлов

20

Page 21: Современные Single Page Application

ШАБЛОН

<DIV>{NAME}</DIV> <DIV>{LAST_NAME}</DIV>

ОТОБРАЖЕНИЕDOM-ШАБЛОНИЗАТОРЫ

ДАННЫЕ

СЕРВЕР БРАУЗЕР

перерисовка изменившихся

узлов

ИМЕЮЩИЕСЯ ДАННЫЕ

РАЗНИЦА

21

Page 22: Современные Single Page Application

ИНСТРУМЕНТЫ РАЗРАБОТКИПРОБЛЕМА #3

Найти и исправить:

• компонент

• шаблон

• словарь

Data flow

22

Page 23: Современные Single Page Application

КОДОВАЯ БАЗА

23

ПРОСТОЕ ПРИЛОЖЕНИЕ

Page 24: Современные Single Page Application

КОДОВАЯ БАЗА

24

СЛОЖНОЕ ПРИЛОЖЕНИЕ

Page 25: Современные Single Page Application

DATA FLOW

25

ОТКУДА БЕРУТСЯ ДАННЫЕ?

Page 26: Современные Single Page Application

DATA FLOW

26

КАКОЙ ПУТЬ ПРОХОДЯТ ДАННЫЕ?

Page 27: Современные Single Page Application

27

BASIS.JSПЛАТФОРМА ДЛЯ ПОСТРОЕНИЯ SPA

Page 28: Современные Single Page Application

BASIS.JS РЕШАЕТ ПРОБЛЕМЫ

28

• модульность (js, tmpl, css) • компонентный подход • структуры данных • DOM-шаблонизация • поддержка FRP • инструменты разработки

Page 29: Современные Single Page Application

BASIS.JSОСНОВНЫЕ ВЕХИ

• НАЧАЛО РАЗВИТИЯ • ПЕРВОЕ SPA

2006 - 2007

• V 1.0 • ИЗОЛЯЦИЯ СТИЛЕЙ • ЛОКАЛИЗАЦИЯ • LIVE UPDATE • INSPECTOR • ПЛАГИН ДЛЯ CHROME

2008 - 2011 2012 - 2014 2015 - …

• ИНСТРУМЕНТИРОВАНИЕ • REMOTE INSPECTOR • РАЗВИТИЕ FRP• МОДЕЛИ

• ИНДЕКСЫ • МОДУЛЬНОСТЬ • ШАБЛОНИЗАТОР • DEV TOOLS

29

Page 30: Современные Single Page Application

DEMOSPA НА BASIS.JS

30

Page 31: Современные Single Page Application

DEMOСТАТИСТИКА

31

Исполнители: 300 (0.8 мб) Альбомы: 15 600 (13.6 мб) Композиции: 156 096 (62.5 мб) Индексы, DOM: 85.1 мб Занято памяти: 162 мб Самая долгая операция: запуск (2 сек)

Page 32: Современные Single Page Application

»

«задавайте ваши вопросы

СПАСИБО ЗА ВНИМАНИЕ

32

http://basisjs.com - официальный сайт http://bit.ly/2blnRaj - цикл статей