Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев

Ontico
OnticoOntico
Rich-client, или Как я перестал
бояться и полюбил велосипеды
Владимир Дупелев
Rich UI приложение
• Функциональность без перезагрузки страницы
• Большой объем данных
• Разнообразные визуальные компоненты
• Вложенные диалоги
• Быстрый отклик
• Стабильность
Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев
Где проблемы?
• Архитектура
• Отображение
• Поддержка
Архитектура Rich UI приложения
• Уровни абстракции, модули
• Разрешение зависимостей
• Асинхронная работа с сервером
Разрешение зависимостей
• Поиск файлов
• Объявления модулей
• Кеширование модулей
• Создание синглетонов
• Перезапись
Спецификация Модуля:
- CommonJS / Modules
- CommonJS / Packages
- AMD
Быстрый загрузчик
Модуль RequreJS
Имя можно опустить
Магия поиска модуля
Циркулярные зависимости
Время и память
Изменения
Имя модуля = Путь в проекте
Поиск только по имени
Доверяйте программистам
Соберите ядро в один файл
Определение модуля
AMD
define(['a.js', 'b.js'],
function(A, B) {…})
Не сопоставить пути и аргументы
Добавить в середину невозможно
Конфликты имен
Изменения
define({A:'a.js', B:'b.js'},
function($$) {…})
Группировка путей и имен модулей
Легко изменять, удалять, добавлять
Есть корневое пространство
Архитектура Rich UI приложения
• Уровни абстракции, модули
• Разрешение зависимостей. Inversion of control
• Асинхронная работа с сервером
Обещания
Шаблон future, в библиотеке JQuery - Deferred
• Откажитесь от цепочек .then
• Динамический require ведет к deferred
• Разрешите модули заранее, используйте их синхронно
Где проблемы?
• Архитектура
• Отображение
• Поддержка
• Model — чистые данные
• ModelView — активные данные + команды
• Bindings — связь активных данных и компонентов
• View — компоненты и DOM
Шаблон MVVM
• Различные источники и схемы данных
• Несколько операций на чтение и запись
• Каскады асинхронных команд
• Прерывание и подключение
• Агрегация в сервисном слое
Model — чистые данные
• Содержит свойства или набор сущностей
• Дает их изменить
• Бросает события
• Не воздействует на вложенные активные данные
• Содержит бизнес-логику
• Аккуратно разрушается
ModelView — активные данные
Backbone
Разбор параметров
Опции для событий
Событие «всё изменилось»
Отслеживание циклов
Установка свойств
Изменения
Пара - имя, значение
Отдельный код для silent
Никогда не используется
Тестирование
Backbone, AngularJS
Разбор параметров
Не различает цель
Всегда отрабатывает
События изменения
Изменения
Однозначные параметры
Отдельный код для self trigger
Проверка на disposed
• Компонент — тоже активная модель
• Отображается в DOM
• Следит за свойствами, обновляет DOM
• Следит за событиями DOM, обновляет свойства
• Не содержит бизнес-логики
• Аккуратно разрушается
View — компоненты и DOM
Представление DOM
JQuery обертка
Читает из html строки
Ссылка на DOM Element
Добавление .append()
Вставка в броузер .append()
Изменения
Свой dsl
Объект в AST со свойством id
Конкатинация строк
Вставка в броузер .innerHTML
Вставка 10 000 <div>
.append()
500-1000мс
Не теряем DOM Element
Установка событий когда угодно
Strings + InnerHTML
30-60мс
Ленивый поиск по id
Установка событий после вставки
Где проблемы?
• Архитектура
• Отображение
• Поддержка
Поддержка Rich UI приложения
• Лог
– Отдавайте на сервер
– Покажите объекты в JSON
• Дамп состояния
– Данные — малый объем, быстро
– Компонеты — большой объем, медленно
• Консоль
Спасибо за внимание!
1 sur 22

Recommandé

