ݺߣ

ݺߣShare 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. Отрисовка компонента
Немножечко покодим :)
Когда и зачем?
Спасибо за внимание!
Ad

Recommended

Runtime compilation and code execution in groovy
Runtime compilation and code execution in groovy
Vitebsk Miniq
The 5 Laws of Software Estimates
The 5 Laws of Software Estimates
Vitebsk Miniq
Latest & Greatest Observability Release 7.9
Latest & Greatest Observability Release 7.9
Vitebsk Miniq
Тестирование Spring-based приложений
Тестирование Spring-based приложений
Vitebsk Miniq
Семантический поиск - что это, как работает и чем отличается от просто поиска
Семантический поиск - что это, как работает и чем отличается от просто поиска
Vitebsk Miniq
Локализационное тестирование - это не только перевод
Локализационное тестирование - это не только перевод
Vitebsk Miniq
ISTQB Сертификация тестировщиков: быть или не быть?
ISTQB Сертификация тестировщиков: быть или не быть?
Vitebsk Miniq
Apollo GraphQL Federation
Apollo GraphQL Federation
Vitebsk Miniq
Who is a functional tester
Who is a functional tester
Vitebsk Miniq
Crawling healthy
Crawling healthy
Vitebsk Miniq
Вперед в прошлое
Вперед в прошлое
Vitebsk Miniq
CloudFormation experience
CloudFormation experience
Vitebsk Miniq
Learning Intelligence: the story of mine
Learning Intelligence: the story of mine
Vitebsk Miniq
Как программисты могут спасти мир
Как программисты могут спасти мир
Vitebsk Miniq
Использование AzureDevOps при разработке микросервисных приложений
Использование AzureDevOps при разработке микросервисных приложений
Vitebsk Miniq
Distributed tracing system in action. Instana Tracing.
Distributed tracing system in action. Instana Tracing.
Vitebsk Miniq
Насорил - убери!
Насорил - убери!
Vitebsk Miniq
Красные флаги и розовые очки
Красные флаги и розовые очки
Vitebsk Miniq
CSS. Практика
CSS. Практика
Vitebsk Miniq
Разделяй и властвуй!
Разделяй и властвуй!
Vitebsk Miniq
Фреймворк-невиидмка
Фреймворк-невиидмка
Vitebsk Miniq
One stack to rule them all или "Не всё есть в AppStore"
One stack to rule them all или "Не всё есть в AppStore"
Vitebsk Miniq
Machine Learning with Amazon SageMaker
Machine Learning with Amazon SageMaker
Vitebsk Miniq
Знакомство с MiniQ
Знакомство с MiniQ
Vitebsk Miniq
Используем контейнеры, или Не дай заказчику повалить продакшн
Используем контейнеры, или Не дай заказчику повалить продакшн
Vitebsk Miniq
Переход на DynamoDB. Есть ли жизнь после MongoDB?
Переход на DynamoDB. Есть ли жизнь после MongoDB?
Vitebsk Miniq
Разработка в долг
Разработка в долг
Vitebsk Miniq
ES2015+: давно пора!
ES2015+: давно пора!
Vitebsk Miniq

More Related Content

More from Vitebsk Miniq (20)

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

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