Обновить
215.28

JavaScript *

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

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

Методы массивов. Часть 1

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

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

Привет, Хабр! Меня зовут Александр Дудукало, я автор базового курса по JavaScript. Сегодня мы поговорим о методах массивов. Если коротко, вы узнаете, как легко и элегантно работать со списками данных, не используя громоздкие циклы. Детали внутри.

Читать далее

Новости

Анимированный UI: как улучшить взаимодействие с пользователем

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

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

В продакшене анимация всегда балансирует между выразительностью и производительностью. Чем сложнее сцена, тем выше нагрузка на процессор, особенно на мобильных устройствах. Поэтому важно оптимизировать: использовать GPU-дружественные свойства (transform, opacity), избегать тяжёлых reflow, а для сложных эффектов — применять библиотеку, которая работает с отложенным рендерингом, например Framer Motion или GSAP. Это не только повышает плавность, но и снижает энергопотребление, что прямо влияет на опыт пользователя.

Когда команда проектирует систему анимаций, важно фиксировать принципы в дизайн-системе. Это помогает избежать хаоса и гарантирует согласованность между продуктами. Хорошая практика — описывать длительность, кривые ускорения и паттерны движения как переменные, чтобы и дизайнеры, и разработчики говорили на одном языке. Например, motion-tokens, где заданы типовые параметры переходов: fast-out-slow-in, linear-out-slow-in и т.д.

На зрелом уровне анимация становится не надстройкой, а частью архитектуры интерфейса. Она помогает продукту чувствоваться цельным, обеспечивает предсказуемость и ритм, а главное — создаёт ощущение «живого» цифрового опыта. Привет, я Максим, frontend-разработчик в компании SimbirSoft, в этой статье расскажу, как сделать полезный для пользователя UI.

Читать далее

Специальный таймер для серии докладов

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

Часто в работе возникает потребность жестко выдерживать тайминг при заслушивании серии докладов: при защите проектов, программ развития, дипломных работ и прочее. Если в повестке дня какого-либо мероприятия 10+ докладчиков, то без строгого соблюдения регламента невозможно не выбиться из графика. Как правило, это приводит к тому, что запланированное время мероприятия увеличивается кратно. А докладчикам, выступающим последними, фактически не достаётся должного внимания.

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

Читать далее

Не спешите выкидывать Webpack: разбор альтернатив и реальных сценариев миграции

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

Привет, Хабр! На связи Никита Ли, я Frontend-разработчик в Рунити. Вокруг сборщиков последние годы кипят страсти: большинство боготворит Vite, кто-то экспериментирует с esbuild, а энтузиасты активно продвигают инструменты на базе Rust — прежде всего Rspack и SWC. На фоне этого Webpack нередко называют пережитком, который якобы тормозит развитие команд.

Но жизнь реальных продуктов куда сложнее, чем пишут в соцсетях. Иногда Webpack остается единственным зрелым вариантом. А иногда — мешает и действительно требует замены. В этой статье я попробую разобраться, откуда вообще взялись сборщики и что именно происходит внутри Webpack, насколько современные альтернативы действительно готовы его заменить, почему в Рунити мы осознанно продолжаем использовать Webpack в основных продуктах и в каких случаях смена сборщика действительно имеет смысл, а в каких может обернуться лишней тратой времени и сил без ощутимой выгоды.

Читать далее

Книга: «Head First. Изучаем программирование на JavaScript. 2-е изд.»

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

Привет, Хаброжители!

Новое, полностью переработанное издание легендарной книги проведет вас по всему пути изучения JavaScript, начиная с фундаментальных понятий и заканчивая самыми актуальными современными возможностями. Вы погрузитесь в тонкости типов JavaScript и его функций, научитесь разбираться в классах, объектах и замыканиях, приобретете практический опыт работы с DOM (Document Object Model) в браузере и откроете для себя неожиданные возможности JavaScript. Вас ждет не просто чтение — вы будете играть, решать головоломки, размышлять над загадками и взаимодействовать с JS так, как никогда не пробовали ранее. А еще вы будете писать реальный код (и много!) и сразу приступите к построению собственных приложений.

Вы готовы сделать шаг вперед в веб-программировании и перейти от верстки в HTML и CSS к созданию полноценных динамических страниц? Тогда пришло время познакомиться с самым «горячим» языком програм- мирования — JavaScript! Особенностью этого издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O'Reilly в ряду множества скучных книг, посвященных программированию.

