WXT — кроссбраузерный фреймворк для создания веб-расширений нового поколения 🔥
WXT основан на Nuxt и стремится предоставить такой же отличный DX с TypeScript, автоматическим импортом и продуманной структурой
Есть несколько стартовых шаблонов для наших любимых фреймворков: Vue, React, Svelte, SolidJs
Фреймворк👇
https://wxt.dev/
WXT основан на Nuxt и стремится предоставить такой же отличный DX с TypeScript, автоматическим импортом и продуманной структурой
Есть несколько стартовых шаблонов для наших любимых фреймворков: Vue, React, Svelte, SolidJs
Фреймворк👇
https://wxt.dev/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥9❤🔥3
Zod — библиотека для объявления и проверки схем на TypeScript👍
Цель Zod'а состоит в том, чтобы исключить дублирование объявлений типов. С его помощью ты один раз объявляешь валидатор, и Zod автоматически выводит статический тип TypeScript. Простые типы легко объединить в сложные структуры данных
Например, Zod позволит тебе анализировать переменные окружения, обережёт тебя от ручных проверок, как на скрине
Библиотека👇
https://zod.dev/
Цель Zod'а состоит в том, чтобы исключить дублирование объявлений типов. С его помощью ты один раз объявляешь валидатор, и Zod автоматически выводит статический тип TypeScript. Простые типы легко объединить в сложные структуры данных
Например, Zod позволит тебе анализировать переменные окружения, обережёт тебя от ручных проверок, как на скрине
Библиотека👇
https://zod.dev/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥5❤🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Держись, уже почти пятница 🫡
Вот тебе мемасик для повышения настроения🫶
Вот тебе мемасик для повышения настроения
Please open Telegram to view this post
VIEW IN TELEGRAM
😁28🤮7🤡4👍3🔥2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Крутой эффект при наведении на текст 🔥
Хитрость заключается в использовании
Для случайных сдвигов можно использовать JS
Элементы будут выглядить примерно так👇
И конечно же трансформация при фокусе
Пример👇
https://codepen.io/jh3y/pen/NWBdbRP
Хитрость заключается в использовании
:has()
для создания эффекта исключения, при котором ты выберешь всех дочерних элементов, кроме того, на который наведен курсор.details:has(a:hover) *:not(:hover) { opacity: 0.1; }
a:hover { --active: 1; }
.char {
translate: calc(var(--active) * var(--x) * 1%) ... ;
}
.details:has(a:is(:hover, :focus-visible))
*:not(:hover, :focus-visible) {
--opacity: 0.1;
}
.details :is(span, a) {
opacity: var(--opacity, 1);
transition: opacity 0.2s;
}
Для случайных сдвигов можно использовать JS
Элементы будут выглядить примерно так👇
<span class="char" data-char="A" style="--r: -6; --y: -1; --x: -22;">A</span>
И конечно же трансформация при фокусе
a:is(:hover, :focus-visible) { --active: 1; }
.char {
transition: transform 0.25s var(--elastic);
display: inline-block;
transform:
rotate(calc((var(--active) * var(--r)) * 1deg))
translate(
calc((var(--active) * var(--x)) * 1%),
calc((var(--active) * var(--y)) * 1%)
);
}
Пример👇
https://codepen.io/jh3y/pen/NWBdbRP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24❤🔥6👍6👎2
Бесполезный, но интересный совет: calc(infinity) 🤫
Ты можешь использовать calc(infinity) для того, чтобы получить максимально возможное значение, например, для z-index, width, height и т.д.
Практического применения для этого я пока правда не нашел😄
Ты можешь использовать calc(infinity) для того, чтобы получить максимально возможное значение, например, для z-index, width, height и т.д.
Практического применения для этого я пока правда не нашел
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39👍7❤4🤡2🤪2
This media is not supported in your browser
VIEW IN TELEGRAM
Оптимизируем YouTube embed в Next.js и не только 👨💻
Чуваки из гугла решили сделать библиотечку для Next.js (@next/third-parties), которая будет оптимизировать встраивание сторонних скриптов на Next.js проекты
Пока что они позаботились об встраивании своих эмбедов: YouTube, Google Maps и Google Analytics и уже флексят достижениями
Статья👇
https://developer.chrome.com/blog/next-third-parties?hl=ru
Видео доклад👇
https://www.youtube.com/watch?v=zZPNwx0m07U
Чуваки из гугла решили сделать библиотечку для Next.js (@next/third-parties), которая будет оптимизировать встраивание сторонних скриптов на Next.js проекты
Пока что они позаботились об встраивании своих эмбедов: YouTube, Google Maps и Google Analytics и уже флексят достижениями
Статья
https://developer.chrome.com/blog/next-third-parties?hl=ru
Видео доклад
https://www.youtube.com/watch?v=zZPNwx0m07U
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤🔥6🔥4
Что нового в Chrome 122? 👨💻
— Улучшили управление хранилищами с помощью Storage Buckets API
— Небольшие нововведения в девтулзах, в разделе Performance
— Появилась опция
Читать👇
https://developer.chrome.com/blog/new-in-chrome-122
Смотреть👇
https://www.youtube.com/watch?v=8fWkUNV-eic
— Улучшили управление хранилищами с помощью Storage Buckets API
— Небольшие нововведения в девтулзах, в разделе Performance
— Появилась опция
unsanitized
для Async Clipboard APIЧитать
https://developer.chrome.com/blog/new-in-chrome-122
Смотреть
https://www.youtube.com/watch?v=8fWkUNV-eic
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤5❤🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25💋13💘5❤🔥4💅2👏1🎉1
arcjet — прослойка безопасности для Next.js и Node.js приложений 👨💻
Если тебе нужно защитить твоё детище рейт-лимитом, то arcjet с удовольствием сделает это для тебя🥳
Проектик молодой, аккуратнее на проде⚠️
https://arcjet.com/
Если тебе нужно защитить твоё детище рейт-лимитом, то arcjet с удовольствием сделает это для тебя
Проектик молодой, аккуратнее на проде
https://arcjet.com/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3❤2❤🔥1🥴1
В Angular теперь можно получать ссылки на компоненты и элементы HTML в виде Signals при помощи функций
https://angular.dev/guide/signals/queries
Пока в стадии developer preview⚠️
viewChild
/viewChildren
и contentChild
/contentChildren
https://angular.dev/guide/signals/queries
Пока в стадии developer preview
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍5❤🔥3😐2
ECMAScript 2024 №1: groupBy 👨💻
Потихоньку буду писать про пропоузалы ECMAScript, которые с большой вероятностью появятся в стандарте в 2024 году
Начну с метода
Вот примерчик группировки массива чисел на чётные и нечётные
https://github.com/tc39/proposal-array-grouping
Потихоньку буду писать про пропоузалы ECMAScript, которые с большой вероятностью появятся в стандарте в 2024 году
Начну с метода
groupBy
, он появится у объекта Map
и Object
и будет использоваться для того, чтобы разгруппировать массив на объект по ключамВот примерчик группировки массива чисел на чётные и нечётные
Object.groupBy(array, (num, index) => {
return num % 2 === 0 ? 'even': 'odd';
});
// => { odd: [1, 3, 5], even: [2, 4] }
https://github.com/tc39/proposal-array-grouping
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44👍18❤🔥3🐳3
Что нового в Chrome 123? 🧑🎓
— CSS функция light-dark(white, black), которая выберет цвет в зависимости от темы пользователя
— Long Animation Frames API позволяет найти перегрузки/блокировки основного потока влияющие на отзывчивость интерфейса
— Service worker Static Routing API позволит во время установки объявить пути, которые всегда будут обслуживаться из сети
https://developer.chrome.com/blog/new-in-chrome-123?hl=ru
— CSS функция light-dark(white, black), которая выберет цвет в зависимости от темы пользователя
— Long Animation Frames API позволяет найти перегрузки/блокировки основного потока влияющие на отзывчивость интерфейса
— Service worker Static Routing API позволит во время установки объявить пути, которые всегда будут обслуживаться из сети
https://developer.chrome.com/blog/new-in-chrome-123?hl=ru
Please open Telegram to view this post
VIEW IN TELEGRAM
Chrome for Developers
Новое в Chrome 123 | Blog | Chrome for Developers
Chrome 123 уже доступен! Благодаря новой функции «светлый-темный», API длинных кадров анимации, API статической маршрутизации Service Worker и многим другим. Адриана Хара рассказывает все подробности о том, что нового для разработчиков в Chrome 123.
👍9🔥8❤🔥3❤2
Представляем Firebolt: Продуктивный React фреймворк 🚀
У нас тут снова новичок, обещает, что будет всё просто и быстро🤤
https://habr.com/ru/articles/803255/
У нас тут снова новичок, обещает, что будет всё просто и быстро
https://habr.com/ru/articles/803255/
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Представляем Firebolt: Продуктивный React фреймворк
Эта статья — перевод оригинальной статьи « Introducing Firebolt: The Productive React Framework ». Также я веду телеграм канал « Frontend по‑флотски », где рассказываю про интересные вещи...
🗿12💩4👍3🔥3👎1💔1
ECMAScript 2024 №2: string.isWellFormed() 👨💻
Специфичный и одновременно простой пропоусал вероятно появится в этом году в стандарте
Суть его в том, чтобы проверить строку на то, нормально ли она будет отображаться пользователю 😄
В каком случае она может неверно отобразиться?
Основная причина неверного отображения — разрыв суррогатной пары юникод символов (они часто используются в современных эмоджи), это может случится в результате ошибок работы с текстом
https://github.com/tc39/proposal-is-usv-string
Специфичный и одновременно простой пропоусал вероятно появится в этом году в стандарте
Суть его в том, чтобы проверить строку на то, нормально ли она будет отображаться пользователю 😄
В каком случае она может неверно отобразиться?
Основная причина неверного отображения — разрыв суррогатной пары юникод символов (они часто используются в современных эмоджи), это может случится в результате ошибок работы с текстом
https://github.com/tc39/proposal-is-usv-string
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥10😁3🔥2🥱2❤1👍1👎1
SvelteJS стал самым популярным фреймворком этого года 🤯
Он набрал 254к и 251 млн. скачиваний и звёздочек, из которых более 50% за 2024 год
Для сравнения у React 20млн скачиваний и 221к звёздочек, а у Vue 4млн скачиваний и 44к звёдочек
Он набрал 254к и 251 млн. скачиваний и звёздочек, из которых более 50% за 2024 год
Для сравнения у React 20млн скачиваний и 221к звёздочек, а у Vue 4млн скачиваний и 44к звёдочек
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣33🔥16💩10🤡9😱4👍2
ScreenMate AI: автоматизированное создание и прохождение UI тест-кейсов для твоих веб-приложений 👨💻
Представь, что ты показываешь нейросети успешный путь для конкретного тест-кейса, а она пытается его сломать и выдаёт тебе скоуп непрошедших тестов🤯
Сервис ещё в процессе разработки, поэтому на данный момент есть только демо-видео и веб-сайт
Чтобы сделать продукт более нужным, команда ScreenMate обращается к опытным фронтендерам, их потенциальным пользователям, для проведения небольшого zoom интервью на 35 минут, а в подарок дают подарочный сертификат на 2000 рублей на Ozon🎁
Чтобы записаться на интервью, пиши @fitilbam❤️
Представь, что ты показываешь нейросети успешный путь для конкретного тест-кейса, а она пытается его сломать и выдаёт тебе скоуп непрошедших тестов
Сервис ещё в процессе разработки, поэтому на данный момент есть только демо-видео и веб-сайт
Чтобы сделать продукт более нужным, команда ScreenMate обращается к опытным фронтендерам, их потенциальным пользователям, для проведения небольшого zoom интервью на 35 минут, а в подарок дают подарочный сертификат на 2000 рублей на Ozon
Чтобы записаться на интервью, пиши @fitilbam
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤🔥3🔥2👏1💩1
Релизнулся ESLint 9.0.0 👨💻
Из интересного там появилось новое правило
https://eslint.org/blog/2024/04/eslint-v9.0.0-released/
Из интересного там появилось новое правило
no-useless-assignment
предназначенное для выявления ситуаций, когда ты присвоил переменной значение, но оно никогда не используетсяlet id = 1234; // 1234 никогда не используется
id = calculateId();
https://eslint.org/blog/2024/04/eslint-v9.0.0-released/
Please open Telegram to view this post
VIEW IN TELEGRAM
eslint.org
ESLint v9.0.0 released - ESLint - Pluggable JavaScript Linter
A pluggable and configurable linter tool for identifying and reporting on patterns in JavaScript. Maintain your code quality with ease.
🔥16👍6❤🔥2❤1
WebAssembly JavaScript Promise Integration (JSPI) можно попробовать в Chrome 🥸
JavaScript Promise Integration (JSPI) - это API, который позволяет синхронному последовательному коду, скомпилированному в WebAssembly, получать доступ к асинхронным веб-интерфейсам. Многие веб-интерфейсы построены на основе обещаний JavaScript: вместо немедленного выполнения запрошенной операции они возвращают обещание сделать это. Когда действие наконец-то выполнено, программа запуска задач браузера вызывает все обратные вызовы с обещанием. JSPI подключается к этой архитектуре, чтобы позволить приложению WebAssembly приостанавливаться при возвращении обещания и возобновлять работу, когда обещание будет выполнено.
Чтобы лучше понять, как использовать эту функцию, рассмотрим следующий отрывок программы на языке C, которая вычисляет последовательность Фибоначчи, передавая сложение функции JavaScript.
Определить поддержку JSPI в JavaScript можно следующим образом:
Пропоузал👇
https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration/Overview.md
JavaScript Promise Integration (JSPI) - это API, который позволяет синхронному последовательному коду, скомпилированному в WebAssembly, получать доступ к асинхронным веб-интерфейсам. Многие веб-интерфейсы построены на основе обещаний JavaScript: вместо немедленного выполнения запрошенной операции они возвращают обещание сделать это. Когда действие наконец-то выполнено, программа запуска задач браузера вызывает все обратные вызовы с обещанием. JSPI подключается к этой архитектуре, чтобы позволить приложению WebAssembly приостанавливаться при возвращении обещания и возобновлять работу, когда обещание будет выполнено.
Чтобы лучше понять, как использовать эту функцию, рассмотрим следующий отрывок программы на языке C, которая вычисляет последовательность Фибоначчи, передавая сложение функции JavaScript.
// Это код на C.
long promiseFib(long x) {
if (x == 0)
return 0;
if (x == 1)
return 1;
// Это где C код вызывает асинхронный JavaScript.
return promiseAdd(promiseFib(x - 1), promiseFib(x - 2));
}
// Дополнение, искусственно завернутое в Обещание.
EM_ASYNC_JS(long, promiseAdd, (long x, long y), {
// Это асинхронный JavaScript код.
return Promise.resolve(x+y);
});
Определить поддержку JSPI в JavaScript можно следующим образом:
if ('Suspender' in WebAssembly) {
// JSPI поддерживается.
}
Пропоузал
https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration/Overview.md
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5💩4❤🔥2❤1