Моя работа состоит в написании кода на 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
Всем спасибо за внимание!
До свидания!