Development

Development

1854 bookmarks
Custom sorting
Fastify v3 released
Fastify v3 released
We are thrilled to announce the final release of the third major version of Fastify! In April this year, we published the first Fastify v3…
·medium.com·
Fastify v3 released
Caporal
Caporal
A full-featured framework for building command line applications (CLI)
·caporal.io·
Caporal
Patterns for Managing Source Code Branches
Patterns for Managing Source Code Branches
Фаулер описывает разные способы ветвления в гит и объясняет зачем они придуманы и как работают. Статья особенно полезна тем, что показывает базовые принципы работы с ветками. Рассказывается почему **branching is easy, merging is harder**, как побороть страх интеграции, и зачем интегрироваться часто
·martinfowler.com·
Patterns for Managing Source Code Branches
Чистая Архитектура для веб-приложений
Чистая Архитектура для веб-приложений
Автор описывает как применить чистую архитектуру относительно фронтенда для получения масштабируемого и гибкого кода. Сущности в подходе: - Модели - хранят данные приложения - DTO - DomainModel - ViewModel - Репозитории - позволяют получить данные - Сервисы - Используют репозитории для получения данных - Контроллер - логика компонента - Компонент - сам компонент
·habr.com·
Чистая Архитектура для веб-приложений
Опыт использования MobX в большом приложении
Опыт использования MobX в большом приложении
Опыт использования MobX в большом приложении https://habr.com/ru/company/tinkoff/blog/503136/ Рассказывает про то, как не наступить на грабли лишнего ререндера при использовании react+mobx. Обсуждаются способы передачи колбеков в компоненты так, чтобы не было лишних ререндеров: 3 Способа: - ` model.doSomething()} />` - создает новую функцию на каждый рендер - `onClickHandler = () => model.doSomething()` - только в класс-компонентах - `useCallback(() => model.doSomething())` - в компонентах-функциях При использовании mobx можно использовать декоратор `@action.bound`, который решает ту же проблему. Изменять observable-поля только из action-функций — хорошая практика, но не обязательная. Чтобы включить строгий режим для всего приложения, в mobx есть настройка enforceActions. Ее достаточно указать в корне проекта. ``` import { configure } from "mobx" configure({ enforceActions: "always" }) ``` В комментариях есть достаточно интересные обсуждения и другие трюки для работы с mobx. Например в комментарии https://habr.com/ru/company/tinkoff/blog/503136/#comment_21686016 вместо строгого режима предлагают хак для автоматического батчинга изменений стейта mobx. Я попробовал, но не ощутил каких-либо изменений ``` import { configure } from 'mobx'; setTimeout(() => configure({ reactionScheduler: f => setTimeout(f, 1) }), 1) ``` В комментарии https://habr.com/ru/company/tinkoff/blog/503136/#comment_21686016 говорят, что не нужно откладывать исполнение изменений в mobx. > NB! Вот [тут](https://github.com/mobxjs/mobx/pull/2311#issuecomment-599042383) Мишель (автор MobX) отмечает, что он как раз by design стремился к синхронному исполнению реакций, так что откладывание на микротаску (и тем более на макротаску) скорее будет усложнять жизнь. На самом деле комментарии очень интересные, советую прочитать
·habr.com·
Опыт использования MobX в большом приложении
RoughNotation
RoughNotation
Библиотека использует rough.js для выделения текста. Выглядит супер красиво
·roughnotation.com·
RoughNotation
divy-work/autopilot-deno
divy-work/autopilot-deno
Cross-platform desktop automation library for Deno. - divy-work/autopilot-deno. Библиотека позволяет управлять мышкой и клавиатурой в вашей системе
·javascriptweekly.com·
divy-work/autopilot-deno
Get Rid of if-statements in your Angular App with OOP
Get Rid of if-statements in your Angular App with OOP
Короткая история о том, как избавиться от if-else блоков в вёрстке, используя базовые приемы ООП, на примере ангуляра. Но никто не запрещает использовать полиморфизм и фабрики и вне ангуляра.
·medium.com·
Get Rid of if-statements in your Angular App with OOP
The Clear Architecture на TypeScript и React. Часть 1: Основы
The Clear Architecture на TypeScript и React. Часть 1: Основы
Добрый день, уважаемые читатели. В этой статье мы поговорим об архитектуре программного обеспечения в веб-разработке. Довольно долгое время я и мои коллеги исп...
·habr.com·
The Clear Architecture на TypeScript и React. Часть 1: Основы
Веб-компоненты в реальном проекте
Веб-компоненты в реальном проекте
Всем привет! Меня зовут Артур, я работаю frontend-разработчиком в Exness. Не так давно мы перевели один из наших проектов на веб-компоненты. Расскажу, с какими...
·habr.com·
Веб-компоненты в реальном проекте
Crank.js | Introducing Crank
Crank.js | Introducing Crank
Тут чувак сделал новый фреймворк и он достаточно интересный. https://crank.js.org/blog/introducing-crank Сайт 10 из 10 по дизайну, поэтому опишу своими словами что там написано: Суть не в том что его фреймворк крутой\удобный\убийца реакта, а в том, какие подходы он использует. Чуваку изначально не нравилась реализация React Suspense. Типа компонент должен throw'нуть thenable объект, это перехватит Suspence, дождется резолва промиса и вызовет компонент ещё раз. > If this mechanism sounds wild to you, that’s because it is. При этом будет вызван новый инстанс компонента, а значит функция, которая throw'ает thenable должна как-то уметь понимать что новый инстанс-это тот же самый компонент в том же месте, просто вызваный второй раз. А значит нам нужно уметь делать cache > The cache is necessary because there is no component instance on which to store the thrown promise, so when the component attempts to render a second time, it needs to make the same calls to whatever API threw and hope that a promise is not thrown again > in fact, cache invalidation is one of two problems which we joke about as being “the two hardest problems in computer science.” Suspense сложный, а сделан ровно для одной цели - асинхронный рендер. Но в JS уже есть способы делать асинхронные вызовы и даже несколько - async function, function *, async function * - и все они достаточно хороши, но не подходят под догму реакта потому что они impure. Вот вокруг идеи использования нативных возможностей JS и построен новый фреймворк - тип нам не надо изобретать велосипеды, потому что все уже есть в стандарте.
·crank.js.org·
Crank.js | Introducing Crank
Браузер на страже API-запросов: строим безопасное общение фронтенда с бэкендом
Браузер на страже API-запросов: строим безопасное общение фронтенда с бэкендом
Команде разработчиков, создающей одностраничное приложение (SPA), рано или поздно придётся столкнуться с ограничениями браузерной безопасности. С одной стороны,...
·habr.com·
Браузер на страже API-запросов: строим безопасное общение фронтенда с бэкендом