Category : javascript

javascript
createAsyncThunk.withTypes()

В этой статье разберем еще одну малоизвестную, но не менее полезную возможность @reduxjs/toolkitПредыдущая статья по redux и @reduxjs/toolkitДля начала разберем варианты и возможности типизации createAsyncThunkСанки можно типизировать как при помощи дженериков,createAsyncThunk<Returned, ThunkArg, ThunkApiConfig>()так и при помощи непосредственно аргументовcreateAsyncThunk( 'asyncThunkTypePrefix', (arg: ThunkArg, apiConfig: ThunkApiConfig) => {} )где:- Returned – тип возвра…

  • воскресенье, 13 августа 2023 г. в 00:00:34
javascript
DI в JS: идентификаторы зависимостей

В предыдущих публикациях (раз, два) я рассматривал возможности использования внедрения зависимостей в чистом JavaScript (без TypeScript, аннотаций и транспиляции). В данной публикации я продолжаю погружаться в вопросы использования DI в JS и более пристально рассматриваю роль идентификатора зависимости в создании объектов контейнером. Внимание! В данной публикации я не рассказываю, как надо программировать, я лишь показываю, как можно.ПредусловияКак уже было сказано в предыдущих публикациях, з…

  • суббота, 12 августа 2023 г. в 00:00:10
javascript
React vs Vue vs Angular. Часть 2

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

  • пятница, 11 августа 2023 г. в 00:00:16
javascript
Написание Vite плагина

Сборщик Vite предоставляет не только хороший функционал, но и удобный API для создания плагинов, позволяющих кастомизировать его практически под любую задачу. То есть, плагины можно писать не только для публикации их в npmjs.com репозитории, но и для автоматизации исключительно своих задач.Сложность написания плагина сравнима со сложностью написания сценария для Gulp или GitHub Actions. Для примера напишем плагин, который будет вставлять фрагменты кода в файл index.html. В зависимости от проек…

  • пятница, 11 августа 2023 г. в 00:00:16
javascript
Встречайте Next.js Commerce 2.0

Эта статья — перевод оригинальной статьи "Introducing Next.js Commerce 2.0".Также я веду телеграм канал “Frontend по-флотски”, где рассказываю про интересные вещи из мира разработки интерфейсов.ВступлениеСегодня мы с радостью представляем Next.js Commerce 2.0.App Router Ready: Использование компонентов React Server, Server Actions, встроенных лейаутов, метаданных и всех новых шаблонов из недавно выпущенного App Router.Динамическая витрина: Динамическая витрина с Edge-рендерингом, работ…

  • среда, 9 августа 2023 г. в 00:00:16
javascript
Внутреннее представление и оптимизации строк в JavaScript-движке V8: «отмываем» строки, «обгоняем» …

С самого рождения JavaScript в каком-то смысле был языком для манипулирования текстом — от веб-страничек в самом начале до полноценных компиляторов сейчас. Неудивительно, что в современных JS-движках достаточно много сил уделено оптимизации внутреннего представления строк и операций над ними. В этой статье я хочу рассмотреть, как могут быть представлены строки в движке V8. Попытаюсь продемонстрировать их эффект, обогнав C++ в очень честном бенчмарке. А также покажу, в каких случаях они могут…

  • среда, 9 августа 2023 г. в 00:00:15
javascript
Vite SSR BOOST — Наш собственный путь в мире React SSR

⚡заряженные⚡ серверные приложения с помощью Vite SSR BoostВсем привет! Меня зовут Михаил, и я являюсь СТО в одной IT компании. Сегодня я хочу кратко рассказать вам о мотивах создания собственной библиотеки для разработки React-приложений с поддержкой SSR (серверный рендеринг) и поделиться результатами этой работы.Как известно, великие дела начинаются с малого. В нашем случае у нас было небольшое количество React-приложений без поддержки SSR, которые в конечном итоге требовали перехода на серв…

  • среда, 9 августа 2023 г. в 00:00:15
javascript
bindActionCreators — маленькая утилита, решающая проблемы

В этой статье я хочу поделиться информацией, которая будет полезна всем, кто использует redux или @reduxjs/toolkitДанные библиотеки предоставляют большое количество полезных утилит, в этой статье я расскажу об одной из них – bindActionCreatorsОдна из проблем, преследующая почти всех, кто использует вышеупомянутые библиотеки - невозможность использования action(), предварительно не обернув его в dispatch(). Это порождает большое количество бессмысленного кода:const dispatch = useDispatch() con…

  • понедельник, 7 августа 2023 г. в 00:00:12
javascript
Волшебство Drag And Drop: Как динамические дашборды делают жизнь проще. Часть 1. Описание и мотивы

Всем привет :)Я Никита, уже больше 4 лет занимаюсь фронтендом, погружаюсь в инфраструктуру и кайфую от IT мира и комьюнити около веба, частенько читаю Хабр и решил попробовать написать сам.Решил сделать цикл статей и рассказать про опыт добавления динамических элементов на страницу с помощью drag and drop и получения данных с bff. Предварительно разбив на три части.Описание решения, технологий и мотивацияТехническая часть с кодом про структуру компонентов и Drag and Drop решениеТехническая ча…

  • воскресенье, 6 августа 2023 г. в 00:00:15