Обновить
142.1

JavaScript *

Прототипно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

По-компонентный vs централизованный i18n

Время на прочтение6 мин
Охват и читатели2.9K

Подход по компонентам — не новое понятие. Например, в экосистеме Vue vue-i18n поддерживает [i18n SFC (Single File Component)](https://vue-i18n.intlify.dev/guide/advanced/sfc.html). Nuxt также предлагает [переводы на уровне компонента](https://i18n.nuxtjs.org/docs/guide/per-component-translations), а Angular использует похожий паттерн через свои [Feature Modules](https://v17.angular.io/guide/feature-modules).

Даже в Flutter-приложении часто встречается следующий паттерн:

Читать далее

Новости

Анимированные визуализации потоков данных: движение товаров, денег и пользователей

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3.5K

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

В таких условиях традиционные инструменты аналитики — таблицы, статические графики и отчёты, хорошо отвечают на вопросы сколько? и ему подобные, но плохо показывают как именно это происходит. Чтобы понять динамику процессов, выявить узкие места и увидеть реальные взаимосвязи, всё чаще используют анимированные визуализации потоков данных.

Именно о них предлагаю поговорить сегодня.

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

Читать далее

Убийцы иммутабельной производительности — Zustand/Redux в связке с React

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели3.1K

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

Читать далее

Почему JS-разработчики выбирают Rust, Go и Zig

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели11K

Команда JavaScript for Devs подготовила перевод статьи о том, как инструменты JavaScript переживают сдвиг в сторону системных языков. Rust, Go и Zig уже не эксперимент, а основа нового поколения бандлеров, линтеров и компиляторов. Выясняем, почему экосистема сознательно уходит от JavaScript в собственных инструментах, какие выгоды это даёт и какие компромиссы приносит.

Читать далее

Инвестиционные боты (почти) с нуля. Часть 1: теория и первые шаги реализации

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.2K

Всем привет.

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

Читать далее

Подходы к state management в React

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.6K

У React-разработчика две беды:

1. Целевые данные изменились, а ререндера нет.

2. Целевые данные не изменились, а ререндер есть.

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

Читать далее

Практика по исправлению рекурсивных импортов во фронтенд приложении

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели7.7K

Ранее публиковал теоретическую часть по рекурсивным импортам, желательно ознакомиться перед тем как продолжить, чтобы было общее преставление.

Рекурсивные импорты рассмотрим на примере React/Redux приложении.

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

Читать далее

VladX: как я создал язык программирования с русским синтаксисом в 13 лет

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели12K

Привет, Хабр! Меня зовут Владислав, мне 13 лет, и я создал язык программирования VladX. В этой статье расскажу, как устроен его интерпретатор, почему я выбрал русский синтаксис и как можно попробовать язык в действии.

Читать далее

JavaScript: заметка об Anchor Positioning API

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели9.7K

Привет, друзья!

В этой небольшой статье мы вместе с вами немного пощупаем новый Web API - Anchor Positioning.

Anchor Positioning API предоставляет новые возможности для связывания элементов между собой. Одни элементы являются якорями (якорными, anchor elements), другие - позиционируемыми относительно якорей (закрепленными, anchor-positioned elements). Размер и положение позиционируемого элемента может определяться размером и положением якорного элемента.

Кроме того, с помощью CSS можно:

определять альтернативные позиции закрепленного элемента, которые будут применяться браузером, например, при выходе такого элемента за пределы экрана

определять условия видимости закрепленного элемента, например, скрывать такой элемент при выходе за пределы экрана

На сегодняшний день этот API поддерживается всеми основными браузерами (в Safari пока только в качестве экспериментальной возможности).

Читать далее

Корпоративный RAG как MCP-сервис: подключаем кодовую базу к IDE

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.5K

В компаниях с несколькими продуктами знания о коде и архитектуре почти неизбежно расползаются. Часть живёт в репозиториях, часть — в статьях с архитектурными решениями, часть — в корпоративной базе знаний (в нашем случае — Confluence). На небольшом масштабе это выглядит как порядок. Но по мере роста начинают проявляться системные эффекты.

Появляется дублирование функционала с разными подходами. Сложнее становится погружаться в новый продукт при кросс-командных переходах. Поиск по каждому репозиторию и каждому пространству документации по отдельности — медленный и утомительный. В итоге вопросы уходят к «знающим людям», которые постепенно превращаются в узкое горлышко.

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

В этой статье я расскажу, как мы построили локальный RAG-сервис, оформили его как MCP-сервер и подключили к IDE. Подход будет полезен командам с большим количеством репозиториев, внутренней документацией и требованиями к безопасности.

Читать далее

JavaScript: практическое руководство по Blob, File API и оптимизации памяти

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели8.8K

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

В этом руководстве мы разберем шесть практических приемов работы с Blob, которые помогают обрабатывать файлы эффективно и безопасно:

правильное создание Blob

разбивка больших файлов на части (chunks)

сжатие и конвертация изображений

реализация надежных превью файлов

экспорт данных в виде загружаемых файлов

управление памятью во избежание утечек Blob URL

Цель руководства — сделать работу с файлами быстрой, стабильной и готовой к продакшну.

Читать далее

Насколько быстро браузеры могут обрабатывать данные в Base64?

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.4K

Base64 — это схема кодирования двоичных значений в текст, преобразующая произвольные двоичные данные (например, изображения, файлы или любые байтовые последовательности) в безопасную печатную ASCII-строку, состоящую из 64-символьного алфавита (A–Z, a–z, 0–9, +, /). Браузеры применяют эту схему в JavaScript для встраивания двоичных данных непосредственно в код/HTML или для передачи двоичных данных в виде текста.

Недавно в браузерах появились удобные и безопасные функции для обработки Base64: Uint8Array.toBase64() и Uint8Array.fromBase64(). Хоть у них и есть множество параметров, смысл их сводится к кодированию и декодированию.

При кодировании они берут 24 бита из входных данных и разделяют их на четыре сегмента по 6 бит, и каждое 6-битное значение (в интервале от 0 до 63) соотносится с конкретным символом из алфавита Base64: первые 26 символов — это буквы A-Z в верхнем регистре, следующие 26 — a-z в нижнем, затем идут цифры 0-9 и, наконец, символы «+» и «/» в качестве 62-го и 63-го символов. Если длина входных данных не кратна трём байтам, то в качестве заполнителя используется знак «=».

Насколько же быстро могут работать эти функции?

Читать далее

Реактивность без фреймворков (просто эксперимент на чистом JS + Web APIs)

Время на прочтение8 мин
Охват и читатели12K

Опишу пример, демонстрирующий, насколько важна декларативность в вопросах управления поведением «аппки» (за этим стоят вопросы сохранения высокого уровня абстракции и, как следствие, масштабируемости приложения). Задача - сделать управление мутациями DOM более декларативным и, как заявлено в заголовке, использовать реактивность на примере управления состоянием.

Читать далее

Ближайшие события

Capacitor: от веба к мобильным приложениям. Часть 0. Зачем нужен Capacitor

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.2K

С Новым годом, Хабр. Меня зовут Илья, я работаю Frontend разработчиком в компании Бастион. Январские выходные в самом разгаре, но уже многие, включая меня, наобещав себе свернуть горы в этом году, находятся в поиске полезной для мозга информации. Тогда присаживайтесь поудобнее, ибо сейчас мы будем разговаривать о такой замечательной технологии для разработки гибридных мобильных приложений, как Capacitor.

Читать далее

Обработчики событий в JavaScript

Время на прочтение7 мин
Охват и читатели11K

Привет, я Александр Дудукало, фронтенд-разработчик. Сегодня я расскажу об обработчиках событий. Если коротко, вы узнаете о самом удобном способе управлять откликом на действия пользователя или браузера. 

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

Читать далее

Какие навыки прокачать IT-специалисту на новогодних каникулах: подборка курсов от Selectel

Время на прочтение9 мин
Охват и читатели8.4K

Привет, Хабр! Новый год — хороший повод научиться чему-то новому. Длинные каникулы позволяют выйти из рутины, выспаться и наконец разобраться с тем, на что в обычные дни не хватает времени. В подборке собрали семь полезных курсов, которые помогут освоить нужные навыки. И главное — все бесплатно. 

Читать далее

Реактивность без React или как обойтись без id в html элементах

Время на прочтение5 мин
Охват и читатели9.1K

Странный заголовок, не правда ли?

А зачем вообще обходиться без id? Даже не знаю, но это вполне возможно, и приложение будет живым и вполне себе «реактивным». А всю «магию» при этом творит функция, которую я назвал tokenize.

Конечно же я, ни в коем случае, не настаиваю на отказе от id. "Элементарные" id никому не мешают и tokenize`у тоже. Но если обходиться без id, то как же получать ссылки на DOM элементы, для обращения к ним? Вот для этого и нужна функция tokenize, которая собирает референсы в удобную структуру с ветками, подветками и листьями (ссылками на DOM элементы). А вот как она это делает, мы с Вами сейчас и разберём.

Поехали

Уязвимость React2Shell: что произошло и какие уроки можно извлечь

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели12K

3 декабря 2025 года критическая уязвимость в серверных компонентах React (React Server Components, RSC) потрясла сообщество веб-разработчиков. Была обнаружена уязвимость React2Shell/React4Shell (CVE-2025-55182) с оценкой CVSS 10.0, что является максимальным баллом для уязвимостей. Ошибка позволяет удаленно выполнять код (Remote Code Execution, RCE) на любом сервере, работающем с RSC. В течение нескольких часов после обнаружения уязвимости китайские государственные группы и криптомайнинговые компании начали взламывать уязвимые серверы.

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

Мы также обсудим, как защитить себя и как эта уязвимость подчеркивает важнейшие принципы безопасности.

Читать далее

Мультиплексирование потоков данных Node.js Streams: пошагово программируем и разбираем задачу

Уровень сложностиПростой
Время на прочтение27 мин
Охват и читатели9.9K

Мне очень нравится идея потоков данных в Node.js - data streams. Они используются всюду: чтение файлов, сетевые запросы, архивирование файлов.

Не путать с потоками выполнения процессов - threads! Это совсем другое!

Есть много хороших статей по философии, теории и применении потоков, Хабр не стал исключением:
Ментальная модель потоков в Node.js

Много раз я сталкивался с необходимостью реализовывать свои потоки данных. И каждый раз я путался с кучей методов: write, push, _write, _read, с кучей событий - end, close, finish. В чем отличие write от _write?! Буквально почти все время, когда я имею дело с потоками у меня открыты доки Node.js - https://nodejs.org/api/stream.html.

Недавно, в моей статье про кастомный транспорт для ShadowSocks мне потребовался функционал передачи разных потоков данных по одному потоку (каналу)данных. Это задача мультиплексирования данных.

Я думаю, что эта задача является хорошей практикой для новичков в Node.js и программистов, любящих кодить всякие алгоритмы.
Во время программирования я встретился с несколькими "программистскими задачами" aka "подводными камнями", которые мне пришлось решить, и это было увлекательно, что и вылилось в данную статью.

Читать далее

Чистый код на React: практики, которые делают проект поддерживаемым

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели12K

В работе над React-проектами код почти всегда живёт дольше, чем кажется на старте: требования меняются, команда растёт, появляются новые сценарии и интеграции. В таких условиях выигрывает не тот, кто «быстрее собрал», а тот, кто оставил после себя понятную структуру — с предсказуемой логикой, прозрачными зависимостями и минимальным количеством скрытых допущений. 

В данной статье мы расскажем о принципах «чистого кода» в React, которые используем в повседневной разработке, и покажем их на коротких примерах.

Читать далее
1
23 ...

Вклад авторов