Каждый влияет на скорость, SEO и даже на то, видит ли пользователь хоть что-то, пока грузится JS.
— как браузер решает, кто рендерит страницу — он или сервер;
— почему CSR «просыпается» с белого экрана;
— где SSG выигрывает даже у SSR;
— и как Next.js позволяет комбинировать стратегии в одном проекте.
#blueprint
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1
Пять лет на React — и вдруг понял, что жизнь без useEffect реально возможна. Ниже — коротко, в чём именно разница
const [count, setCount] = useState(0)
setCount(count + 1)
const count = ref(0)
count.value++
Просто работаешь с переменной — и всё обновляется. Никаких setState, никаких магических зависимостей.
const filtered = useMemo(() => items.filter(i => i.active), [items])
const filtered = computed(() => items.value.filter(i => i.active))
Во Vue не нужно думать про зависимости — оно само знает, когда пересчитать значение.
<div v-for="item in items" :key="item.id"> читается легче, чем {items.map(item => <div>...)}. v-if, v-show, v-model — три директивы, которые убирают сотни строк boilerplate.
useEffect(() => {
if (email && !isValidEmail(email)) setError(‘Invalid’)
else setError(’’)
}, [email])
const email = ref(’’)
const error = computed(() => email.value && !isValidEmail(email.value) ? ‘Invalid’ : ‘’)
Что реально зацепило:
1. Нет useEffect hell — watch и watchEffect проще и читаемее.
2. v-model — двустороннее связывание без боли и бойлерплейта.
3. Меньше бандл: React + ReactDOM ≈ 45 KB (gzip), Vue 3 ≈ 34 KB (gzip).
Что не зашло:
— Экосистема меньше
— TypeScript-интеграция всё ещё местами шероховата
На работе продолжаю React (экосистема, команда, легаси). Но когда сажусь за свой проект в выходные — открываю Vue.
#code_battle
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🌚3🥰2👏2🎉1
А вы на чём пишете сейчас ❔
Anonymous Poll
44%
React (и доволен)
18%
React (но хочу попробовать Vue)
27%
Vue (и доволен)
2%
Vue (но думаю вернуться к React)
9%
Использую оба
🥰6
YeaHub — открытый репозиторий для прокачки навыков и подготовки к собесам в IT. Есть тренажёр интервью, скоро добавят публикации и карьерные дорожные карты.
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍1
Классика: делаешь height: 100vh для фуллскрин-секции, на десктопе всё ок, а на телефоне контент уезжает за экран и появляется скролл.
Браузер считает 100vh по полной высоте экрана, включая скрывающиеся панели. Когда скроллишь — адресная строка прячется, высота viewport меняется, и блок начинает прыгать.
Раньше приходилось считать реальную высоту через JS — решение рабочее, но костыль.
dvh — динамическая высота, подстраивается при скролле
svh — учитывает адресную строку
lvh — без адресной строки, максимальная высота
Поддержка: iOS 15.4+, Chrome 108+, Safari 15.4+
Сначала указываем height: 100vh, а следом height: 100dvh — новые браузеры просто переопределят старое значение.
#hotfix #css
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🥰5❤🔥4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20🌚3
Когда нужен один конкретный фикс, но мёржить всю ветку не хочется — выручает git cherry-pick.
git cherry-pick <hash>
Git применит выбранный коммит в твою текущую ветку — аккуратно и без лишнего кода.
— Можно применить сразу несколько коммитов:
git cherry-pick A^..B
Так Git возьмёт все коммиты с A по B включительно (вариант без ^ пропустит A).
— Удобно для переноса хотфиксов из main в develop или наоборот.
#readme #git
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰8👍2
Airbnb — это пример того, как интерфейс превращает риск в уверенность, а сомнения — в решение.
«Здесь всё под контролем».
#ux_review
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥2👾2🥰1
Частая картина в коде:
<div class="btn" role="button">Нажми меня</div>
Кажется, что
role="button" превращает <div> в кнопку. Но это не так.role="button" только сообщает скринридерам «это кнопка», но НЕ добавляет поведение кнопки.
У такого "div-button" по-прежнему нет:
- Фокуса с клавиатуры (Tab)
- Активации по Space/Enter
- Состояния disabled
- Доступного имени
Всё это нужно программировать вручную через JS.
button {
all: unset;
}Одна строка CSS сбрасывает стили браузера — и можно стилизовать
<button> как угодно, сохраняя всю встроенную доступность.Семантический HTML — это не только про «правильность». Это способ избежать лишней работы.
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🥰3
🎁 И мозг прокачать, и макбук утащить!
Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Условия:
1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.
Что за курсы?
— Математика для Data Science (6 месяцев боли и просветления).
— Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.
👉 Участвовать в розыгрыше
Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Условия:
1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.
Что за курсы?
— Математика для Data Science (6 месяцев боли и просветления).
— Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.
👉 Участвовать в розыгрыше
🔥1