Обновить
38.7

TypeScript *

Cтрого типизированная надстройка для JavaScript

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

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

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

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

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

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

Читать далее

CCXT + CoinGecko: гибкий сбор рыночных данных для собственного криптотрекера

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

Небольшой практический разбор библиотеки CCXT - как получать рыночные данные, баланс и историю ордеров с криптобиржи, обрабатывать ответы API и использовать их в локальном приложении. Примеры на Bitget, интеграция с CoinGecko, код на Nest.js с SQLite и Prisma.

Читать далее

Лучшее время для соло предпринимательства: интеграция платежной системы

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

Вторая часть серии статей "Лучшее время для соло предпринимательства". Описание процесса интеграции платежной системы Paddle с точки зрения юзер-сценариев.

Читать далее

Production-ready сайт о ГОЗ: от Заказчика к React, Vite и Tailwind

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

Десять лет в бюджетных организациях из них три года работы с ГОЗ показали: сложность не в законах, а в инструментах. Собрал консалтинговую платформу с нуля на React 18 + TypeScript + Vite. Полный CI/CD через GitHub Actions, мониторинг на Sentry, Lighthouse > 90. Делюсь стеком, архитектурой и выводами — как в одиночку запустить production-ready продукт в сложной B2G-нише.

Читать далее

От вседозволенности к порядку: кастомизация Jodit для строгой типографики

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

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

В этой статье речь пойдет об интересной задаче на одном из моих проектов. Он был разработан на React для документооборота сотрудниками. Так уж вышло, что со времен старта проекта основным текстовым WYSIWYG-редактором был небезызвестный Jodit. За долгие годы было написано много кастомных плагинов, например, для работы с упоминаниями сотрудников, и нас устраивала его надежность, хоть его внешний вид был далек от идеала.

И вот однажды заказчик пришел с запросом:

Читать далее

Собрать звуковую спектрограмму на React и MobX

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

Привет!

Я Таня, фронтенд-разработчик в KTS и студент магистратуры МГТУ им. Баумана. На одном из недавних проектов я работала над интересной фичей — визуальным представлением аудиоданных, a.k.a. звуковой спектрограммой. Казалось бы, штука нехитрая: кто не видел график, прыгающий в такт с музыкой на разных частотах? Он есть в любом секвенсоре, на любом диджейском пульте и даже в динамическом островке последних айфонов.

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

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

Читать далее

setTimeout убил наши анимации: история спасения модальных окон

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

Всем привет!

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

Вы запускаете стабильно работающий проект, применяете useEffect с необходимой фичей и пустой зависимостью, а затем - начинаете тестировать.

И вот незадача: модальное окно открывается на миллисекунду и моментально закрывается.

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

Я потратил довольно длительное время на поиски этой ошибки. Но затем, удалив setTimeout, который мы использовали для анимирования модального окна, заметил, что все стало работать корректно.

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

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

Совершенно случайно наткнувшись на статью @GragertVD, которая, словом, не подходила под мои критерии поиска - я открыл для себя совершенно новый обработчик события onAnimationEnd и наконец решил указанную выше проблему.

Именно поэтому мне захотелось рассказать о том, как я это сделал.

В этой статье я расскажу:

Читать далее

Зоны временной недоступности, или почему исходный код TypeScript усеян var-ами

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

Если вы работаете с JavaScript, то знаете, что есть несколько способов объявить переменную (let, const). Эти объявления существуют уже давно и имеют адекватные правила блочной области видимости. Возможно, вы также помните времена, когда их не было. У нас был только var. А var - отвратителен. Каждая переменная изменяема, нельзя навязать неизменяемость, и что ещё хуже - var выходит иногда за пределы блока. Поэтому для меня было большим сюрпризом узнать, что код TypeScript (написанный на TypeScript - пока что) усеян var-ами так, будто на дворе 2003-й. В чем же причина?

Читать далее

Как мы делали свою ноду для n8n

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

Всем привет!

Самостоятельное создание ноды HTTP Request может быть сложной задачей. Нужно самостоятельно искать и указывать эндпоинт, прописывать body для запроса и проставлять нестандартный заголовок авторизации, что совершенно неудобно и сложно для многих пользователей.

По вышеописанной причине мы решили разобраться в этой проблеме, и опубликовать собственную комьюнити-ноду n8n-nodes-amvera-inference, которая сможет помочь пользователям, без сложностей, работать с нашим Inference API нужной модели.

В статье мы расскажем и про саму разработку комьюнити-ноды, и про её установку с настройкой.

Читать далее

Моя первая попытка в инди-хакинг

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

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

Самый известный пример — Питер Левелс, который сделал миллионы на маленьких продуктах. У него подход творческий и немного размытый: запуск за месяц, продукт должен быть простым и полезным.

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

🚀 План такой:

Читать далее

Кеширование Lottie-анимаций с помощью Service Worker

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

Всем привет!
Меня зовут Прокошкин Леонид, я Frontend-разработчик в компании DDPlanet.

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

В проекте было около 30 Lottie-анимаций, некоторые весили ~100 KB, и нам нужно было оптимизировать их загрузку.

Как снизить трафик и нагрузку? Правильно - кеширование. Мы выбрали кеширование на стороне Service Worker.

Читать далее

Замыканий в JavaScript не существует

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

По крайней мере так сказал блогер Demimurych у меня в комментариях: 

Дальше была беседа в комментариях, из который я вынес два хороших замечания:

Тему замыканий в языках программирования стоит рассказывать с проблемы функционального аргумента. 

Реализация этой проблемы наиболее и единственно полно описана в ECMAScript спецификации. 

Я потратил время и покажу, что нашёл!

Читать далее

Грустная история о том как я Telegram Miniapp интегрировал

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

История о создании Telegram Miniapp с нуля: боль, костыли и необычные решения.

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

Читать далее

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

Shadcn для Vue: норм или стрём?

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

Опыт использования shadcn-vue в продакшн проекте: что работает хорошо, а с чем придется помучиться. Честный обзор популярной UI библиотеки от практикующего разработчика.

Стек: Vue/Nuxt 3, Tailwindcss 3, Typescript, Telegram WebApp.

Читать далее

Angular signals 101

Уровень сложностиСложный
Время на прочтение40 мин
Охват и читатели8.7K

Angular Signals 101 Это не поверхностный обзор, а полное погружение в мир сигналов. Мы разберем всё: от публичного API до внутреннего устройства планировщика в Zoneless.

Начать полное погружение

О книге «Фулстек JavaScript: Секреты, которые должен знать каждый миддл»

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

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

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

Автор приводит приемы senior-разработчиков, чтобы «работать скорее на уровне системы, чем отдельных строк кода» и находить оптимальные/компромиссные решения.

Читать далее

Как гонять Claude Code (и не только) с качественными моделями задешево?

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

Вижу много высказываний на тему, что Claude Code хорош, но очень дорог. И это правда. С платой за API деньги улетают с пугающей скоростью. А с подпиской быстро упираешься в ограничения. При этом есть модели вполне сравнимого качества, но в разы (если не на порядок) дешевле.

Как подключить?

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее