Frontend Developer – Telegram
Frontend Developer
193 subscribers
18 photos
2 videos
67 links
Пост-знакомство — https://news.1rj.ru/str/frontenddevelopernews/3

По всем вопросам — @mobiledeveloper_bot
Download Telegram
A Few Things About the Anchor Element’s href You Might Not Have Known

Обычно то, что кажется супер простым, просто пролистывается и не читается 🙂
Но я уже много раз говорила: сила — в базовых вещах ⚡️

На днях наткнулась на статью с таким названием:
«Несколько фактов о значении href у тега `<a>`, которых вы могли не знать»
и решила посмотреть, что там интересного 👀

Вот что я нашла:

* `href="#"` — скроллит страницу в начало документа.
* `href=""` — перезагружает текущую страницу, сохраняя строку запроса (query string), но удаляя hash.

Примеры:

URL                  Преобразуется в
/path/ /path/
/path/#foo /path/
/path/?id=foo /path/?id=foo
/path/?id=foo#bar /path/?id=foo


* `href="."` — перезагружает текущую страницу, убирая и query string, и hash (если они есть).

Примеры:

URL                  Преобразуется в
/path /
/path#foo /
/path?id=foo /
/path/ /path/
/path/#foo /path/
/path/?id=foo /path/
/path/index.html /path/


* `href="?"` — тоже перезагружает страницу, убирая query и hash, но оставляет ?.

Примеры:

URL                  Преобразуется в
/path /path?
/path#foo /path?
/path?id=foo /path?
/path?id=foo#bar /path?
/index.html /index.html?


* `href="data:"` — можно делать ссылки на data URL. Например:

<a href="data:text/plain,hello world">
View plain text data URL
</a>


* `href="video.mp4#t=10,20"` — медиa-фрагменты. Можно указывать конкретный отрезок видео или аудио.
В этом примере видео начнётся с 10-й секунды и остановится на 20-й.

---

Было ли среди этого что-то, о чём вы не знали? 🤔

👉 https://blog.jim-nielsen.com/2025/href-value-possibilities/
5
Вот я думаю, что это совсем не так) SQL  точно не боюсь) А вы что думаете и чего боитесь?
🎉 Chrome исполнилось 17 лет!

В 2008 году Chrome появился как эксперимент с упором на скорость, безопасность, стабильность и простоту. Сегодня это самый популярный браузер в мире, и его эволюция впечатляет 👇

🔹 Скорость
Старт с движка V8, который делал JavaScript в разы быстрее конкурентов. Сейчас Chrome — лидер в тесте Speedometer 3.1 (главный бенчмарк скорости браузеров), оптимизирован для мобильных устройств и экономит пользователям миллионы часов загрузки страниц.

🔹 Безопасность
С первых версий — песочница вкладок, автообновления, Site Isolation. Позже — Rust-компоненты, защита от фишинга с помощью ML, менеджер паролей и повсеместный переход на HTTPS.

🔹 Стабильность
Благодаря мультипроцессной архитектуре сбой одной вкладки не «роняет» браузер. А технологии вроде Discarding, PartitionAlloc и фоновые обновления делают Chrome надёжным даже при сотнях открытых вкладок.

🔹 Простота
Минимализм с самого старта: единый Omnibox (адрес + поиск в одном поле) и минимум интерфейса вокруг контента. Со временем появились удобства — автозаполнение, менеджер паролей, DevTools с AI-подсказками. Новые функции добавляются аккуратно, сохраняя простоту.

Сегодня Chrome — это результат многолетней работы над удобным и безопасным интернетом. А впереди — AI-возможности и новые стандарты для открытого веба.

Читать полную статью Addy Osmani:
👉 https://addyosmani.com/blog/chrome-17th/
🔥51
🎯 CSS: выравниваем по-умному, а не методом тыка

Статья "The Fundamentals of CSS Alignment" (4 сентября 2025) объясняет, как работают свойства выравнивания в Grid, Flexbox и блочном режиме — и почему больше логики, а не путаницы.

Основные тезисы:
• Есть два уровня: контейнер (content) и элемент (item). Удобные шорткаты: place-content, place-items, place-self.
• В Grid-контейнере элементы выравниваются внутри ячеек или областей, а 1fr может поглотить всё свободное пространство и заблокировать выравнивание.
• В Flexbox выравнивание по горизонтали работает группой (через justify-content).
• Для абсолютных элементов (absolute) работает только place-self.
• Чтобы избежать проблем с overflow (например, недоступной областью), используйте safe, например justify-self: safe center.

Читать подробнее: https://css-tip.com/explore/alignment/
1
🎉 Наконец-то: безопасные методы работы с массивами в JavaScript

ES2023 представил версии привычных методов для массивов, которые не мутируют исходные данные — идеально для React и функционального подхода.

Сравнение:
toSorted() вместо sort() — новый отсортированный массив.
toReversed() вместо reverse() — новый перевёрнутый массив.
toSpliced() вместо splice() — новый результат без изменений оригинала.

