Category : javascript

javascript
CORS для собеседований и работы

Если вы видите эту ошибку — вы не одиноки:Access to fetch at 'https://api.site.com' from origin 'http://localhost:3000' has been blocked by CORS policy.Разберем, почему это происходит, и как это починить. Что такое CORS, и для чего он нужен.1.     Зачем нужен CORS? Безопасность! Пример атаки:Вы вошли на bank.com. Данные для авторизации сохранились в куках.Заходите на evil.com.Сайт evil.com тайно отправляет запрос Get /api/account на bank.com.Браузер автоматически отправляет кук…

  • воскресенье, 10 августа 2025 г. в 00:00:06
javascript
Профессиональная обработка ошибок в TypeScript

Привет, Хаброжители!Ошибки происходят в любом приложении. Говоря об ошибках, первым делом отметим, что все они делятся на два типа: ожидаемые ошибки, обусловленные бизнес-логикой, и неожиданные ошибки. Это различие очень важное, поскольку стратегии обработки ошибок первого и второго типа значительно отличаются.Ожидаемые ошибки, связанные с бизнес-логикой — это «нормальная» часть эксплуатации системы. О таких ошибках в системе должно быть заранее известно пользователям, а вы должны быть способны…

  • суббота, 9 августа 2025 г. в 00:00:11
javascript
Как гуманитарий создал сайт с нуля при помощи DeepSeek. Примеры рабочих промптов

*Статья отражает личный опыт, и не является рекламой. Иногда я читаю Хабр. Совсем недавно под очередной статьей о нейросетях я встретил комментарий, который выражал общий скепсис в отношении лингвистических моделей и чат ботов, в частности. Мол, они не могут сгенерировать ни единой строчки рабочего кода и годны, только чтобы переставлять слова в предложениях. В общем, технологию прямо называли шарлатанской.Я улыбнулся, вернулся на свой сайт, сделанный при помощи DeepSeek, и проверил, всё ли ра…

  • суббота, 9 августа 2025 г. в 00:00:10
javascript
Документирование фронтенд-приложений: обзор JSDoc и Storybook

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

  • суббота, 9 августа 2025 г. в 00:00:09
javascript
История разработки офлайн‑медиасервера: от идеи до open-source проекта

💡 Идея Всё началось с простой, но насущной проблемы: я хотел быстро передать файлы между своими устройствами — без интернета, без Bluetooth и без облаков. Существующие способы были либо медленными, либо ограниченными: Bluetooth — устаревший и слишком медленный для видео и больших папокОблачные сервисы — требуют авторизации, интернета, да ещё и часто сжимают файлыAirdrop — работает только между устройствами AppleФлешка — не всегда под рукой, да и не подходит для телефонов🧠 Тогда я задал себе …

  • суббота, 9 августа 2025 г. в 00:00:07
javascript
Перестаньте использовать CustomEvent

Привет, Хабр! Это моя первая статься, хоть и перевод, но все же, готов выслушать конструктивную критику)Я часто вижу, как веб-разработчики используют CustomEvent в коде своих компонентов. Настолько часто, что у многих складывается впечатление, будто CustomEvent — единственный способ создавать custom события (с маленькой "c"), а то и вообще единственный способ генерировать собственные события. Это понятно. Это прямо указано в названии: "Пользовательское" событие. Создается впеча…

  • суббота, 9 августа 2025 г. в 00:00:07
javascript
React Custom Hook: useMediaQuery

В этой серии статей мы отправимся в путешествие по миру пользовательских хуков React, открывая для себя их огромный потенциал для улучшения ваших проектов разработки. Сегодня мы сосредоточимся на хуке «useMediaQuery», одном из многих тщательно разработанных хуков, доступных в коллекции пользовательских хуков React. Github: https://github.com/sergeyleschev/react-custom-hooks import { useState, useEffect } from "react" import useEventListener from "../useEventListener/useEventListen…

  • пятница, 8 августа 2025 г. в 00:00:08
javascript
Dependency Injection в JavaScript: зачем он вам нужен

Вы когда-нибудь оказывались по уши в JavaScript‑приложении, следуя за цепочкой вызовов require() как по хлебным крошкам, чтобы понять, как всё связано? Один модуль импортирует другой, тот тянет глобальную переменную, и вот вы уже гоняетесь за ссылками по всему коду, просто чтобы протестировать один компонент. Это как готовить блюдо, где каждый ингредиент спрятан в отдельном шкафу — вы тратите половину времени на поиски, а не на готовку. Именно эту проблему и решает dependency injection (внедрен…

  • пятница, 8 августа 2025 г. в 00:00:07
javascript
Принцип единой ответственности SOLID в React

Всем привет! Меня зовут Дмитрий, и я руководитель фронтенд-разработки в компании Интелси.Сегодня хочу рассказать о принципе единственной ответственности (Single Responsibility Principle) — первом из пяти принципов SOLID, сформулированных Робертом Мартином в его книге "Agile Software Development: Principles, Patterns, and Practices". Суть этого принципа звучит так: «Класс должен иметь только одну причину для изменения» (A class should have only one reason to change).Если вы скажете, что …

  • пятница, 8 августа 2025 г. в 00:00:06