Pull to refresh
12
0
Mikita Dusmikeev @mikita_du

Front End

Send message

Никак не могу найти нормальное сравнение, может быть вы можете подсказать.
Почему tailwind, а не styled-components / scss например?


Чем он конкретно лучше?
Из минусов, которые я вижу:
- гриды нормально из коробки не работают (grid-template-areas сторонним плагином ставится)
- нет варианта написания js in css (для доступа к позиции скролла, либо тоггл класса и тд. да, тоггл решается classNames, но просто как пример)
- проблема с дебагом (по классу не всегда понятно, как конкретно найти нужный компонент в коде, т.к. могут повторяться)
- в сравнении с styled-components - нет поддержки typescript. Если какие-то стили не переданы - тайпскрипт не отловит ошибку
- темизация очень скудная. Как сделать больше двух тем я так и не понял. У меня обычно на проекте от 4х тем.
- опять же в копилку тем - её нужно поддерживать. Я честно говоря не очень понимаю, как большом проекте (экранов на 30) поддерживать цвета, отступы и тд. Если дизайнер изменил цвета на странице какой-то. Например красный не такой как обычно, белый заменили на чёрный, ещё чего, как мне поменять его в теме?
Вообще, нужно ли его менять или писать просто инлайн в таком случае? В styled-components или scss я могу просто тему новую создать и передать её как обёртку новой страницы. А тут как?

Как вариант styled-components, но более быстрых есть vanila-extract, не думали смотреть в эту сторону?

***первая ссылка в гугле про RN, но - https://github.com/marklawlor/neapolitan-extract

Благодарю за статью, сам что-то похожее сейчас ищу.

Видел вариант keystone + t3, пробовали ли сравнивать?
Как на счёт t3 варианта решений?

Спасибо большое.
Крайне полезная статья. Как минимум помогла собрать воедино доку гугла))

Подскажите пожалуйста, а может знаете, как к этому счастью ещё кнопку гугловую добавить на фронт часть, типа google identity provider (https://developers.google.com/identity/gsi/web/guides/overview)?

Ищу решение, чтобы на фронте была красивая кнопка идентити провайдера, и можно было работать с бэком по принципу как у вас в статье.

в общем и целом понял, большое спасибо за разъяснение

Токен не надо расшифровывать. достаточно проверять, например, что подписи нет в БД.

В статье написано:
Главное преимущество: поскольку метод никак не оперирует состояниями, серверу не нужно хранить записи с пользовательскими токенами или сессиями. Каждый токен самодостаточен, содержит все необходимые для проверки данные, а также передаёт затребованную пользовательскую информацию. Поэтому токены не усложняют масштабирование.

Вы говорите, что достаточно проверять, что подписи нет в бд.

Нашёл ещё одно видео (https://www.youtube.com/watch?v=s-4k5TcGKHg), в котором написано, что в бд нужно хранить только рефреш токен, что выглядит очень логично со всем, что я прочитал.

Ху из райт, соответственно. Потому как уже 3 мнения.

И подскажите, как вообще должен отрабатывать рефреш токен и почему. Здесь, я нашёл, что рефреш токен максимум должен жить 15 минут (https://www.youtube.com/watch?v=jzB4TfmOZyw). В другом видео - 1 день норм (https://www.youtube.com/watch?v=s-4k5TcGKHg).
От чего это зависит?
И если у меня истёк токен, всегда ли я должен кидать пользователя на окно авторизации? Если да, то почему я спокойно могу заходить в сервисы гугла без логина. Там на месяц токен? В таком случае, почему кто-то говорит, что он должен быть на минуты?

Статья конечно крайне полезная. Добавил в закладки, спасибо автору большое.

Но есть несколько вопросов по JWT токенам.
1) На некоторых конференциях я нашёл, что есть возможность revoke jwt токена (ну например вот с ndc https://www.youtube.com/watch?v=YF8coyfQb0Y). Из комментариев я так понял (прошу поправить, если не так понял), что revoke возможен только через бан лист. Но для проверки, содержится токен или нет в бан листе нужен доступ к базе / редису, то есть проблема скейлинга всё равно присутствует. Нет, данных хранитьменьше, но в статье говорится про фишку в скорости расшифровке vs скорость доступа к базе. А тут получается и расшифровка и доступ к базе. Смысл?
2) Но двигаясь дальше, допустим выбрали мы бан лист. И каждый раз в нём что-то смотрим. Возник следующий вопрос, а как по refresh токену получать данные? В видосике выше с конференции ребята используют одну и ту де функцию - revoke token для запроса нового токена и логаута. Но мы не можем её же использовать, она у нас за бан лист отвечает. Следовательно ребята делают с ошибкой?
Но тут тогда следующий вопрос. А как работает refresh токен в таком случае в логике статьи? Допустим я отправил токен, получил новый, аксес токен, у меня спёрли рефреш, как вылогинить ребят, которые спёрли рефреш? Они же могут новый получать, валидации на сервере нет, в бан лист добавлять?
А как понять, кого в бан лист добавлять? И почему добавлять нужно? Я же не знаю, что его спёрли. Знал бы, не дал бы спереть.

Как это должно работать, объясните пожалуйста?

Очень рад, что не я один так думаю. А-то прямо чувство одиночества появилось какое-то)

Прошу прощения. Заменил.

Почему не в ту? Код никак не противоречит. В коде нет проблем с четностью и нечетностью. То, что вы написали дальше про колонки в статье и используется. Там абзац про инвертирование логики.

Возможно вы предложили вариант отразить лучше. Статья об этом. Я предложил один вариант, вы ещё более понятный по вашему мнению.

Великолепно, значит мы вместе охватывает сразу кучу вариантов написания.

Главное, чтобы логика заказчика была отображена в коде максимально близко к логике его рассуждения.

Если он мыслит в brakepoint, то нельзя делать по другому. Тк именно так думает заказчик. Даже если кому-то кажется, что так логичнее.

Иначе получится классика, что одни сделали по гайдам фейсбука, вторые поддерживают по гайдам майкрософта, третьи тестируют по гайдам гугла. А бедный заказчик бегает и не знает, почему его код ужасен. Нужно делать по гайдам заказчика.

З. Ы. Я не говорю про сохранение логики дизайна, я говорю про сохранение логики заказчика. Это разное. Дизайн - лишь очередной инструмент в переводе мыслей заказчика в код. Просто более наглядный, чем слова заказчика.

По первым 3м пунктам думаю нет смысла отвечать. Они никак не противоречат статье. Странно, что вам показалось, что я спорю хоть с чем-то из этого.

А по поводу последних двух.

Это шикарно, если можно сделать всё динамично - это ещё лучше передаст мысли заказчика.

Во второй части статьи я привёл свой пример, где нужно было сделать только для определённых телефонов дизайн, но вкорне отличным.

Если вы можете сделать не так, а записать другим способом, например используя медиа квери с ориентации девайса или ещё чего - это намного лучше, чем не используя их или хард кодя.

Идея статьи описана в первом предложении отражена. Поясните пожалуйста, где вы увидели в корне не правильные выводы.

Тут дело такое.

У меня в одном дизайне были разные отступы в дизайне вокруг одного элемента.

Сверху 9px, справа 7px, снизу 8px.

Я на своё усмотрение сделал единое. На дизайн было похоже - все были рады)