Подробнее в статье: https://allthingssmitty.com/2025/09/08/finally-safe-array-methods-in-javanoscript/
🔥5
🤣🤣🤣
🤣9
🚨 Атака на npm: компрометация debug, chalk и ещё 16 популярных пакетов

По данным Aikido Security, начиная с 8 сентября 2025, 13:16 UTC, в npm были загружены злонамеренные версии ряда широко используемых пакетов. В сумме они набирают более 2 миллиардов загрузок в неделю.

---

Что произошло:

* Были обновлены 18 пакетов (включая debug, chalk, ansi-styles, strip-ansi, supports-color и др.) — внесён обфусцированный код, который выполняется в браузере.
* Этот код тихо перехватывает транзакции криптовалюты и действия web3, вмешивается в window.ethereum и переписывает адреса получателей на адреса, контролируемые злоумышленниками.
* Пакеты были доступны скомпрометированными примерно 2–3 часа до того, как часть из них была удалена или заменена чистыми версиями.

---

Почему это опасно:

* Пострадать могут приложения, в которых запускались клиентские (браузерные) сборки с этими пакетами, особенно те, что работают с криптовалютами/web3.
* Даже если вы явно не используете debug или chalk, пострадать можно транзитивно — через зависимости.

---

Что делать, если ты мог быть затронут:

1. Проверь package.json, package-lock.json / yarn.lock — ищите версии пакетов, которые были скомпрометированы.
2. Обнови на безопасные версии (версии до атаки) или используйте версии, подтверждённые как безопасные.
3. Пересобери клиент-bundle’ы, очисти кеши на CDN и локальные кеши сборки — если они содержат зловредный код.
4. Мониторьте журналы и телеметрию, если приложение работает с web3 — поиск необычного поведения wallet API.

---

🧭 Уроки:

* Даже популярные, проверенные пакеты могут быть атакованы через phishing и компрометацию аккаунта.
* Один сбой безопасности может распространиться по экосистеме через транзитивные зависимости.
* Статическая защита + внимательность к версии + контроль зависимостей + своевременные обновления критичны.

---

Читать оригинал: https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised
🔥3😱3👍1
😂😂😂
Отличной всем пятницы и прекрасных выходных 🥳
😁14🤣3
⚡️ В React Router появились middleware!

В версии 7.9.0 добавили стабильную поддержку middleware 🎉. Теперь можно:

* 🔑 Проверять авторизацию в родительском маршруте и останавливать выполнение дочерних loader
* 📡 Передавать данные из middleware в контекст, доступный в loader и маршрутах
* 🛠 Реализовать общую логику (логирование, редиректы, заголовки) без дублирования

Пример авторизации через middleware:

// routes/_protected.tsx
import { redirect } from "react-router";

export async function middleware({ context }) {
if (!context.user) {
throw redirect("/login");
}
}


👉 Подробнее: https://remix.run/blog/middleware
👉 Документация: https://reactrouter.com/how-to/middleware
🔥4👍3
⚡️ React Bits — готовые анимированные компоненты для React

Иногда мне присылают полезные сайты — так я и наткнулась на https://reactbits.dev/ 🎉

Это коллекция готовых анимированных компонентов для React + Tailwind: кнопки, переключатели, загрузчики, анимации. Быстро оживляет интерфейс и экономит время разработки.
👍41🥰1
Последние 8 месяцев я каждые две недели проводила ассессменты фронтенд-разработчиков. Делюсь инсайтами:

Компания и команда в которой человек начинает стажировку играет немаловажную роль. Например, встречались кейсы, когда разработчик с 6 годами опыта получал оценку «джун» — просто потому что его скоуп задач в проекте был сильно ограничен. Причём иногда уже по рассказу кандидата о том, чем он занимался, можно составить определённое мнение о его уровне.

🚀 Большое значение имеет стремление к саморазвитию. Попадались кандидаты, которые честно говорили: «Я просто пишу код, а теорию уже давно забыл».

Если первую категорию людей я еще понимаю что окружение возможно сыграло свою роль, то вторую нет, как им не страшно оказаться не востребованным и не развиваться)
👍4
🎬 Всем привет!
Вышел документальный фильм про Vitehttps://www.youtube.com/watch?v=bmWQqAKLgT4 (на английском языке).

Фильм рассказывает о том, как появилась идея создания Vite, как стремительно начала расти экосистема, появились плагины, тестовый фреймворк Vitest и конференция ViteConf, впервые объединившая разработчиков из разных экосистем.
Также показано, как Vite стал *де-факто стандартом* современной веб-разработки.

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

🔥 Рекомендую к просмотру!
🔥5
🧩 Разберём сегодня небольшую задачку:
https://bigfrontend.dev/react/useUpdateEffect

Нужно реализовать кастомный хук `useUpdateEffect`, который работает почти так же, как useEffect,
но не срабатывает при первом рендере.

Вот возможная реализация 👇

import React, { useEffect, useRef } from 'react';