RDSDataSource: Flux, Redux, ReSwift par
RDSDataSource: Flux, Redux, ReSwiftRDSDataSource: Flux, Redux, ReSwift
RDSDataSource: Flux, Redux, ReSwiftRAMBLER&Co
466 vues33 diapositives
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор par
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзорCloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзорClouds NN
709 vues53 diapositives
CQRS innovations par
CQRS innovationsCQRS innovations
CQRS innovationsAndrey Lomakin
2.2K vues58 diapositives
ASP.NET MVC par
ASP.NET MVCASP.NET MVC
ASP.NET MVCGetDev.NET
784 vues21 diapositives
PowerShell DSC и SharePoint 2016 par
PowerShell DSC и SharePoint 2016PowerShell DSC и SharePoint 2016
PowerShell DSC и SharePoint 2016Vitaly Zhukov
536 vues13 diapositives
JavaScript design patterns overview par
JavaScript design patterns overview JavaScript design patterns overview
JavaScript design patterns overview Kseniya Redunova
1.7K vues32 diapositives

Contenu connexe

Tendances

ASP.NET MVC: new era? par
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?Alexander Konduforov
1.6K vues20 diapositives
Azure - хранение данных в облаке par
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облакеAlexander Babich
263 vues64 diapositives
Интеграция TeamCity и сервера символов | Алексей Соловьев par
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей СоловьевPositive Hack Days
2.3K vues9 diapositives
knockout.js par
knockout.jsknockout.js
knockout.jsAnton Patrushev
691 vues31 diapositives
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость par
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьEatDog
463 vues41 diapositives
04-Hibernate. Создание проекта par
04-Hibernate. Создание проекта04-Hibernate. Создание проекта
04-Hibernate. Создание проектаRoman Brovko
3.1K vues7 diapositives

Tendances(20)

Azure - хранение данных в облаке par Alexander Babich
Azure - хранение данных в облакеAzure - хранение данных в облаке
Azure - хранение данных в облаке
Alexander Babich263 vues
Интеграция TeamCity и сервера символов | Алексей Соловьев par Positive Hack Days
Интеграция TeamCity и сервера символов | Алексей СоловьевИнтеграция TeamCity и сервера символов | Алексей Соловьев
Интеграция TeamCity и сервера символов | Алексей Соловьев
Positive Hack Days2.3K vues
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость par EatDog
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемостьAPI в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
API в SAAS, с облаком и без: ресурсы, SLA, балансировка, расширяемость
EatDog463 vues
04-Hibernate. Создание проекта par Roman Brovko
04-Hibernate. Создание проекта04-Hibernate. Создание проекта
04-Hibernate. Создание проекта
Roman Brovko3.1K vues
Drupal и мобильные устройства par Konstantin Komelin
Drupal и мобильные устройстваDrupal и мобильные устройства
Drupal и мобильные устройства
Drupal и мобильные устройства комелин константин par drupalconf
Drupal и мобильные устройства комелин константинDrupal и мобильные устройства комелин константин
Drupal и мобильные устройства комелин константин
drupalconf498 vues
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O... par WDDay
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
WDDay 20 vues
Azure - подведение итогов par Alexander Babich
Azure - подведение итоговAzure - подведение итогов
Azure - подведение итогов
Alexander Babich302 vues
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance" par Fwdays
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Евгений Остапчук "Tips&Tricks for ASP.NET MVC performance"
Fwdays518 vues
Андрей Чебукин "Построение успешных API" par Fwdays
Андрей Чебукин "Построение успешных API"Андрей Чебукин "Построение успешных API"
Андрей Чебукин "Построение успешных API"
Fwdays853 vues
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г... par Ontico
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
API плюс толстый клиент – новая парадигма веб-разработки? / Андрей Лебедев (Г...
Ontico1.1K vues
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver par Alex Mikitenko
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Alex Mikitenko752 vues
Построение собственного JS SDK — зачем и как? par buranLcme
Построение собственного JS SDK — зачем и как?Построение собственного JS SDK — зачем и как?
Построение собственного JS SDK — зачем и как?
buranLcme2.4K vues
Сергей Рыжиков (1С-Битрикс) par Ontico
Сергей Рыжиков (1С-Битрикс)Сергей Рыжиков (1С-Битрикс)
Сергей Рыжиков (1С-Битрикс)
Ontico1.6K vues
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting par Yandex
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA ConsultingРазработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 — Николай Надоричев, MOLGA Consulting
Yandex1.5K vues
Объединенная вычислительная система Cisco UCS. Часть 2 par Cisco Russia
Объединенная вычислительная система Cisco UCS. Часть 2Объединенная вычислительная система Cisco UCS. Часть 2
Объединенная вычислительная система Cisco UCS. Часть 2
Cisco Russia 436 vues
Диагностика производительности корпоративных приложений (Малышев) par КРОК
Диагностика производительности корпоративных приложений (Малышев)Диагностика производительности корпоративных приложений (Малышев)
Диагностика производительности корпоративных приложений (Малышев)
КРОК145 vues

Similaire à Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев

ASP.NET, MVC, ASP.NET MVC par
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
2.6K vues29 diapositives
Simonova sql server-enginetesting par
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetestingComputer Science Club
258 vues35 diapositives
Simonova sql server-enginetesting par
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetestingLiloSEA
254 vues35 diapositives
Simonova CSEDays par
Simonova CSEDaysSimonova CSEDays
Simonova CSEDaysLiloSEA
216 vues35 diapositives
Katerina Simonova CSEDays par
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
278 vues35 diapositives
Katerina Simonova CSEDays par
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
1 vue35 diapositives

Similaire à Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев(20)

ASP.NET, MVC, ASP.NET MVC par GetDev.NET
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET2.6K vues
Simonova sql server-enginetesting par LiloSEA
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
LiloSEA254 vues
Simonova CSEDays par LiloSEA
Simonova CSEDaysSimonova CSEDays
Simonova CSEDays
LiloSEA216 vues
Katerina Simonova CSEDays par LiloSEA
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA278 vues
Katerina Simonova CSEDays par LiloSEA
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA1 vue
Создание повторно используемых бизнес моделей с помощью технологии Domain Com... par GetDev.NET
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
Создание повторно используемых бизнес моделей с помощью технологии Domain Com...
GetDev.NET1.5K vues
И снова разработка под iOS. Павел Тайкало par Stanfy
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
Stanfy659 vues
Расширяемая платформа для создания и управления автоматизированными тестами н... par jazzteam
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam1.9K vues
Database Tuning Method & Technics par Denis Beskov
Database Tuning Method & TechnicsDatabase Tuning Method & Technics
Database Tuning Method & Technics
Denis Beskov630 vues
09 - Web-технологии. MVC фреймворки par Roman Brovko
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Roman Brovko158 vues
Great functional testing with WebDriver and Thucydides par Mikalai Alimenkou
Great functional testing with WebDriver and ThucydidesGreat functional testing with WebDriver and Thucydides
Great functional testing with WebDriver and Thucydides
Mikalai Alimenkou8.9K vues
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД par Andrew Sovtsov
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
14-02-26 DBA 101_ как найти и устранить причины замедления работы БД
Andrew Sovtsov403 vues
Платформа Docsvision par Docsvision
Платформа DocsvisionПлатформа Docsvision
Платформа Docsvision
Docsvision13.4K vues
Версионирование требований. Бейзлайны par Evgeny Savitsky
Версионирование требований. БейзлайныВерсионирование требований. Бейзлайны
Версионирование требований. Бейзлайны
Evgeny Savitsky402 vues
Стандарты и соглашения в сложных ООП-приложениях par Magecom Ukraine
Стандарты и соглашения в сложных ООП-приложенияхСтандарты и соглашения в сложных ООП-приложениях
Стандарты и соглашения в сложных ООП-приложениях
Magecom Ukraine539 vues
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб... par Yandex
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
Yandex1.1K vues
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended) par Roman Dvornov
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Roman Dvornov1.7K vues

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье... par
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
3.4K vues50 diapositives
Масштабируя DNS / Артем Гавриченков (Qrator Labs) par
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
1.1K vues78 diapositives
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft) par
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
1.3K vues24 diapositives
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса... par
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
1.1K vues58 diapositives
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre... par
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
1.1K vues28 diapositives
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres) par
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
2.3K vues35 diapositives

Plus de Ontico(20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье... par Ontico
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico3.4K vues
Масштабируя DNS / Артем Гавриченков (Qrator Labs) par Ontico
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico1.1K vues
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft) par Ontico
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico1.3K vues
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса... par Ontico
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico1.1K vues
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre... par Ontico
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico1.1K vues
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres) par Ontico
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico2.3K vues
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve... par Ontico
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico4.3K vues
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский... par Ontico
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico440 vues
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona) par Ontico
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico766 vues
MySQL Replication — Advanced Features / Петр Зайцев (Percona) par Ontico
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico429 vues
Внутренний open-source. Как разрабатывать мобильное приложение большим количе... par Ontico
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico1.2K vues
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев... par Ontico
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico544 vues
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ... par Ontico
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico372 vues
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs) par Ontico
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico450 vues
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС) par Ontico
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico361 vues
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU) par Ontico
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico2K vues
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.) par Ontico
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico1.7K vues
100500 способов кэширования в Oracle Database или как достичь максимальной ск... par Ontico
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico286 vues
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает... par Ontico
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico434 vues
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P... par Ontico
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico379 vues

