Привет, Хабр! Меня зовут Александр Григоренко, я фронтенд-разработчик. В основном, занимаюсь разработкой приложений на React, но также постоянно экспериментирую с различными технологиями.В своей работе я часто создаю собственные или использую уже готовые UI-компоненты. Проблема с такими компонентами заключается в том, что они часто ограничены определённым фреймворком, и их реализация требует написания сложной нестандартизированной логики. В течение долгого времени для базовых UI-компонентов, т…
React как чистое представление в StorybookВ предыдущих статьях мы пришли к выводу, что для того, чтобы UI-код не превращался в легаси, нам нужно отделить представление от бизнес-логики и немного иначе, чем это делают Redux и Elm, так как оба подхода не позволяют сделать это полностью.В данной статье мы порассуждаем о том, как такое разделение сделать.React view как чистая функция состоянияReact изменил наш подход к пользовательскому интерфейсу — его философия основана на простых, но мощных кон…
Привет, Хабр! Меня зовут Андрей, я Frontend разработчик. О статьеПродолжаем погружаться в продвинутый TypeScript. В этой статье рассмотрим conditional types, посмотрим на реализацию с примерами, узнаем какую роль играют ключевые слова extends и infer. Перед прочтением данной статьи рекомендую ознакомиться с базовыми понятиями и возможностями языка, в этом вам поможет одна из моих прошлых статей: TypeScript и все что тебе нужно в разработкеСтатья предназначена для тех, кто хочет научиться увере…
Продолжение перевода статьи «Reimagine Atomic CSS» двухлетней давности одного из членов команды Vue core Anthony Fu, автора UnoCSS, в которой рассматривается уже сам UnoCSS. Часть первая.Введение в UnoCSSUnoCSS — мгновенный (instant) атомарный CSS‑движок с максимальной производительностью и гибкостью.Все началось с нескольких случайных экспериментов во время моих национальных праздников. С мыслью о том, что все делается по требованию (on‑demand), и гибкостью, которую я ожидаю как пользователь,…
Hello world! На днях я баловался с WebAssembly и получил довольно неожиданные результаты, которыми и хочу с вами поделиться в этой небольшой заметке. Хорошо, если вы знаете JS/Node.js и хотя бы слышали о WASM и Rust. Я использовал следующие инструменты: Chrome 119.0.6045.199 Node.js 20.9.0 Rust 1.74.0 VSCode 1.80.2 Начнем с создания Node.js-проекта: # основная директория mkdir js-wasm cd js-wasm # директория с JS-кодом mkdir js-code cd js-code # инициализируем Node.js-проект # это не обя…
Оба поисковика утверждают, что что-то уже могут по индексированию SPA приложений. В статье показаны результаты проведенного эксперимента по индексации чистого SPA вебсайта.Результат: Google - хорошо, Yandex - не очень.SPASPA приложения получают данные и отображают их на странице асинхронно, через AJAX запросы. В связи с чем, для индексации таких сайтов поисковик должен понимать JavaScript и грузить и обрабатывать не только основной HTML страницы, как он это делал много лет, но и сопутствующие …
Всем привет. Сегодня я бы хотел рассказать о том, с какими трудностями пришлось столкнуться при работе с менеджером node.js процессов PM2, и как нам пришлось расширить его возможности для того, чтобы его было можно использовать эффективнее.Как известно PM2 — это менеджер процессов с открытым исходным кодом позволяющий кластеризировать приложение и гибко распределять нагрузку между ядрами процессора. Многие используют его в своих продакшен решениях благодаря его возможностям, но в последнее вре…
Всем доброго дня! Комментарии к моей предыдущей статье о том, как я развиваю свой pet-проект, а также различные законы, подразумевающие локализацию персональных данных на серверах, размещенных на территории РФ (в частности Федеральный закон от 21.07.2014 № 242-ФЗ «О внесении изменений в отдельные законодательные акты Российской Федерации в части уточнения порядка обработки персональных данных в информационно-телекоммуникационных сетях»), озадачили меня идеей постепенной миграции всех данных пр…
Давайте представим себе частый кейс - вы с бека получаете какой-то массив данных, из которых вы будете делать разметку, что будет содержимым вашей страницы.Для примера возьмем список пользователей, и вам надо отрендерить этот список. Вам пришел массив и вы, не теряя времени, прогоняете его через map, создавая, таким образом свою разметку - вот так:return ( <ul className="list"> {users.map(user => ( <li>{user.name.name} {user.name.patronomic} {user.name.surnam…