SlideShare a Scribd company logo
communities.by
STYLED-COMPONENTS
Что? Когда?
И зачем?
MINIQ #15 Даниил Янковский
30.05.2019
Даниил Янковский
Место работы: EPAM
Должность: Software Engineer
План
• Что это такое?
• Почему именно styled-components?
• Как это работает?
• Показать примеры
• Когда и зачем?
История...
Что это такое?
Ещё одна история...
Вьетнам. Флэшбэки.
+ =
Почему styled-components?
• Большое сообщество
• Удобство разработки (Хорошая документация)
• Скорость работы
• Кроссплатформенность
• Реализация адаптивной вёрстки
• Серверный рендеринг
• Модульные тесты
Сравнение
Oct 12, 2014 Jan 9, 2015 Aug 16, 2016 May 27, 2017
stars
forks
issues
used by
4880 6975 23971 8032
2039264107
272 318 1411 494
166 21541 178 13 896 20 561
Удобство разработки
Tagged Literal
Templates
(as ex. styled-components)
Object model
(as ex. Radium)
Удобство разработки
Наследование
TODO: добавить картинку
Удобство разработки
Адаптив
TODO: добавить картинку
Удобство разработки
Styled-components CSS
TODO: добавить картинку TODO: добавить картинку
Сравнение
Styled-components JSS
TODO: добавить картинку TODO: добавить картинку
Сравнение
Styled-components Radium
TODO: добавить картинку TODO: добавить картинку
Сравнение
Styled-components Emotion
TODO: добавить картинку TODO: добавить картинку
Скорость работы
41
16 15 15
RADIUM STYLED-
COMPONENTS
JSS EMOTION
СКОРОСТЬ МОНТИРОВАНИЯ 1000
УНИКАЛЬНЫХ КОМПОНЕНТОВ В МС
Как это работает?
1. Объявляете styled-component
1. Создаётся внешний контекст для компонента
2. Создаётся внутрений контекст, для использования
тем, только если вы использовали Провайдер Темы
2. Разбирает стили для компонента
1. Создаётся уникальное имя класса
2. Собирает стили для дальнейшего добавления
префиксов
Как это работает?
3. Добавление автопрефиксов
1. Собранные во 2 пункты стили, передаются в Stylis
2. Stylis возвращает стили с префиксами относительно
текущего режима сборки
1. Production: только для текущего браузера
2. Development: все возможные стили
4. Добавление стилей
1. Создаёт или ищет тег <style>
2. Стили добавляются только, когда компонент
задействован на странице.
3. Стили добавляются относительно режима сборки:
1. Production: используется CSSStyleSheet.insertRule()
2. Development : используется Node.appendChild()
5. Отрисовка компонента
Немножечко покодим :)
Когда и зачем?
Спасибо за внимание!

More Related Content

PDF
Runtime compilation and code execution in groovy
PDF
The 5 Laws of Software Estimates
PDF
Latest & Greatest Observability Release 7.9
PDF
Тестирование Spring-based приложений
PDF
Семантический поиск - что это, как работает и чем отличается от просто поиска
PDF
Локализационное тестирование - это не только перевод
PDF
ISTQB Сертификация тестировщиков: быть или не быть?
PDF
Apollo GraphQL Federation
Runtime compilation and code execution in groovy
The 5 Laws of Software Estimates
Latest & Greatest Observability Release 7.9
Тестирование Spring-based приложений
Семантический поиск - что это, как работает и чем отличается от просто поиска
Локализационное тестирование - это не только перевод
ISTQB Сертификация тестировщиков: быть или не быть?
Apollo GraphQL Federation

More from Vitebsk Miniq (20)

PDF
Who is a functional tester
PDF
Crawling healthy
PDF
Вперед в прошлое
PDF
CloudFormation experience
PDF
Learning Intelligence: the story of mine
PDF
Как программисты могут спасти мир
PDF
Использование AzureDevOps при разработке микросервисных приложений
PDF
Distributed tracing system in action. Instana Tracing.
PDF
Насорил - убери!
PDF
Красные флаги и розовые очки
PDF
CSS. Практика
PDF
Разделяй и властвуй!
PDF
Фреймворк-невиидмка
PDF
One stack to rule them all или "Не всё есть в AppStore"
PDF
Machine Learning with Amazon SageMaker
PDF
Знакомство с MiniQ
PDF
Используем контейнеры, или Не дай заказчику повалить продакшн
PDF
Переход на DynamoDB. Есть ли жизнь после MongoDB?
PDF
Разработка в долг
PDF
ES2015+: давно пора!
Who is a functional tester
Crawling healthy
Вперед в прошлое
CloudFormation experience
Learning Intelligence: the story of mine
Как программисты могут спасти мир
Использование AzureDevOps при разработке микросервисных приложений
Distributed tracing system in action. Instana Tracing.
Насорил - убери!
Красные флаги и розовые очки
CSS. Практика
Разделяй и властвуй!
Фреймворк-невиидмка
One stack to rule them all или "Не всё есть в AppStore"
Machine Learning with Amazon SageMaker
Знакомство с MiniQ
Используем контейнеры, или Не дай заказчику повалить продакшн
Переход на DynamoDB. Есть ли жизнь после MongoDB?
Разработка в долг
ES2015+: давно пора!
Ad

Styled-components. Что? Когда? И зачем?