Читать далее

Что нового в WebStorm 2025.3

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

Команда JavaScript for Devs подготовила перевод статьи о нововведениях WebStorm 2025.3. В обновлении — новая тема интерфейса Islands, серьёзные улучшения для монорепозиториев, поддержка удалённой отладки и интеграция умных ИИ-агентов прямо в IDE.

Читать далее

React vs Vue: Что выбрать в 2026?

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

Привет, Хабр! Меня зовут Карлен, я Lead Fullstack разработчик в ITFB Group. В этой статье хочу поделиться своим мнением о том, как выбрать библиотеку или фреймворк для вашего следующего проекта. 

Этот выбор напоминает мне подбор гардероба для важного мероприятия: ошибешься — и проект ждут дополнительные проблемы, угадаешь — и ты на вершине успеха! Чтобы не попасть в просак с выбором, давайте детально разберем ключевые различия между React и Vue и определим, на что стоит обратить внимание.

Читать далее

Создаем UI-Kit на React: пошаговое руководство по настройке

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

Привет, Хабр. Я Сергей Осипов, архитектор дизайн‑системы в T2. Вместе с моим коллегой, Данилом — экспертом группы разработки — мы подготовили материал, в котором подробно разберем процесс настройки UI‑Kit на React — от установки зависимостей до сборки готового пакета. Ниже в статье вы прочитаете о полном цикле разработки: сборке, тестировании, линтинге и документации.

Интересно? Переходите под кат!

Прогресс разработки TypeScript 7: что уже работает и чего ждать

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

Команда JavaScript for Devs подготовила перевод большого апдейта от команды TypeScript. Разработчики рассказали, как идёт переписывание компилятора на нативный код, что уже работает в превью TypeScript 7, какие ограничения остаются и почему версия 6.0 станет последним релизом на JavaScript. Новый TypeScript обещает серьёзный рывок в скорости и стабильности — самое время понять, что нас ждёт.

Читать далее

Создаем шахматы с «туманом войны» на JavaScript: от идеи до работающего прототипа

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

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

И тут я вспомнил о своей идее сделать сайт для консольной реализации шахмат на Python. Это была сухая игра, написанная на Pygame для двоих программистов, но не для людей, так как её нельзя было запустить на других устройствах. И у меня родилась идея: а что, если превратить этот скелет игры в веб-приложение на JS?

Из минусов было только то, что моя игра написана на языке Python, а для работы мне нужен JavaScript, и я решил, что это не проблема, и начал переписывать готовую логику на новый язык, параллельно добавляя новые функции.

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

Читать далее

Эволюция Telegram-бота: От скрипта на коленке до асинхронной системы управления кластером (v1.13)

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

В первой части мы создавали простого бота для управления одним сервером. Во второй — учили его измерять скорость и обновляться. Казалось бы, задача решена? Как бы не так.

В этой статье я расскажу, как проект VPS Manager перерос статус «скрипта для себя» и превратился в полноценную асинхронную платформу с Web-админкой, поддержкой Docker-кластера и базой данных SQLite. Встречайте версию 1.13.0.

Читать далее

Создание браузерного расширения с native messaging на C#

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

Привет, Хабр. Меня зовут Алексей, я бэкенд-разработчик C#. Хочу рассказать о том как я узнал что такое native messaging в браузерах и какие задачи можно с его помощью решать. В одном проекте я разрабатывал десктопную утилиту, которая должна была уметь обмениваться сообщениями с веб-страницами в браузере, чтобы в том числе управлять их содержимым и как угодно взаимодействовать с ними. Расскажу о том, как удалось решить такую задачу и покажу результат работы небольшого приложения с таким взаимодействием.

Читать далее

Как работают современные браузеры. Часть 1

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

Веб-разработчики нередко воспринимают браузер как «черный ящик», который каким-то чудом превращает HTML, CSS и JS в интерактивные веб-приложения. На самом деле современный браузер — будь то Chrome (на базе Chromium), Firefox (Gecko) или Safari (WebKit) — представляет собой чрезвычайно сложное программное решение. Он управляет сетевыми запросами, разбирает (парсит) и выполняет код, рендерит графику с ускорением на графическом процессоре (GPU) и изолирует контент в отдельных процессах для обеспечения безопасности.

