Тёмный

StyleX - новая библиотека для стилизации CSS-in-JS 

PurpleSchool | Anton Larichev
Подписаться 41 тыс.
Просмотров 12 тыс.
50% 1

Сегодня посмотрим на свежую библиотеку StyleX, которая позволит стилизовать наши компоненты и использовать все возможности CSS-in-JS с производительностью как у Tailwind. Но всё ли так хорошо?
🔗 Ссылки:
StyleX: stylexjs.com
🎓 Курс по React и Redux Toolkit: purpleschool.ru/course/react-...
🎓 Направление Frontend: purpleschool.ru/profession/fr...
💬 Telegram канал с полезными советами:
t.me/purple_code_channel
Разделы видео:
0:00 - Введение
0:14 - О StyleX
4:05 - Принципы StyleX
6:03 - Подключение StyleX
8:42 - Описание стилей
12:41 - Стили по условию
16:51 - Media выражения
19:05 - Переменные
21:38 - Передача стилей и типы
24:46 - Выводы
28:16 - Заключение

Опубликовано:

 

31 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 99   
@PurpleSchool
@PurpleSchool 5 месяцев назад
🔗 Ссылки: StyleX: stylexjs.com 🎓 Курс по React и Redux Toolkit: purpleschool.ru/course/react-redux 🎓 Направление Frontend: purpleschool.ru/profession/frontend 💬 Telegram канал с полезными советами: t.me/purple_code_channel
@TheArhimondus
@TheArhimondus 5 месяцев назад
Вот это вырви глаз синтаксис и сомнительные удобства. Берём, например, Kuma UI, Chakra UI или даже Emotion - всё чистенько и удобно, включая условную стилизацию.
@kolyan4d
@kolyan4d 5 месяцев назад
так в чем преимущество по сравнению с SASS/SCSS?
@a.s.scherba
@a.s.scherba 5 месяцев назад
А что скажете про Vanilla Extract? Он тоже компилирует css на этапе сборки и с типизацией у него вроде всё в порядке)
@user-sl1cp4gw9s
@user-sl1cp4gw9s 5 месяцев назад
Здравствуйте! Прохожу сейчас Ваш курс по HTML и CSS и хотела написать большое спасибо за изложенную информацию, за манеру подачи, разьяснения. Лучшей школы я пока не встречала, а перепробовала (в попытке найти наиболее для себя понятную манеру изложения) многие. Для меня, как новичка, все настолько понятно и доступно, что по окончанию планирую приобрести курс по базовому Джаваскрипту и так далее. Больше никого пока не ищу) Спасибо еще раз.
@dimovich85
@dimovich85 5 месяцев назад
Пока что впечатления от стайл-икс типа "мы пахали - я и трактор")) Можно вместо дефайн варс сделать константу-объект, тоже типизация будет из коробки, что касается кондишенл стайл - тоже, сама библиотека ничего не добавила. Повторение медиа-запросов? Вынесли в константу и через динамический ключ подставить, тоже библиотека как топор в каше) Ну, а вам спасибо за труд! :)
@user-kc4mg3qb7o
@user-kc4mg3qb7o 5 месяцев назад
Спасибо за видео! Какой шрифт вы используете в редакторе?
@PurpleSchool
@PurpleSchool 5 месяцев назад
Это JetBrains Mono
@user-kc4mg3qb7o
@user-kc4mg3qb7o 5 месяцев назад
Спасибо!@@PurpleSchool
@denissavast
@denissavast 5 месяцев назад
Благодарю !
@PurpleSchool
@PurpleSchool 5 месяцев назад
Пожалуйста!
@andyjs666
@andyjs666 5 месяцев назад
Спасибо за разбор! Как всегда: коротко, чётко и по делу. Что касается библиотеки CSS-In-JS, то ничего, лучше Linaria не придумали.
@PurpleSchool
@PurpleSchool 5 месяцев назад
Спасибо!
@shinauri1
@shinauri1 5 месяцев назад
Чем Linaria лутче Styled Components?
@andyjs666
@andyjs666 4 месяца назад
@@shinauri1 Тем, что она генерирует в прод-сборке статичный css файл, обеспечивая превосходную производительность, в отличии от SC
@shinauri1
@shinauri1 4 месяца назад
@@andyjs666 Заметано, спосибо за отзыв 💚
@snatvb
@snatvb 5 месяцев назад
да, хочется css держать рядом с ts, но пока идеального решения нет а не подскажешь, что у тебя за браузер?
@DmitriyDev
@DmitriyDev 5 месяцев назад
Arc browser
@PurpleSchool
@PurpleSchool 5 месяцев назад
Arc
@snatvb
@snatvb 5 месяцев назад
​@@PurpleSchool спасибо)
@snatvb
@snatvb 5 месяцев назад
спасибо)@@DmitriyDev
@Selieznov
@Selieznov 5 месяцев назад
Прикол с иконкой оценил))0)
@fesenkoas
@fesenkoas 5 месяцев назад
Они решили сделать стилизацию как в Реакт Натив когда стили находиться в самом филе с компонентом.
@tackesi
@tackesi 5 месяцев назад
Из шертса было неочевидно зачем это всё нужно. В целом понятно. Мне все еще хватает инструментов vue. Однако я понимаю где и зачем можно применить это. Я подписан? Вроде да из-за новостей про новинки в web. А узнал кажется тоже от какого-то не большеготканала, где автор делал обзор на курсы и проходил твои и ему понравилось. Смотря трои видео понимаю почему.👍
@PurpleSchool
@PurpleSchool 5 месяцев назад
Спасибо)
@TarasovFrontDev
@TarasovFrontDev 5 месяцев назад
Это даже не уровень нейросети)) Откопали промт из '08? xD
@dmitryts9093
@dmitryts9093 5 месяцев назад
Да уж, похоже лучше styled-components не придумают уже А stylex еще расти и расти до удобства
@danglad5546
@danglad5546 5 месяцев назад
Выглядит она конечно очень своеобразно , нет пока Css modules или на крайний случай Tailwind Css. Но спасибо Антон за подробный разбор!
@PurpleSchool
@PurpleSchool 5 месяцев назад
Да, я того же мнения) Спасибо
@ftinkere
@ftinkere 5 месяцев назад
Мне бы в tailwind функцию что последний класс применяется после первого и так можно было бы менять порядок применения, я бы писался кипятком
@PurpleSchool
@PurpleSchool 5 месяцев назад
😄
@AlexGabber
@AlexGabber 5 месяцев назад
Тайлвинд мердж, есть плагин. Не подходит что ли?
@saswwer
@saswwer 4 месяца назад
Есть либа tailwind-merge, которая позволяет это делать. А с учетом того, что к ней можно кастомные правила написать, то работает вообще в любых ситуациях
@mourat9833
@mourat9833 3 месяца назад
Пока что останусь с модульным scss
@kai.hexendorf
@kai.hexendorf 4 месяца назад
Робкая попытка отказаться от css с последующей реанимаций css в js(x)-коде. StyleX, JSS и styled-components - мутанты, продукты скрещивания css с js, которое не решает главной проблемы - раздвоение/дублирование модуля, нарушение изоляции ui-компонента. В результате ui-логика постоянно растекается между css, js, jsx блоками (и не так важно, имеем ли мы дело с одним файлом или несколькими). Чтобы как-то приглушить порожденный css хаос, то есть устранить лишь симптомы проблемы, придумываются устные ограничения вроде соглашений БЭМ, не понимая, что лучшие ограничения - функциональные. Emotion - это следующий этап зволюции стилизации, в которой устранена проблема раздвоение модуля, но еще сохраняется css-синтаксис. Остался еще один шаг, и css скроется под более читабельными, удобными и безопасными абстракциями. Мы должны получить в итоге нечто подобное: const Demo = () => { const theme = useGlobalTheme() return ( ) } Тогда будет один модуль и один синтаксис. В таком случае можно группировать модули в модулях-контейнерах, не создавая вложенных, иерархических структур в css.
@Alexey_Ivanov
@Alexey_Ivanov 5 месяцев назад
Ух... Как же хочется, чтобы у Реакта была "экосистема" как у Ангуляра. Надеюсь разработчики придут к этому
@PurpleSchool
@PurpleSchool 5 месяцев назад
Думаю что не будет, так как одно библиотека, а второй - фреймворк
@adamburke4496
@adamburke4496 5 месяцев назад
Уже есть Next.JS
@PurpleSchool
@PurpleSchool 5 месяцев назад
@@adamburke4496 да, вот Next уже фреймворк
@Alexey_Ivanov
@Alexey_Ivanov 5 месяцев назад
​@@adamburke4496ну так это fullstack фреймворк. Просто раздражает салат из библиотек в проектах на реакте
@seryozhamangushev9638
@seryozhamangushev9638 3 месяца назад
Я так скажу, я разные CSS in js пробовал, всякие там StylesComponent и блин, это такая каша. Возьмите обычный sass + css.modules, и classmates, все, больше в этой жизни для фронта в рамках браузера ничего не надо! А это ваш еще styleX фулл типизированный где нет фулл типизации, гениально)
@ArthurMudrick
@ArthurMudrick 5 месяцев назад
Тейлвинд это безумие, но тут пошли ещё дальше. Тейлвинд хотя бы использует читабельный класс, например, `p:2` и это что-то вроде `padding: 2em`, то в СтайлХ `padding: 2em` превращается в атомарную нечитабельную белиберду `iuybtiu`, ужас.
@pvttrix
@pvttrix 5 месяцев назад
прочему безумие? Настоятельно рекомендую для навигации по дом дереву дата-атрибуты. Это на данный момент лучшее решение. Для супер кастомных проектов - да , дучще цсс модули.
@daveyjonesx
@daveyjonesx 5 месяцев назад
Реально, от всех этих инструментов ощущение, будто заново цсс учишь, ну кал какой-то
@semen2096
@semen2096 5 месяцев назад
Может кто-то внятно объяснить для чего ccs in js либы вообще использовать? Исключительно ради удобства - сомнительно , то что можно использовать идентификаторы в стилях - по сути так же можно делать и через обычное условное присваивание классов. По факту получается что только бандл от этих либ растет, плюс не понятно как они написаны с точки зрения оптимизации. Поэтому прошу просвященных людей объяснить в чем конкретная польза от них
@Kl-hk4lw
@Kl-hk4lw 5 месяцев назад
Тегните когда кто-нибудь даст ответ :)
@TarasovFrontDev
@TarasovFrontDev 5 месяцев назад
На хабре есть статья с перфоманс чеком различных способов стилизации. CSS in JS либы показали себя хуже всего, более чем в два раза xD. Лучше всего - чистый CSS/SCSS.
@IlyaKotyashkin
@IlyaKotyashkin 5 месяцев назад
Я потестил - он там навешивает на каждое css свойство свой класс. Дико неудобно в консоле отлаживать. Пока что решил поинвестигать JSS
@PurpleSchool
@PurpleSchool 5 месяцев назад
Да, это кстати минус
@dimovich85
@dimovich85 5 месяцев назад
TSS сразу смотрите)
@CJIu3eHb
@CJIu3eHb 5 месяцев назад
Там вроде как в бабелевском плагине можно опцию dev указать или что-то такое.
@bbnoWhat
@bbnoWhat 5 месяцев назад
по мне лучше модули чем css in js, сейчас я использую tailwind и мне нормально
@PurpleSchool
@PurpleSchool 5 месяцев назад
Поддерживаю
@AlexGabber
@AlexGabber 5 месяцев назад
StyledComponents емае. Проще и лучше модульный подход нежели эта котовасия.
@Dik131WZD
@Dik131WZD 5 месяцев назад
А tailwind такого видосика нет?
@PurpleSchool
@PurpleSchool 5 месяцев назад
Нет, но возможно сделаю разбор
@Dik131WZD
@Dik131WZD 5 месяцев назад
@@PurpleSchool спасибо. Было бы интересно увидеть.
@styxrus
@styxrus 5 месяцев назад
​@@PurpleSchoolс удовольствием бы посмотрел
@hrustalevdev
@hrustalevdev 5 месяцев назад
Одно время работал с ReactNativw. Там подход +- такой же. И как же я кайфанул когда вернулся обратно в web и модульный scss. Вообще не понимаю всех этих заморочек со стилями. Чем людей так отталкивает css? Дополнительным файлом? Синтаксисом? Один чёрт в RN, чтобы не было шума, выносил стили в отдельный файл. Я не понимаю этот мир))
@PurpleSchool
@PurpleSchool 5 месяцев назад
В React Native хоть типизация отличная)
@TarasovFrontDev
@TarasovFrontDev 5 месяцев назад
Хотел бы я посмотреть на мудреца, который в 2к23 пишет либы без типизации
@blackFortuna1358
@blackFortuna1358 5 месяцев назад
Tailwind (ограниченно) + изоляция CSS от Svelte + пару глобальных и скоуп файлов pcss. Минимум работы и максимум поддержки.
@daveyjonesx
@daveyjonesx 5 месяцев назад
Зачем верстать на тейлвинде (как и на другом использующий атомик)?
@blinksy182
@blinksy182 5 месяцев назад
@@daveyjonesxпотому что он гениален и css любого сайта, который на нем напишите 100% будет в 2-3 раза меньше
@skeev_
@skeev_ 5 месяцев назад
Для теста библиотеки достаточно сделать компонент кастомного чекбокса. Тривиальная задача (если не джун), которая решается небольшим css с использованием комбинатора "~". И чем удобнее это будет сделать - тем лучше библиотека. Вопрос - сколько нужно и как написать кода на stylex, чтобы это было читабельно и удобно?
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 месяцев назад
не согласен с таким поинтом) подобный код пишется относительно редко так что удобсно написания более базовыз стилей важнее
@AlexandrGeffest
@AlexandrGeffest 5 месяцев назад
А разве в этой либе есть что-то общее с удобством написания базовых стилей? Что-то мне подсказывает, что с использованием emmet на css-like синтаксисе писать стили буквально саааамую малость удобнее
@daveyjonesx
@daveyjonesx 5 месяцев назад
Такой кастомный чекбокс кстати кал
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 месяцев назад
@@AlexandrGeffest если это был ответ к моему комменту, то не я не увтреждал что stylex удобен) Я лишь говорил что поинт с чекбоксом не показатель
@kolyan4d
@kolyan4d 5 месяцев назад
Пишут, что Tailwind Killer 😎 А так нужно начать юзать на реальном проекте, что бы понять
@PurpleSchool
@PurpleSchool 5 месяцев назад
Не думаю, что убийца, другая концепция
@kolyan4d
@kolyan4d 5 месяцев назад
@@PurpleSchool конечно, Tailwind CSS framework, StyleX голый CSS-in-JS, в рекомендациях был видос ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-vpAXHtPK8nA.html The Truth About Facebook's "Tailwind Killer" )))))
@andreykachur3827
@andreykachur3827 5 месяцев назад
Ну такое конечно. Я так и не понял, для чего она нужна если все тоже самое можно делать в scss modules. Обычно в компоненте и так логики бывает не мало + еще стили. Я бы такое не стал в проект тащить.
@PurpleSchool
@PurpleSchool 5 месяцев назад
Это верно
@pvttrix
@pvttrix 5 месяцев назад
да, раньше с пхп смеялись что "каша" выходит, а во что теперь мы превращаем компоненты?) В мусорку
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 месяцев назад
не пишите логику в компонентах и не проблем)
@paemox
@paemox 5 месяцев назад
CSS-in-JS - не нужен, JS код и так перегружен. Лучше SCSS + BEM/CSS Modules. Та даже plain CSS лучше чем CSS-in-JS! Видимо, Facebook выделил кучу денег на инфлюэнсеров.
@daveyjonesx
@daveyjonesx 5 месяцев назад
Бэм и цсс модули вместе никто не мешает готовить, бэм нужен не для изоляции, а для выражения структуры компонента
@daveyjonesx
@daveyjonesx 5 месяцев назад
Для меня такой подход идеален: нейминг в стиле бэм, стили подключаются через css модули, для самих стилей scss
@anazkomult
@anazkomult 5 месяцев назад
Аминь!
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 месяцев назад
@@daveyjonesx зачем выражать структуру компонента через BEM если у нас на компонент свой файл со стилями? оверхед получается
@user-oz6xm9zp9d
@user-oz6xm9zp9d 4 месяца назад
Не перевариваю css in js. Пока есть mui это не умрет.
@perstj5746
@perstj5746 5 месяцев назад
Can i use next.js with styleX css
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 месяцев назад
при всей моей нелюбви к tailwind но tailwind + cva смотрится лучше чем это
@kai.hexendorf
@kai.hexendorf 4 месяца назад
что tailwind, что styleX - два вида гавнокода
@un_defined
@un_defined 4 месяца назад
не впечатлил стайлх
@takemukashov3064
@takemukashov3064 5 месяцев назад
Что можно сказать, слишком сырая, даже подсказки типизации нету, лучше на модулях писать чем это убогое styleX, и вообще стили писать в объектах крайне неудобно, лучше styled components уже не будет, раз уже сам Facebook провалил в этом деле
@PurpleSchool
@PurpleSchool 5 месяцев назад
Да, пока сильных преимуществ не видно
@user-yw9wx4lv2w
@user-yw9wx4lv2w 5 месяцев назад
"раз уже сам Facebook провалил в этом деле" а что Facebook это какие то непогрешимые ребята?))
@takemukashov3064
@takemukashov3064 5 месяцев назад
@@user-yw9wx4lv2w никто так не говорит, но если не знал facebook один из топовых компаний мира где водятся инженеры мирового уровня
@user-md5mw1tp3e
@user-md5mw1tp3e 5 месяцев назад
css in js не нужен, вообще. Нам БЭМ за глаза хватает. Остальное решается в рамках css
@PurpleSchool
@PurpleSchool 5 месяцев назад
В большинстве случаев даже CSS Modules лучшее решение, чтобы не применять БЭМ
@---Maksim---
@---Maksim--- 5 месяцев назад
@@PurpleSchool Для изоляции - да, но читать верстку при разработке куда приятнее с БЭМ.
@PurpleSchool
@PurpleSchool 5 месяцев назад
@@---Maksim--- можно в рамках компонента использовать часть нотации БЭМ, да
@cdeblog
@cdeblog 3 месяца назад
Выглядит каким-то очень извращенным костылём😢
@0bsess10n
@0bsess10n 5 месяцев назад
выглядит убого
@PurpleSchool
@PurpleSchool 5 месяцев назад
Да, пока преимущества не очевидны
@0bsess10n
@0bsess10n 5 месяцев назад
@@PurpleSchool я предпочитаю Linaria. Css in js библиотеки с нами на долго. Мигрировать с Линарии на что-то ещё не составит труда, вдруг что... А на выходе те же css файлы
Далее
CI CD наглядные примеры
22:08
Просмотров 267 тыс.
TailwindCSS. Полный курс
1:55:05
Просмотров 60 тыс.
14. Уроки React JS (css-модули, css-modules)
39:53