WebDev+ | Веб-разработка
8.32K subscribers
504 photos
241 videos
10 files
699 links
Присоединяйтесь к нашему каналу и погрузитесь в мир веб-разработки

Связь: @devmangx
Download Telegram
CSS spacing grids обычно приводят к громоздким цепочкам calc() или куче кастомных свойств. Вместо этого можно переиспользовать редко используемую единицу rlh как короткий и гибкий токен для сетки.

@WebDev_Plus
👍5
Хочешь увидеть крутой трюк, как получить время (часы, минуты и секунды) с учётом часового пояса?

Вот он , потом поблагодаришь!
👍2
Как работает JavaScript:

Script.js
|
|------------------------------|
| Event Loop |
| Call Stack |
| Callback Queue |
| Promises |
| V8 Engine |
| Garbage Collection|
|------------------------------|
|
Async & non-blocking

@WebDev_Plus
👌2
Alibaba фактически убила стек автоматизации браузера.

page-agent.js — это GUI-агент, который работает прямо внутри веб-страницы. Никакого Selenium. Никакого Puppeteer. Никаких Chrome-расширений. Никакого Python-бэкенда. Просто один script-тег.

Он читает DOM как текст (без скриншотов и мультимодальности), подключаешь любую свою LLM и выполняешь команды на естественном языке вроде «заполни эту форму» или «нажми login» — прямо внутри страницы.

Юзкейсы реально мощные:
→ Можно встроить AI-копилота в свой SaaS буквально за несколько строк кода
→ Превратить 20 кликов в ERP/CRM в одно предложение
→ Сделать любой legacy веб-приложение доступным через голос или естественный язык

12k звёзд. Лицензия MIT. Построен поверх внутренних механизмов browser-use — но без всего лишнего сетапа.

Вот как на практике выглядит «AI-native UX».

https://github.com/alibaba/page-agent

@WebDev_Plus
3
Нашёл UI-библиотеку, которая меня прям бесит.

Бесит, потому что всё должно работать именно так.

Oat:
→ 6KB CSS + 2.2KB JS
→ Ноль зависимостей
→ Не требует фреймворка
→ Без этапа сборки
→ Только семантический HTML

Пишешь <button> — выглядит хорошо.
Пишешь <dialog> — выглядит хорошо.
Пишешь <input> — выглядит хорошо.

Никакого className="px-4 py-2 rounded-md bg-blue-500"

Никаких <Button variant="primary" size="md">

Просто HTML.

Доступность из коробки. Поддержка навигации с клавиатуры. Тёмная тема включена.

https://github.com/knadh/oat

@WebDev_Plus
Границы выглядят не такими чёткими, как в Figma?

Figma рендерит внешний stroke иначе, чем браузеры — тонкие границы выглядят более чёткими и более светлыми (или тёмными).

Чтобы добиться такого же эффекта, используйте shadow вместо border.

@WebDev_Plus
Пишите более чистый CSS с помощью nesting.

Теперь в CSS можно вкладывать селекторы напрямую.
Это улучшает читаемость, делает стили более модульными и уменьшает количество повторений.

Никакой препроцессор не нужен.

Подробнее : https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Nesting

@WebDev_Plus
Только что узнал про background-clip, который решает именно эту проблему. Если установить значение padding-box, фон элемента не будет рисоваться под границей (border).

Однако, если нужно точно совпасть с макетом из Figma, всё равно придётся использовать тени (shadow).

@WebDev_Plus
Быстрый совет по React: не подписывайтесь на данные, которые вы не рендерите — это вызывает лишние ререндеры. Если данные используются только в обработчиках событий, читайте их там.

AI-агенты для кодинга часто делают это неправильно.

@WebDev_Plus
Большинство примеров работы с API заканчиваются простым вызовом fetch().

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

В этом гайде показывает, как построить production-ready networking на JavaScript.

@WebDev_Plus
TypeScript в своей наиболее выразительной форме

— Generics (обобщения)
— Omit (исключение свойств из типа)
— keyof (получение ключей типа)
— Literal Union (объединение литеральных типов)

Смотри, как это делает код типобезопасным 👇

#TypeScript
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Cпособ переключить сайт в тёмный режим

С нативной и настраиваемой анимацией.

Всего 2 строки JavaScript и немного CSS:
http://theme-toggle.rdsx.dev

@WebDev_Plus
Знал про HTTP-заголовок Clear-Site-Data? 👀

Один заголовок позволяет очистить cookies, storage или cache для вашего сайта. Идеально подходит для logout-флоу.

Подробнее : https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Clear-Site-Data

@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
hyphenate-character широко доступен с 2023 года

Позволяет управлять символом, который показывается в конце строки при переносе слова. По умолчанию используется auto (‐), но это можно настроить.

Полезно для креативной типографики и многоязычных сайтов.

https://developer.mozilla.org/en-US/docs/Web/CSS/hyphenate-character

@WebDev_Plus
navigator.credentials.preventSilentAccess() теперь широко доступен!

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

Подробнее 👇

https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/preventSilentAccess

@WebDev_Plus
Please open Telegram to view this post
VIEW IN TELEGRAM
В следующей версии Bun

Встроенный клиент WebSocket в Bun теперь поддерживает Unix domain sockets.

// Plain
const ws = new WebSocket("ws+unix:///tmp/app.sock");

// With a request path (split on first ':', same as the npm `ws` package)
const ws = new WebSocket("ws+unix:///tmp/app.sock:/api/stream?x=1");

// TLS over a unix socket
const ws = new WebSocket("wss+unix:///tmp/app.sock", {
tls: { rejectUnauthorized: false },
});


Ранее Unix domain sockets поддерживались только в WebSocket-сервере. Теперь поддержка есть и в клиенте, и в сервере.

@WebDev_Plus
:only-child теперь матчится даже на элементы без родителя!

Селектор :only-child обновили — теперь он может матчить элементы, у которых вообще нет родителя, а не только те, которые являются единственным ребёнком.

Небольшое, но полезное выравнивание спецификации во всех основных браузерах.

Узнать больше : https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/:only-child

@WebDev_Plus
Нужно отслеживать, когда элементы попадают в область видимости? 👀

IntersectionObserver вызывает колбэк, когда элементы пересекают порог видимости. Больше не нужны обработчики события прокрутки.

⋅ Ленивая загрузка изображений
⋅ Отслеживание видимости рекламы
⋅ Триггер анимаций при скролле

Подробнее - https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver

@WebDev_Plus
This media is not supported in your browser
VIEW IN TELEGRAM
Хорошие новости для веб-типографики: text-indent с ключевыми словами each-line и hanging теперь входит в Baseline Widely Available → https://goo.gle/4c7tO9j

Теперь можно делать более сложные, типографские лейауты в духе печатных изданий с помощью CSS, и это стабильно работает во всех основных движках.

@WebDev_Plus
2
This media is not supported in your browser
VIEW IN TELEGRAM
Оставляйте видео видимым даже при переключении вкладок → https://goo.gle/3O03kNA

Автоматический режим «картинка в картинке» убирает необходимость ручного переключения и решает проблему потери вовлечённости при уходе со страниц с медиа-контентом. Теперь браузер сам обрабатывает этот переход.

@WebDev_Plus
1
Container Queries в CSS позволяют компонентам самим определять свои стили

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

Подробнее : https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_queries

@WebDev_Plus