Само собой нет, но проекты под него станут ну очень редкими. Я ставлю на то, что только поддержка будет.

А новых проектов под него вообще не будет делаться.

Думаю привычка от styled-components)

Мне более читаемым/явным показался grid.

По этому использую его для сложных шаблонов, а для простого выравнивания по центру, сторонам - flex.

В остальном - флекс без проблем, но нужно объединять в контейнеры будет каждую строку, либо проставлять на детях flex-grow 1/2. А через grid можно всё в одном месте задать.

Пользуюсь тем самым сёрфейсом 7м.

Нихрена 11я винда под него не заточена. У меня просто бомбануло, написал и на вопросы и в центр отзывов уже.

Такое ощущение, что они вообще не думали, как пользоваться этим в связке.

У меня есть монитор, за которым работаю и собственно сам сёрф, в котором чёт тыкаю иногда, статьи там читаю.

Жесты следующие - нельзя вызвать что-то типо альт таба в сенсором варианте, можно только последнее использовано приложение открыть. Кароче, альт таб для двух приложений.

Ок, допустим, значит разбиваю по рабочим столам 2 приложения. Например, браузер - один стол, мессенджеры другой и музыка третий.

Я подрубаю это к монитору. И оно переносит только то, что открыто на данном столе. Например только браузер. И никак не возможно перетянуть с других столов на экран сёрфейса мессенджеры, чисто руками.

Допустим делаю это. Отсоединяю от монитора. И опа, они все на одном столе рабочем. И их блин снова разделять на другие столы нужно.

А переключиться между ними нельзя, тк жест то всего на 2 приложения.

Я уже не говорю про то, что для сенсорного экрана нет жеста растянуть на весь экран или свернуть. Это просто трындец. Очень надеюсь они поправят.

  1. Что можно сделать скриптом — сделал скриптом. Логика в том, чтобы ускорить.
  2. Shadow mode)
  3. Диоген объяснил, что нужна только бочка. По этому да, по сути подтвердил. Да и проект ему не нужен, по этой же логике
    А если серьёзно, то обычно работаю с заказчиками людьми, с ними можно разговаривать.им какие-то вещи нравятся, какие-то нет. Не вижу причин решать за них, что им нужно, а что нет. За спрос ещё ни разу не били, только спасибо говорили.

Блин, с телефона дублировался комментарий, а удалить не могу. Извиняюсь за мусор...

  1. Не знаю в какой вы там брод лезете. Нет, тесты на styled-component никто не писал. Думаю это несколько бредовое занятие. Какой каждый новый разработчик? Там была определённая команда и они выбрали такой код стайл — создавать новый styled-component в стилях рядом с каждым контейнером.
  2. Мне очень приятно, что вы отметили соответствие текста статьи её названию.
    Через 3 месяца стал более понятный сторибук. Не выгорели. Ничего не стало хуже. Работы было много, но с некоторыми видео пояснениями и блок схемами монотонную работу отдали джунам. Затем я за ними доделал работу. Под гнетом миллиона туду не выгорели, Т.к его на было
  3. Я с заказчиком играю против правил. По этому объяснив плюсы и пообещав больший контроль за проектом приступил к работе. Рефакторинг ему оказался нужен. Может и не нужен, тут уж я не спрашивал. По итогу ему очень понравилась новая версия проекта.

Ураа, у меня появился хейтер))

1

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Registered
Activity