В этой серии статей мы подробно рассмотрим, как устроены современные браузеры, сделав акцент на архитектуре и внутреннем устройстве Chromium, но также отметим ключевые отличия в других браузерах. Мы рассмотрим весь цикл: от сетевого стека и конвейера парсинга до рендеринга с помощью Blink, выполнения JS с помощью движка V8, загрузки модулей, многопроцессной архитектуры, песочниц безопасности и инструментов разработчика. Главная цель — дать понятное и доступное объяснение того, что происходит в браузере "под капотом".

Читать далее

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

Реактивная Архитектура: Пишем надежный Optimistic UI на чистом RxJS (Pattern Compensating Transaction)

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

Пользователи ненавидят спиннеры. Они хотят видеть лайк сразу после клика. Optimistic UI решает эту проблему, но создает новую: что делать, если сервер вернет ошибку?

В императивном коде (Promise/async-await) откат состояния превращается в ад из try/catch и ручных мутаций переменных, порождая Race Conditions.

В этой статье я покажу, как реализовать надежный паттерн Compensating Transaction на чистом RxJS. Мы построим архитектуру, где состояние это поток, который невозможно "сломать" частыми кликами или сетевыми сбоями. Никаких if/else, только чистые потоки.

Построить реактивный UI

Анализируем UDP логи Squid-proxy

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

Ремейк приложения SqStat, читаем access логи по UDP. Пока анализируем не более часа, а нужно ли больше? В наше время есть GrayLog, ELK c AI-агентами. Нужен ли нам звёздный крейсер? Статья про Squid в Docker, SSL bump, анализ access-логов, Bun, Elysia, Redis, Vue. Всего по чуть-чуть.

Хотите узнать больше?

Сыч: телеграм-бот, который помнит обиды и обходит лимиты Google Gemini

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

Написал бота на Google Gemini, который ведет себя как живой участник чата: у него есть характер, он помнит обиды (система репутации) и может послать, если вы это заслужили.

А еще он бесплатно расшифровывает голосовые (лучше Telegram Premium), понимает контекст переписки и обходит лимиты API через ротацию ключей. Под капотом — Node.js, никаких баз данных (только JSON) и чистый KISS-принцип.

Посмотреть код

Реверс-инжиниринг приложений на Android: знакомство с Frida

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

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

Звучит сложно. Долгое время и мне так казалось, особенно при создании модов для приложений. Байт-код smali неплох, но писать на нем сложную логику вручную — неблагодарное занятие. Но недавно мне попался на глаза решение для динамического реверс-инжиниринга — Frida.

Frida — это инструмент, который позволяет вживлять небольшой кусок JavaScript-кода прямо в запущенное приложение и менять его поведение. Под катом я расскажу, как работать с Frida, исследовать приложения на телефоне без root-доступа и создавать свои моды.

Читать далее

Отображение Excel в React: экспериментальный прототип с merge и изначальной структурой

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

Снова на связи я –Дмитрий, React-разработчик, и в этот раз мы поговорим о создании фундамента для дальнейшей разработки.

Идея — сделать компонент в реакте, который сможет отобразить файл Excel в обычной HTML-таблице со всеми слияниями ячеек, форматированием, несколькими строками заголовка и полностью сохранённой структурой.

Казалось бы, задача простая: берёшь любую библиотеку, читаешь файл и показываешь. На практике всё оказалось гораздо интереснее.

Читать далее

Первый опыт интеграции веб-приложения с 1С — о чём я бы хотел знать перед стартом

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

Единственное что я знал про 1С до начала работы с ним — это очень сложный механизм, внешне напоминающий свой собственный браузер со своим собственным фреймворком, что код 1С модулей пишется на своём языке стандарта ecmascript, на кириллице — по‑русски, который после сурового frontend выглядит забавно.
И вот что ещё я теперь знаю.

Читать далее

Как начать работать с Nuxt UI — библиотекой компонентов для Vue и Nuxt

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

Недавно UI-библиотека Nuxt UI получила серьёзное обновление — версию Nuxt UI 4. Это принесло два больших изменения. Во-первых, теперь можно использовать Nuxt UI не только с Nuxt, но и с Vue напрямую. Во-вторых, все ранее платные возможности (Pro-компоненты, стартовые шаблоны и Figma UI Kit) теперь полностью бесплатны.

Всё это хороший повод разобраться, как же устроена Nuxt UI, в чём её преимущества и как начать с ней работать.

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

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