Category : javascript

javascript
Как тестировать не-REST-бэкенд. Часть третья, gRPC

Итак, мы с вами добрались до третьей, самой «хардовой» части цикла. Сегодня поговорим про gRPC.Что такое gRPC? Сам RPC — удалённый вызов процедур (иногда вызов удалённых процедур; RPC от англ. remote procedure call) — класс технологий, позволяющих программам вызывать функции или процедуры других программ, делая это так, как если бы они находились в одном адресном пространстве. Буква g в названии — это гугловая реализация этих технологий.Разберем это все на примере.Допустим, что вы — программис…

  • вторник, 15 августа 2023 г. в 00:00:16
javascript
Design Patterns: прототип, прокси и обозреватель для фронтенд-разработчика

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

  • вторник, 15 августа 2023 г. в 00:00:15
javascript
Создание игры в стиле GameBoy в 13 КБ

В прошлом году я решил поучаствовать в гейм-джеме js13kgames. Это длящееся один месяц ежегодное соревнование по созданию с нуля игры на JavaScript, которая должна уместиться в 13 КБ (в zip). Места как будто не очень много, но с достаточным количеством креативности при таких ограничениях можно достичь многого. Просто взгляните на потрясающие примеры прошлых лет: Underrun (победитель в 2018 году); Ninja vs Evil-corp (победитель в 2020 году); Beat Rocks (второе место в 2021 году). Хотя в прош…

  • вторник, 15 августа 2023 г. в 00:00:15
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