Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Real-time данные на фронтенде

407 views

Published on

Сер­гей Ру­ба­нов, раз­ра­бот­чик EXANTE и, как он сам себя на­зы­ва­ет, JavaScript-са­му­рай, вы­сту­пил на митапе TechTalks с до­кла­дом «Real-time дан­ные на фрон­тен­де». Он рассказал, какие про­бле­мы при­хо­дит­ся ре­шать при отоб­раже­нии фи­нан­со­вых дан­ных.

Published in: Software

Real-time данные на фронтенде

  1. 1. Real-time данные на фронтенде Сергей Рубанов JavaScript Samurai
  2. 2. • Многие баги, которые туда попали однажды и были как-либо использованы, остаются там навсегда • Всё в вебе должно иметь обратную совместимость • Вендоры браузеров не готовы поддерживать все стандарты • Существуют конкурирующие группы разработки стандартов (w3c, whatwg) и конкурирующие спецификации • Сложность спецификаций растет • Не смотря на значимость принципа обратной совместимости, вендоры могут убрать поддержку каких-либо Web API в любой момент (WebSQL, AppCache)
  3. 3. • DOM однопоточный и делит тред с мейн тредом JS, рендеринг однопоточный • WebWorker’ы — ограниченные потоки • не имеют доступа к localStorage • не имеют доступа к DOM • требуют использования сериализации или структурного клонирования (может циклические зависимости, но не может дескрипторы, геттеры, сеттеры, цепочку прототипов) • Web Storage синхронный и требует сериализации данных • IndexedDB имеет много багов в Safari и неполную реализацию в IE • Нормальных подписок в браузере не существует в принципе
  4. 4. • Изначально содержит баги, которые не могут быть исправлены • Не был спроектирован для создания приложений • Практически отсутствующие возможности управления памятью • Непредсказуемое поведение GC • Примитивная система типов • Некоторые типы ошибок нельзя выявить на этапе написания • Никакая математика • Условная, во многом ограниченная многопоточность • Отсутствие разделяемой памяти
  5. 5. JavaScript fatigue
  6. 6. Как не поддаться JavaScript fatigue • Принять факт, что все очень плохо • Использовать статическую проверку типов (TypeScript и Flow) • это лучше, чем использовать компиляцию из других, синтаксически более далеких от JS языков • Использовать линтеры (TSLint, ESLint)
  7. 7. Ускоряем JavaScript • Не используем новые фичи языка (или транспилируем код в ES5.1) • Пишем императивный код в стиле Си • Используем TypedArrays везде, где возможно • Используем asm.js для математики • есть оверхед по размеру файла • нужен разработчик, который умеет C / C++ / Rust
  8. 8. Популярные заблуждения о фронтенд-разработке • JavaScript медленный • DOM медленный • Чтобы сделать приложение быстрым, надо переписать его на React (Angular 2 / Preact / Riot / Vue / etc.)
  9. 9. Как сделать real-time web- приложения производительными и отзывчивыми?
  10. 10. Нужно держать UI-тред свободным
  11. 11. Canvas? SVG? WebGL?
  12. 12. или VanillaJS?
  13. 13. Web Workers
  14. 14. Service Worker
  15. 15. Service Worker
  16. 16. IndexedDB
  17. 17. Market Data API https://developers.exante.eu/
  18. 18. Задавайте вопросы! @chicoxyzzy

×