Rich-client, или Как я перестал боятся и полюбил велосипеды / Владимир Дупелев

  • 1. Rich-client, или Как я перестал бояться и полюбил велосипеды Владимир Дупелев
  • 2. Rich UI приложение • Функциональность без перезагрузки страницы • Большой объем данных • Разнообразные визуальные компоненты • Вложенные диалоги • Быстрый отклик • Стабильность
  • 4. Где проблемы? • Архитектура • Отображение • Поддержка
  • 5. Архитектура Rich UI приложения • Уровни абстракции, модули • Разрешение зависимостей • Асинхронная работа с сервером
  • 6. Разрешение зависимостей • Поиск файлов • Объявления модулей • Кеширование модулей • Создание синглетонов • Перезапись Спецификация Модуля: - CommonJS / Modules - CommonJS / Packages - AMD
  • 7. Быстрый загрузчик Модуль RequreJS Имя можно опустить Магия поиска модуля Циркулярные зависимости Время и память Изменения Имя модуля = Путь в проекте Поиск только по имени Доверяйте программистам Соберите ядро в один файл
  • 8. Определение модуля AMD define(['a.js', 'b.js'], function(A, B) {…}) Не сопоставить пути и аргументы Добавить в середину невозможно Конфликты имен Изменения define({A:'a.js', B:'b.js'}, function($$) {…}) Группировка путей и имен модулей Легко изменять, удалять, добавлять Есть корневое пространство
  • 9. Архитектура Rich UI приложения • Уровни абстракции, модули • Разрешение зависимостей. Inversion of control • Асинхронная работа с сервером
  • 10. Обещания Шаблон future, в библиотеке JQuery - Deferred • Откажитесь от цепочек .then • Динамический require ведет к deferred • Разрешите модули заранее, используйте их синхронно
  • 11. Где проблемы? • Архитектура • Отображение • Поддержка
  • 12. • Model — чистые данные • ModelView — активные данные + команды • Bindings — связь активных данных и компонентов • View — компоненты и DOM Шаблон MVVM
  • 13. • Различные источники и схемы данных • Несколько операций на чтение и запись • Каскады асинхронных команд • Прерывание и подключение • Агрегация в сервисном слое Model — чистые данные
  • 14. • Содержит свойства или набор сущностей • Дает их изменить • Бросает события • Не воздействует на вложенные активные данные • Содержит бизнес-логику • Аккуратно разрушается ModelView — активные данные
  • 15. Backbone Разбор параметров Опции для событий Событие «всё изменилось» Отслеживание циклов Установка свойств Изменения Пара - имя, значение Отдельный код для silent Никогда не используется Тестирование
  • 16. Backbone, AngularJS Разбор параметров Не различает цель Всегда отрабатывает События изменения Изменения Однозначные параметры Отдельный код для self trigger Проверка на disposed
  • 17. • Компонент — тоже активная модель • Отображается в DOM • Следит за свойствами, обновляет DOM • Следит за событиями DOM, обновляет свойства • Не содержит бизнес-логики • Аккуратно разрушается View — компоненты и DOM
  • 18. Представление DOM JQuery обертка Читает из html строки Ссылка на DOM Element Добавление .append() Вставка в броузер .append() Изменения Свой dsl Объект в AST со свойством id Конкатинация строк Вставка в броузер .innerHTML
  • 19. Вставка 10 000 <div> .append() 500-1000мс Не теряем DOM Element Установка событий когда угодно Strings + InnerHTML 30-60мс Ленивый поиск по id Установка событий после вставки
  • 20. Где проблемы? • Архитектура • Отображение • Поддержка
  • 21. Поддержка Rich UI приложения • Лог – Отдавайте на сервер – Покажите объекты в JSON • Дамп состояния – Данные — малый объем, быстро – Компонеты — большой объем, медленно • Консоль