Обновить
203.62

JavaScript *

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

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

Можно ли войти в реку Технотекста дважды? А трижды? Анализ победителей Хабра за 7 лет

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров798

В этом году я второй раз подряд оказался в списке победителей «Технотекста». Когда вместе с летом прошла первая эйфория, во мне проснулся аналитик. Есть ли закономерность в победах? Что объединяет лучшие статьи на Хабре за последние семь лет? И главный вопрос - существует ли формула успеха, которая позволит покорить эту вершину и в третий раз?

Я вооружился своим парсером, собрал данные по всем победителям с 2018 по 2024 год и готов поделиться результатами. Это моя попытка реверс-инжиниринга победы, и, возможно, она поможет будущим чемпионам.

ИИ не за горами?

Suspense в Vue js: на что способен

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

Привет, Хабр!

Есть такой интересный компонент в Vue.js и называется он<Suspense>. Он устроен так, чтобы собирать зависимые async-компоненты и показывать единый индикатор загрузки вместо кучи спиннеров. Проще говоря, пока внутренняя часть (слот #default) ещё не готова из-за ожидания данных, показывается запасное содержимое из слота #fallback. Как только все асинхронные зависимости разрешатся – снимаем запасной экран и выводим основное содержимое. По сути, <Suspense> создаёт границу вокруг вложенных компонентов и контролирует их загрузку.

Читать далее

Как настроить SRI, если у нас микрофронты

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

И чтобы всё было безопасно.

Поговорим про CDN, SRI, кэш-отравления, подмены и rsbuild-плагины.

Читать далее

CSS, который все ненавидят: sin() и cos()

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

Команда JavaScript for Devs подготовила перевод статьи о том, почему тригонометрические функции стали «most hated» возможностью CSS и как их можно использовать с пользой. Мы разберёмся, что делают sin() и cos(), и посмотрим на практические примеры: от круговых раскладок до затухающих анимаций.

Читать далее

Борьба с техническими долгами: как не допустить разрастания костылей в коде

Время на прочтение6 мин
Количество просмотров2.4K

Привет, Хабр! (И тебе, отчаянный страдалец, зашедший сюда в перерыве между дебагом очередного if (a == b) { return true; } else { return false; }. Мы знаем, ты не виноват, так вышло).

Каждый разработчик хоть раз в жизни прилаживал к своему коду «костыль». Знакомое чувство, правда?

Читать далее

Знакомство с TypeScript: базовая типизация и ключевые возможности

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров5.3K

Андерс Хейлсберг — именно этого человека принято считать создателем TypeScript. Инженер-программист, который подарил миру такие языки как: Turbo Pascal, Delphi и C#.
Основным мотивом создания TypeScript было желание решить проблемы, связанные с разработкой крупных и сложных приложений на JavaScript.

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

Основной причиной использования TypeScript является возможность добавления статической типизации к JavaScript. Переменные с статической типизацией имеют тип, который не может быть изменен после их объявления. Это позволяет предотвратить множество потенциальных ошибок.

Читать далее

Настройка Express 5 для продакшна в 2025 году. Часть 1

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров2.9K

Эта статья поможет вам создать приложение Express 5 с поддержкой TypeScript.

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

Настоятельно рекомендую писать код вместе со мной. Мы будем использовать подход "Разработка через тестирование" (test-driven development, TDD) для создания REST API, который может стать основой вашего следующего приложения Express.

Читать далее

Бесшовный старт в Angular или как избавиться от пустоты при старте SPA приложения

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

Белый экран при загрузке SPA — типичная боль. Пользователь открывает приложение, ждёт пока загрузится приложение, а экран пуст. А если качество связи оставляет желать лучшего а размер чанков не может похвастаться оптимизацией(да это отдельная тема для обсуждений, но все же)? Я часто сталкиваюсь с этим в реальных проектах и вот наконец то появилось время и силы сделать так, чтобы у пользователя никогда не было пустоты на экране.

Читать далее

Отображение четырехмерного пространства на двухмерную плоскость

Время на прочтение5 мин
Количество просмотров5.4K

Так как я не сильно разбираюсь в математике и в геометрии, буду использовать подход графического 3D-программирования, потому что подход, применяющийся там, хорошо подходит и для проецирования четырёхмерных пространств. Поэтому для чтения этого материала рекомендую иметь хотя бы базовые знания о том, как работают матрицы преобразования и как с их помощью точка из трёхмерного пространства преобразуется в точку на экране. Код будем писать на JavaScript с использованием WebGL и библиотеки matrix-gl.

Читать далее

Операторы rest и spread в JavaScript

Время на прочтение4 мин
Количество просмотров4.6K

Если вы осваиваете JavaScript, то наверняка знаете об операторах rest и spread. Первый группирует несколько значений, второй - разгруппировывает. Но давайте посмотрим чуть глубже.

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

Читать далее

Как Shopify перевела свои крупнейшие приложения на новую архитектуру React Native

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

Команда JavaScript for Devs подготовила перевод кейса Shopify о миграции их крупнейших приложений на новую архитектуру React Native. Результат впечатляет: еженедельные релизы не остановились, стабильность сохранилась, а производительность выросла.

Читать далее

Angular и память: как не создавать утечки

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

Фронтенд-разработка в последние годы стала сложнее. Одностраничные приложения живут часами, пользователи открывают вкладки и оставляют их работать, данные приходят с серверов постоянно. В этом хаосе часто кажется, что главное — чтобы компонент рендерился, а Observable выдавал данные.

Но даже в самом аккуратном коде могут появляться утечки памяти. Утечка памяти возникает, когда объекты, которые больше не нужны, остаются в памяти, потому что на них ещё есть ссылки. Для браузера они живы, сборщик мусора их не трогает.

Для Angular‑разработчика это важно, потому что:

Читать далее

Как подружить Node с TypeScript

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.9K

В данной статье рассказывается о личном опыте переезда с JS на TS, как у меня получилось подружить Node.JS с TypeScript без сторонних инструментов.

Читать далее

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

Уволить куратора курса: автоматизация сопровождения студентов с помощью n8n

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

В этой статье я показываю, как заменить рутинную работу куратора курса простым сценарием в n8n. Всё делается через Google Sheets и Telegram-бота, без строчки кода. Текст написан специально для работников образования и гуманитариев — повторить сможет каждый.

Смотреть мануал

Расстаемся с any в TypeScript

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

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

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

Линтеры — это не только важнейший инструмент для поддержания качества кода на высоком уровне, но и важный помощник в борьбе с any. Пакет typescript-eslint содержит несколько таких правил, которые помогают предотвратить небезопасные практики еще до начала компиляции, связанные с типом any. Эти правила обнаруживают как прямые использования any, так и целые паттерны кода, которые незаметно его допускают. В этой публикации мы разберемся с тем, что конкретного делают эти правила, а также рассмотрим несколько полезных способов предотвратить проникновение any в наш код.

Читать далее

Без головы но с идеями: как Strapi оживляет Next.js

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

Привет, Хабр!

Меня зовут Дмитрий Гусаков, я менеджер проектов компании DD Planet. Рад поделиться с вами материалом, который, надеюсь, будет полезен всем, кто следит за эволюцией веб‑разработки и ищет современные подходы к созданию гибких и производительных проектов. Сегодня я расскажу про связку, которая уже стала стандартом для многих команд — Strapi + Next.js. Это не просто инструменты, а целая философия, где скорость, контроль и свобода творчества выходят на первый план.

Читать далее

React-монополист: как мы сами убиваем развитие фронтенда

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

Команда JavaScript for Devs подготовила перевод статьи о том, как доминирование React сдерживает развитие фронтенда. Автор утверждает: выбор React «по умолчанию» тормозит инновации, мешает развитию альтернативных фреймворков и превращает всю экосистему в монокультуру.

Читать далее

Steroids Form — как создать собственный движок форм для React

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров2.7K

Это третья статья из цикла про наш фреймворк Steroids: в ней мы рассказываем о том, как пришли к созданию собственного движка форм для React. Если вы ещё не читали предыдущие материалы, рекомендуем с ними ознакомиться:

Читать далее

Чистый код на TypeScript: практические советы

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

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

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

Читать далее

Не просто RAG: Строим MCP-сервер на Node.js, чтобы дать LLM «архитектурное зрение»

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

Привет, Хабр! Мы живем в удивительное время. Попросить LLM написать для нас код стало так же естественно, как гуглить ошибку. Но у этой магии есть предел. Попросите модель написать quickSort, и она справится блестяще. А теперь попросите ее: «Добавь метрики Prometheus в метод processOrder в нашем проекте».

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

Стандартный RAG (Retrieval-Augmented Generation) — это как дать стажеру доступ к одному файлу. Полезно, но картину целиком он все равно не увидит. А что, если мы могли бы дать ему не просто файл, а полный доступ к знаниям тимлида-архитектора? Что, если бы LLM могла видеть не просто строки кода, а всю паутину связей, зависимостей и паттернов вашего проекта?

Сегодня я расскажу о проекте code-graph-rag-mcp — это не просто очередной RAG-пайплайн. Это полноценный MCP-сервер, который строит граф знаний вашего кода и дает LLM «архитектурное зрение», превращая ее из простого кодера в настоящего цифрового ассистента.

Читать далее

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