export function useUpdateEffect(effect: EffectCallback, deps?: DependencyList) {
const isFirst = useRef(true);

useEffect(() => {
if (isFirst.current) {
isFirst.current = false;
return;
}
return effect();
}, deps);
}
👍5
🔗 Your URL Is Your State

Недавно наткнулась на статью:
https://alfy.blog/2025/10/31/your-url-is-your-state.html

В ней — простая, но почти забытая философия:
в погоне за фреймворками и глобальными сторами мы перестали ценить то, что веб умел с самого начала — хранить состояние прямо в URL-е.

Хорошо спроектированный URL — это контракт между приложением и пользователем.
Он описывает смысл, сохраняет контекст и делает взаимодействие предсказуемым.

🧭 Когда стоит хранить состояние в URL:
поисковые запросы, фильтры, сортировки, даты, активные вкладки, режимы просмотра
пароли, личные данные, временные состояния, слишком большие объекты

💡 Лучшие практики:
• Делайте параметры читаемыми и последовательными (?theme=dark&page=2)
• Используйте pushState для навигации, replaceState — для мелких обновлений
• Не храните чувствительные данные
• Избегайте чрезмерно длинных или зашифрованных ссылок

📖 В общем, очень советую прочитать статью
и вспомнить, насколько элегантным может быть веб, если не усложнять то, что уже давно работает идеально.
👍3
💡 Давайте решим лёгкую задачку:
https://bigfrontend.dev/typenoscript/implement-Pick-T-K

По моим наблюдениям, многие фронтендеры не всегда до конца знают TypeScript.
Базовые вещи — да 😊, а вот если копнуть чуть глубже, то многие теряются!

---

📘 Условие задачи:

Реализуйте тип MyPick<T, K> самостоятельно.

type Foo = {
a: string
b: number
c: boolean
}

type A = MyPick<Foo, 'a' | 'b'> // { a: string, b: number }
type B = MyPick<Foo, 'c'> // { c: boolean }
type C = MyPick<Foo, 'd'> // Ошибка


Использовать встроенный Pick<T, K>нельзя 🚫

---

🧠 Чтобы решить задачу, нужно вспомнить две вещи:

1. оператор keyof - https://www.typenoscriptlang.org/docs/handbook/2/keyof-types.html
2. наследование с помощью extends

Тип MyPick принимает:

* первый аргумент — исходный тип T
* второй — K, который может быть только ключом из T

---

Решение:

type MyPick<T, K extends keyof T> = {
[P in K]: T[P]
}


Так мы получаем новый тип, содержащий только нужные ключи и их типы 👌
🔥41
😭😭😭🤣🤣🤣
😁8👻1
🚀 Вышел Storybook 10!

Крупный релиз популярного инструмента для разработки и документирования UI-компонентов.
Главное изменение — переход Storybook на формат ECMAScript Modules (ESM-only).
Это делает проект современнее, ускоряет установку и уменьшает вес зависимостей,
но требует внимания при обновлении — это breaking change.
🧭 Гайд по миграции: https://storybook.js.org/docs/releases/migration-guide-from-older-version

📘 Подробнее о релизе и всех нововведениях:
https://storybook.js.org/releases/10.0

P.S. я уже как-то писала о том

В чём же разница между CommonJS и ES Modules? - https://news.1rj.ru/str/frontenddevelopernews/4
Как вообще уживаются вместе .cjs, .mjs и .js файлы в одном проекте? - https://news.1rj.ru/str/frontenddevelopernews/5
4
🌟 Site of the Day — Nov 10, 2025
https://www.awwwards.com/sites/messenger

💬 Представляю вам сайт дня — Messenger от студии Abeto.

🔗 Ссылка на сам сайт:
https://messenger.abeto.co/
2
💡 Недавно наткнулась на очень полезную статью про 10 недооценённых фич JavaScript

и вот что я там обнаружила 👇

1️⃣ Использование Set для удаления дубликатов и быстрых проверок.
2️⃣ Методы Object.entries() и Object.fromEntries() для преобразования объектов.
3️⃣ Операторы ?? (nullish coalescing) и ??= — более безопасные дефолты по сравнению с ||.
4️⃣ Интернационализация через Intl — форматирование чисел, валют, дат.
5️⃣ IntersectionObserver для ленивой загрузки изображений и бесконечной прокрутки.
6️⃣ Promise.allSettled() для обработки набора промисов, когда нужно дождаться всех, даже если некоторые завершились с ошибкой.
7️⃣ Метод Element.closest() для надёжного поиска в DOM вверх по дереву.
8️⃣ Классы URL и URLSearchParams — работа с URL без регулярных выражений.
9️⃣ Цикл for…of — итерации с поддержкой итераторов и возможностью прерывания.
🔟 Топ-уровневый await (top-level await) — позволяет работать с асинхронным кодом в модулях без обёрток.

📖 Подробнее читай в статье:
👉 https://jsdev.space/underrated-js-features/
🔥4
Жиза 😂😂😂
😁10