Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js
Все самое полезное для фронтенда в одном канале. Наши курсы: https://clc.to/WV2U4g По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4
Mostrar más📈 Análisis del canal de Telegram Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js
El canal Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js (@frontendproglib) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 20 919 suscriptores, ocupando la posición 6 150 en la categoría Tecnologías y Aplicaciones y el puesto 31 278 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 20 919 suscriptores.
Según los últimos datos del 18 septiembre, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -144, y en las últimas 24 horas de -6, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 9.12%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 4.56% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 1 908 visualizaciones. En el primer día suele acumular 954 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 28.
- Intereses temáticos: El contenido se centra en temas clave como фронтендера, навигация, css, javascript, api.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Все самое полезное для фронтенда в одном канале.
Наши курсы: https://clc.to/WV2U4g
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5b6884689c2151c820bb4”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 19 septiembre, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
Carga de datos en curso...
| Fecha | Crecimiento de Suscriptores | Menciones | Canales | |
| 19 septiembre | +2 | |||
| 18 septiembre | +1 | |||
| 17 septiembre | +1 | |||
| 16 septiembre | +3 | |||
| 15 septiembre | +4 | |||
| 14 septiembre | 0 | |||
| 13 septiembre | +2 | |||
| 12 septiembre | +1 | |||
| 11 septiembre | +2 | |||
| 10 septiembre | +2 | |||
| 09 septiembre | +3 | |||
| 08 septiembre | +6 | |||
| 07 septiembre | +1 | |||
| 06 septiembre | +1 | |||
| 05 septiembre | +2 | |||
| 04 septiembre | +2 | |||
| 03 septiembre | +4 | |||
| 02 septiembre | 0 | |||
| 01 septiembre | 0 |
| 2 | 🤔 Вопрос с собеседования
Что выведет этот код?
❤️ — 42 и 42
🔥 — 42 и undefined
👍 — undefined и undefined
👇 Правильный ответ (нажми, чтобы прочитать):
42
undefined
Обычная функция получает this в зависимости от способа вызова:
obj.regular();
Здесь this указывает на obj, поэтому возвращается 42.
Стрелочная функция не имеет собственного this. Она берёт его из внешнего контекста, где объект создавался. Поэтому this.value не относится к obj и обычно даёт undefined.
🔘 Если нужна стрелочная функция с контекстом объекта, можно использовать обычную функцию или явно привязать this:
const obj = {
value: 42,
arrow: function () {
return this.value;
},
};
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#career_merge | 953 |
| 3 | 📎 Шпаргалка по фронтенду
Этот документ объединяет ключевые темы, техники и механизмы, которые лежат в основе современной фронтенд-разработки.
➡️ В нём собраны объяснения, примеры и практические заметки, помогающие быстро освежить знания, разобраться в устройстве веб-технологий и подготовиться к выполнению задач или прохождению собеседований.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme | 1 161 |
| 4 | 💛 Шрифт, который превращает текст в графики
Datatype — необычный шрифт из Google Fonts, который умеет отображать данные прямо в тексте.
🟡 Например:
{b:10,25,7,95}
🟡 превращается в мини-диаграмму, а такие конструкции позволяют создавать спарклайны, бары и прогресс-бары:
{l:33,46,13,13,89}
{p:70}
Никаких Canvas, SVG или chart-библиотек — достаточно подключить шрифт и использовать специальный синтаксис.
Подойдёт для небольших визуализаций в документах, презентациях, таблицах и интерфейсах.
🔗 Ссылка
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#read_watch | 1 484 |
| 5 | ⭐️ Шпаргалка по Grid alignment
Если вы хоть раз путались между justify-* и align-* — вы не один. Где ось, где контент, где items — в голове это часто смешивается, особенно в реальных макетах.
🔜 Что внутри:
— разница между justify-content и justify-items
— как работает align-content vs align-items
— все ключевые значения: start, end, center, stretch, space-*
— наглядно по осям
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme #css | 1 418 |
| 6 | 😭 Как не потратить недельный лимит AI-кодинга за три дня?
Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода.
🔘 Поговорим о том:
— когда дорогая модель действительно нужна, а когда хватит дешёвой;
— сколько стоит один прогон и куда уходят токены;
— какие задачи можно отдавать субагентам;
— как настроить маршрутизацию моделей;
— что проверять в AI-коде перед merge.
✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после.
⬇️ 18 сентября, 19:00 МСК
⬇️ 1,5 часа · бесплатно
⬇️ Арсений Харланов и Олег Лайок
💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре.
🔗 Зарегистрироваться на вебинар | 1 448 |
| 7 | 💡 Собеседования всё чаще затрагивают тему оформления истории коммитов
От того, как вы пишете сообщения в Git, зависит работа CI, ревью и прозрачность релизов.
➡️ В карточках короткий разбор семантических коммитов:
— зачем коммитам задают строгую структуру;
— какой формат используют современные команды;
— примеры, которые показывают уровень разработчика.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#career_merge #middle #senior | 1 371 |
| 8 | А вы уже забрали свой подарок ко Дню программиста?
Мы в Tproger вместе с нашими друзьями собрали целую коробку подарков к вашему профессиональному празднику. Переходите по ссылке, трясите коробку и забирайте свой презент: https://tprg.ru/El3M | 1 300 |
| 9 | кто… 👨🦳👨🦳
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#pixel_pause | 1 500 |
| 10 | 🌸 Вселенная намекает: пора уже начать этот курс
С 14 сентября цены в Proglib Academy вырастут на 20% 👀
Так что если курс давно ждёт своего часа — лучше не откладывать ещё на месяц 😏
📍 Выбрать курс | 1 390 |
| 11 | 🔥 Debounce на одной строке
Когда пользователь вводит текст в поиск или изменяет размер окна — запросы летят десятками. Debounce откладывает выполнение функции до тех пор, пока события не прекратятся.
const debounce = (fn, ms) => {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => fn(...args), ms);
};
};
// Использование
const handleSearch = debounce((value) => {
console.log('Поиск:', value);
}, 300);
// В React
<input onChange={(e) => handleSearch(e.target.value)} />
✅ Когда использовать:
— Автокомплит и live-поиск
— Обработка resize/scroll событий
— Валидация форм при вводе
— Любые частые события
💡 Почему это работает:
При каждом новом вызове старый таймер сбрасывается и создаётся новый. Функция выполнится только когда пройдёт 300ms без новых событий.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme #js #react | 1 596 |
| 12 | 🌞 Готовим вебинар про AI в разработке и хотим сделать его максимально полезным
Что реально хочется разобрать? Где чаще всего застреваете? Что пробовали, но так и не получилось нормально внедрить?
🤩 Пишите вопросы в комментариях — самые залайканные разберём на вебинаре в первую очередь.
Задавайте всё, что давно хотелось спросить 📍
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера | 1 511 |
| 13 | 👩💻 Вышел React 19.3 — и в нём сразу несколько интересных изменений:
🟡 <ViewTransition> теперь stable. React умеет анимировать появление, удаление, перемещение и изменение элементов через браузерный View Transition API.
<ViewTransition>
<Component />
</ViewTransition>
Можно задавать разные анимации в зависимости от типа перехода через addTransitionType().
🟡 Fragment Refs позволяют работать сразу с группой DOM-узлов, не добавляя лишний wrapper:
<Fragment ref={fragmentRef}>
<Heading />
<Heading />
</Fragment>
Через FragmentInstance можно управлять событиями, фокусом, наблюдением за видимостью и скроллингом.
🟡 use(browser()) — способ явно исключить компонент из SSR, если ему нужны browser-only API вроде localStorage или локального часового пояса.
🟡 Trusted Types — React 19.3 теперь корректнее работает с браузерным Trusted Types API, что важно для защиты от DOM-based XSS.
🟡 В Server Components контекст теперь можно рендерить напрямую через <Context value={...}>, без отдельного Provider-компонента.
React 19.3 выглядит не столько как большой набор новых API, сколько как релиз, который сильно прокачивает работу React с браузерными возможностями, SSR и DOM.
🔗 Источник
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#release_digest | 1 773 |
| 14 | 🤩 Библиотеки, которые JavaScript уже умеет заменять
Некоторые привычные npm-пакеты сегодня можно не устанавливать — нужная функциональность уже есть в JS и Web API:
url-parse → new URL()
left-pad → ''.padStart()
lodash.last → arr.at(-1)
uuid → crypto.randomUUID()
deepclone → structuredClone()
numeral → Intl.NumberFormat()
moment → Intl.DateTimeFormat()
lodash.get → obj?.prop?.subprop
query-string → URLSearchParams()
Перед тем как добавлять зависимость, стоит проверить: возможно, браузер уже умеет всё необходимое.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme | 1 631 |
| 15 | 💡 Vue.js: не усложняйте v-bind
В Vue часто можно встретить такой код:
<UserCard :user="user" :config="config" />
🔴 На первый взгляд кажется, что :user="user" и :config="config" избыточны. Но здесь двоеточие — это сокращение для v-bind:
<UserCard v-bind:user="user" v-bind:config="config" />
🔴 При этом Vue позволяет сократить запись ещё сильнее, если имя пропса совпадает с именем переменной:
<UserCard :user :config />
То есть Vue сам понимает, что нужно передать значения переменных user и config в одноимённые props.
Мелочь, но в компонентах с большим количеством props заметно чище.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#hotfix | 1 757 |
| 16 | 🤔 Вопрос с собеседования
Что выведет этот код?
❤️ — 0 1 2
🔥 — 3 3 3
👍 — 0 0 0
👇 Правильный ответ (нажми, чтобы прочитать):
🔘 Будет:
3
3
3
var имеет function scope, поэтому все три callback замыкаются на одну и ту же переменную i. К моменту выполнения setTimeout цикл уже закончился, а i равен 3.
🔘 Если заменить var на let:
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 0);
}
получим 0 1 2, потому что let создаёт отдельную binding-переменную для каждой итерации.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#career_merge | 1 803 |
| 17 | 🤩 А что, если написать свой текстовый редактор?
«VS Code слишком тяжёлый. Сделаю свой редактор!»
— примерно так начался эксперимент одного разработчика.
🔘 Первый вариант — всё рисовать через <canvas>. Курсор, текст, подсветка строки, ввод с клавиатуры — работает. Но почти всё приходится реализовывать самостоятельно:
canvas.addEventListener("pointerdown", positionCursor);
document.addEventListener("keydown", moveCursor);
И быстро выясняется проблема: canvas ничего не знает о тексте. Нет нормального выделения, undo/redo, скроллинга и доступности.
🔘 Тогда появляется идея использовать contenteditable:
<div
contenteditable="plaintext-only"
autocapitalize="off"
autocorrect="off"
spellcheck="false"
translate="no">
</div>
Браузер сразу берёт на себя выделение текста, историю изменений и часть accessibility. Но на больших текстах производительность становится непредсказуемой.
🔘 Поэтому следующий кандидат — обычный <textarea>:
<textarea
autocapitalize="off"
autocorrect="off"
spellcheck="false">
</textarea>
И неожиданно он оказывается лучшим вариантом для длинных файлов. Правда, синтаксическую подсветку приходится строить отдельным слоем поверх текста.
📍 А потом начинается самое интересное: Unicode.
"🍋🟩".length;
// 5
[..."🍋🟩"].length;
// 3
const segmenter = new Intl.Segmenter("en", {
granularity: "grapheme"
});
[...segmenter.segment("🍋🟩")].length;
// 1
Один визуальный символ может состоять из нескольких UTF-16 code units и нескольких Unicode code points.
В итоге автор получил редактор, который выглядит примерно на 90% готовым, но имеет лишь 1% возможностей настоящего редактора.
И именно оставшиеся 10% — выделение, виртуализация, подсветка, табуляция, скроллинг, Unicode и accessibility — превращают «простой текстовый редактор» в огромный проект.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#under_hood | 1 681 |
| 18 | 🐱 SQL на котиках
JOIN — это способ соединить данные из разных таблиц по общему полю.
В видео разбирают:
— разницу между INNER и LEFT JOIN
— почему строки могут «пропадать»
— как формируется итоговый результат
Подойдёт новичкам, тем, кто путается в JOIN, и всем, кто хочет перестать писать запросы вслепую.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#read_watch #sql | 1 681 |
| 19 | 🤩 Для поворота необязательно считать градусы. В CSS есть единица turn: 1 turn = полный оборот = 360°.
Например, 0.5turn — это 180°, а 2turn — два полных оборота.
Особенно удобно, когда значение превышает 360°.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme | 1 745 |
| 20 | 💡 Container Queries в действии
Медиазапросы смотрят на размер viewport, а Container Queries — на размер самого контейнера.
📍 В примере кнопка меняет своё содержимое в зависимости от доступного пространства: если контейнер становится слишком узким, текст ADD TO CART скрывается, а иконка корзины остаётся.
@container (max-width: 200px) {
.button-text {
display: none;
}
}
Удобный подход для адаптивных компонентов, которые могут использоваться в разных местах интерфейса.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme | 1 898 |
