
Сергей
09.07.2017
18:48:00

Алексей
09.07.2017
18:48:08

Amon Bower
09.07.2017
18:48:23
styled-components - это детище наркомана-педофила.

Mike
09.07.2017
18:48:29
@import "~styles/common.less"

Google

Сергей
09.07.2017
18:48:34

Алексей
09.07.2017
18:48:42

Сергей
09.07.2017
18:49:08
делал темы на jss, styled-components
Работает офигительно, не то что переопределение через классы

Mike
09.07.2017
18:49:54
еще раз, разбиение на модули — это ровно бем только без ебаных префиксов
и глобальные стили и в беме и модулях делаются ОДИНАКОВО
ТОЛЬКО
БЕЗ
ЕБАНЫХ
ПРЕФИКСОВ

Сергей
09.07.2017
18:50:21

Алексей
09.07.2017
18:50:23

Сергей
09.07.2017
18:50:26

Google

Сергей
09.07.2017
18:50:35

Алексей
09.07.2017
18:51:20

Сергей
09.07.2017
18:51:32
И это работает легко в SSR, без хуков для бабеля и без ебаного вебпака

Mike
09.07.2017
18:51:49
так так так
вебпак не трогай

Сергей
09.07.2017
18:52:20

Алексей
09.07.2017
18:52:37
нет
Огромный файл темы
Сори тут ты меня потерял. Как в JSS накинуть стили на компоненты глобально?
https://github.com/cssinjs/jss-global ?

Mike
09.07.2017
18:52:51

Сергей
09.07.2017
18:52:53

Kek
09.07.2017
18:54:08

Алексей
09.07.2017
18:54:12
Ок, смотри ситуация простая - кнопка - с CSS-in-JS. Все ок. Она инкапсулированная. Все замечательно работает
Теперь нужно для этой кнопки в определенном проекте другие стили.

Mike
09.07.2017
18:54:12
ты просто импортишь из файла темы нужную тему
и все

Сергей
09.07.2017
18:54:33
а с вебпаком что?
а зачем он на сервере?
Если можно бабелем по коду пройтись и всё будет работать

Kek
09.07.2017
18:55:17
аа, SSR это Server Side Rendering?
я тред ваш не читал прост

Сергей
09.07.2017
18:55:25

Mike
09.07.2017
18:55:33
if ( env == 'ONE') {
theme = require('theme1.js')
} else {
theme = require('theme2.js')
}
Button.color = theme.color

Google

Mike
09.07.2017
18:55:46
или как там в ваших jss проставляются проперти

Сергей
09.07.2017
18:56:08
всё

Mike
09.07.2017
18:56:36
ну или так и из контекста тему забирать

Сергей
09.07.2017
18:56:38
в каждом компоненте просто
backgroundColor: theme('colors', 'mainColor')
или
background-color: ${theme('colors', 'mainColor')}

Алексей
09.07.2017
18:57:07

Сергей
09.07.2017
18:57:18

Алексей
09.07.2017
18:57:27

Сергей
09.07.2017
18:57:35
ЧТОБЫ НИКАКОЙ ХУЙ С ДРУГОГО ПРОЕКТА НЕ ИСПОРТИЛ ОДНИМ ЛИШНИМ КЛАССОМ всю библиотеку

Mike
09.07.2017
18:57:37
ГЛОБАЛЬНЫЕ ВЕЩИ ЕБАНОЕ ЗЛО

Сергей
09.07.2017
18:57:41
ЭТО И ЕСТЬ ВСЯ ЦЕЛЬ CSSINJS

Алексей
09.07.2017
18:57:57

Amon Bower
09.07.2017
18:57:58

Сергей
09.07.2017
18:58:08

Mike
09.07.2017
18:58:29
давайте вообще все переменные глобальные сделаем

Сергей
09.07.2017
18:58:34
Потом уходишь с проекта, а людям поддерживать
Проходит год и пиздец в стилях никто разобрать не может

Mike
09.07.2017
18:58:39
и потом еще научимся в пхп переменные из js использовать

Алексей
09.07.2017
18:59:40

Сергей
09.07.2017
18:59:53

Google

Сергей
09.07.2017
18:59:57
так ты и так это делаешь
только в случае JSS без классических костылей CSS
Без страха коллизий
а нормально описываешь одну тему для каждого проекта
И не мейнтейнишь компоненты

Алексей
09.07.2017
19:01:48
Вот в этом и проблема JSS очень эффективно борется с глобальными стилями и коллизиями. Даже там где они нужны и могут облегчить жизнь.
Я понимаю можно без Global CSS но легче писать компоненты от этого не становится.

Сергей
09.07.2017
19:02:22

Алексей
09.07.2017
19:02:32

Сергей
09.07.2017
19:03:17

Admin
ERROR: S client not available

Алексей
09.07.2017
19:05:53
как раз становится.
ты тащишь свои привычки в другую систему и страдаешь от этого
Да не. Стоп. Простая задача. Есть кнопка. Есть два проекта. В обоих проектах кнопка должна выглядеть по разному.
1) В кнопке поддержать несколько стилей которые переключать каким либо образом (button modifier)
2) Как-то обойтись только определенным набором переменных и передавать их в компонент (theme approach)
Есть еще варианты?

Сергей
09.07.2017
19:07:04
JSS и SC решается на раз
с наскока
причем проще чем в vanilla css

Алексей
09.07.2017
19:10:24
проблема с 2 (theme aproach) тебе заранее нужно знать как будет менятся твой компонент, это не всегда удобно. Иногда приходится заводить новые переменные ибо "не думали что это нужно будет менять"
проблема с 1 (button modifier) в SRP (single resposibility) и OCP (opend closed) кнопка начинает "знать" о сущестовании всех проектов, добали проект - полезли в кнопку добавлять новые стили для нового проекта.


Сергей
09.07.2017
19:14:10
просмотри как люди разрабатывают интерфейсы для Android, macOS, Windows, iOS.
Везде один и тот же принцип, компонент предоставляет API и пользователи API мирятся с этим.
Это правильно, поэтому именно к этому стремятся JSS и SC
Одна из причин по которой мне нравится @atomicdesign.
Каждый компонент имеет свою зону ответственности и свою сложность, и ты это не меняешь.
И вместо усложнения компонента Кнопка -> Кнопка со спиннером, ты описываешь SpinnerButton который только добавляет нужную функциональность не изменяя Button.
А если ты можешь написать строчку кода в своем проекте и сломать библиотеку компонентов, то это грубейший антипаттерн.
Начинается куча говна в сторону разработчиков библиотеки, мол у нас здесь не работает а едет, исправить не можем, проблема не у нас, мы просто вставили кнопку в кнопку и добавили стили, а оно не работает. ПОЧЕМУ??!?!?!
И ты сидишь и даже не знаешь что ответить, потому НЕВОЗМОЖНО написать CSS так, чтобы он работал при ЛЮБОМ кейсе использования.


Алексей
09.07.2017
19:21:02
Ну под Windows (WPF) есть что-то на подобие "глобальных стилей" (которые не во всех ситуация работаю но всеже. Про остальные увы не скажу.
Но скажем так, я не понимаю подход №1 - когда кнопка хранит в себе стили всех проктов. Для меня это полный пипец нарущающий 2 solid принципа.
Но подоход №2 (theme aproach) звучит неплохо вот с этим
https://github.com/nathanmarks/jss-theme-reactor
Попробую на днях. Посмотрим что получится. Хотя опять же - переменные :/

Google

Алексей
09.07.2017
19:21:25
BEM - решает те проблемы CSS о которых ты гворишь

Сергей
09.07.2017
19:21:51

Алексей
09.07.2017
19:22:57

Сергей
09.07.2017
19:23:19
очень сильно сложнее будет
Да и префиксы херачить не надо
Не надо юзать отдельные файлы
все в одном месте

Dmitry
09.07.2017
19:25:19
Настрой stylelint и также с бэмом не сможешь нахерячить говна)

Алексей
09.07.2017
19:27:05

Artur
09.07.2017
19:27:06
Хотелось бы хеш
зачем? главная суть в том, что это производительнее и, главное, детерменировано, что важно для тестов (снепшотов), например

Oleg ?
09.07.2017
19:28:16
В одном доме я имел ввиду

Artur
09.07.2017
19:28:54
потому что генерит не рандомный хэш слишком трудоемко
а рандомный не детерменирован

Oleg ?
09.07.2017
19:30:08
Не совсем понимаю, как это вредит тестированию?

Artur
09.07.2017
19:30:57
если у тебя на каждый рендер класса новый хэш, как ты организуешь снэпшотинг стилей?

Oleg ?
09.07.2017
19:31:09
Хеш берётся от имени класса

Сергей
09.07.2017
19:31:32
и как он решит проблему двух приложений?

Artur
09.07.2017
19:31:53

Oleg ?
09.07.2017
19:32:13