Мы разрабатываем веб‑приложение, позволяющее обсуждать задачи в реальном времени и поддерживающее совместное редактирование сообщений. Мы используем React, ProseMirror и AWS AppSync.В этой статье мы расскажем о нашем использовании ProseMirror для создания редактора сообщений. ProseMirror предоставляет инструменты для создания WYSIWYG‑редактора текста в веб‑интерфейсе. Мы рассмотрим, те возможности, которые использовали сами: как создавать в ProseMirror свои простые типы узлов (для приложенных …
Вы используете TypeScript, но впадаете в ступор перед, когда видите типы в сторонних библиотеках? Generics, generic constraint, infer, rest infer, conditional и recursive types, satisfies вызывают головную боль? Мы постараемся снизить градус сложности и напишем типы для роутинга в React. Данный материал будет полезен как фронтендерам, так и бекендерам.Статья предполагает, что вы уже знакомы с TypeScript, знаете основы и используете в повседневной разработке.Все ключевые слова и концепции TS и …
Недавно, в процессе реализации одного из модулей проекта, над которым я работаю - возникла проблема воспроизведения видео на web странице, а также возникли проблемы с его адаптацией под iPhone и iPad.Проблема была в следующем:Создал веб-страницу HTML5, на которой есть небольшое видео, создал свою control-panel для плейера, и все отлично работает в Chrome и FireFox, но совсем не работает ни на iPhone, ни на iPad. Получаю просто пустую страницу.Реализация была следующей:<div> <div d…
TL;DR для тех, кому некогда читать™: Три года реального времени, ~340 дней разработки, 2 423 часа. 106 849 строк кода (62% JavaScript, 32% PHP, 6% CSS). Собственный парсер формата .h3m (h3m2json.php). Неограниченные возможности для создания модификаций. Мультиплеер на WebSockets без блокировок — не нужно ждать, пока другой игрок закончит ход или битву. Любое разрешение экрана и платформа — хоть 4K, хоть телефоны (но пока нет вёрстки). Неограниченное число участников и размер поля в битве (вд…
Появилась однажды задача - сделать область для загрузки файлов, с помощью drag-and-drop.Была выбрана библиотека react-dnd, по причине её простоты, минималистичности и низкого порога входа.Фича реализуется с помощью это либы и двух кастомных компонентов:DndContainer - компонент обёртка, для того, чтобы прокидывать вниз контекст для работы react-dndDropTarget - компонент для непосредственной реализации drag-and-drop функционалаИтак, рецепт!react-dndДокументация: react-dnd.Примеры использования: …
ПредисловиеОригинальная продуктовая задача, помимо непосредственной загрузки файлов и dnd, включала в себя ещё 2 больших куска логики:Динамическая галерея для отображения загружаемых и загруженных файлов с их статусами.Резолв конфликтов дубликатов имён файлов при загрузке. Т.е. надо было при загрузке файлов дать пользователю возможность выбрать один из возможных сценариев загрузки:переименовать загружемые файлы;переименовать уже загруженные файлы;остановить загрузку.Реализация функционала резо…
ПриветЯ давно пишу код, а React использую более пяти лет.За это время у меня возникло несколько идей о том, как можно было бы улучшить React.К реализации этих идей я приступил около трех лет назад. Сначала проверил концепцию, потом решил оформить всё в виде библиотеки.А о том, что из этого вышло, я бы хотел рассказать в этой статье.Чем хорош ReactВо-первых, это подход React в объединении Javascript и HTML в одном коде. У остальных это получилось не так хорошо.Например, для некоторых фреймворко…
В рамках своей работы, я не раз сталкивался с проблемой, что нужно отслеживать изменение в LocalStorage в совершенно независимых компонентах. Были попытки отслеживания изменений через "window.addEventListener", но и тут меня ждала неудача, так как в этом случае отслеживание будет происходить только в другой вкладке браузера и тем самым я дошел до создания своего хука, назвал его - useLocalStorageEffect. Далее уже будем говорить о нем.Какие проблемы решает хук useLocalStorage…
Статья о том, как я в 15 лет облегчил работу с электронным дневником, представленным правительством Кировской области в 2022 году.Что получилось сделать и как это было реализовано.ПредысторияДолгое время во всех школах моей области использовался устаревший АИАС АВЕРС. В 2022 году сообщили, что все школы переходят на новый электронный дневник. Я надеялся, что представят нечто вроде дневник.ру с приложением, уведомлениями, мобильной адаптацией и удобными фичами, а на деле мы получили устаревший …