Моя работа состоит в написании кода на React. Несмотря на то, что мне нравится React, при разработке на нем я столкнулся с некоторыми его недостатками. В связи с этим, я решил создать свою библиотеку, Fusor, чтобы исправить эти недостатки и вот что из этого получилось.
Нашел один фатальный недостаток и решил запилить своё с блэкджеком...
Не люблю лишних разговоров поэтому перейду ближе к телу наших подопытных.
Разделяй и властвуй
Он же принцип единой ответственности (single-responsibility principle) из одной "малоизвестной" методологоии - SOLID.
Он же принцип разделения ответственности (separation of concerns).
ROUND 1, FIGHT!
Зона ответственности | Fusor | React |
|---|---|---|
Создание компонента | create() | create_update() |
Изменение состояния | state = x | setState(x); create_update() |
Обновление компонента | update() | setState(x); create_update() |
Это псевдокод
Как видно, у React с разделением не задалось.
"Ну и что с того?" - скажете вы.
А то что...
Проблемки имеются
ROUND 2, FIGHT!
Зона ответственности | Fusor | React |
|---|---|---|
Данные компонента | Создаются один раз | Пересоздаются на каждый чих/обновление |
Сайд-эффекты | Меняй данные и обновляй | Сложная и "многословная" логика хуков |
Обновление | Где и когда нужно | Не явное и тяжеловесное |
Контекст | Не нужен | Нужен |
Размер | ~2kB | ~44kB |
Вот что бывает если не следовать базовому принципу программирования. Не зря в SOLID он на первом месте.
"Но ��едь благодаря этому 'тежеловесу', облегчается жизнь нам, разработчикам, так?"
.
.
.
Нет.
Меньше слов, больше дела
ROUND 3, FIGHT!

По моему результат на лицо. React многословнее чем Fusor.
useCallbackв этом простом премере потому что, во Fusor, click хэндлер тоже не меняет свой указатель.
Итог
React сложнее и тяжелее чем Fusor.
"Зато React используют газилионы разработчиков и тонны библиотек под него уже написаны."
Да, вот только до React, газилионы разработчиков использовали и писали библиотеки на JQuery, а до него вообще генерировали страницы на PHP. Время течет, мир меняется.
"Что, теперь переучиваться?"
Нет. Если вы знаете React, то вы уже знаете Fusor, и еще кучку лишних концепций из React.
У меня всё.
Ссылочка на репозитарий Fusor: https://github.com/fusorjs/dom
Всем спасибо за внимание!
До свидания!
