При сравнении двух инструментов обычно сравнивают с точки зрения положительных сторон: «А» делает это лучше, чем «Б», а «Б» делает это лучше, чем «А». Это хорошее начало, но в большинстве случаев это поверхностный уровень и вопрос предпочтений. Это не имеет большого значения, потому что конечная цель может быть достигнута в любом случае. Я думаю, что часто лучше сравнивать с точки зрения негативов, потому что именно негативы действительно ограничивают вас.

И именно недостатки React побудили меня выбрать Svelte в качестве основного JS-фреймворка. Я бы хотел, чтобы это было не так. JQuery был хорош, AngularJS поразил меня, но React был особенным. React делал все то же, что и AngularJS, и даже Angular 2, но лучше и проще. К сожалению, похоже, это уже не так.

Это виртуальный DOM. В React этого не избежать. Это его самая большая сила, это то, что сделало его таким революционным, а теперь это его самая большая слабость.

Помимо излишне больших размеров пакетов, это создает ненужные повторные рендеры всего вашего приложения при каждом изменении. Возможно, с годами ситуация улучшилась, но по сути проблема все еще существует, и, чтобы замаскировать ее, мы навязываем разработчикам, казалось бы, произвольные правила. Мы используем хуки, мы вручную указываем зависимости внутри хуков, мы используем хуки только на верхнем уровне, мы оборачиваем вещи в хуки, обратные вызовы и заметки, и с каждым годом дыра становится все глубже.

Так не должно быть, по крайней мере, больше. Вместо того, чтобы спрашивать «Как мы можем сделать это лучше?» Я думаю, что лучший вопрос: «Должны ли мы сделать это лучше?».

Иногда есть просто присущие инструменту ограничения, и вместо бесконечной оптимизации, возможно, нам стоит поискать что-то другое. Вместо того, чтобы вкладывать миллионы в исследования и разработки, чтобы повысить эффективность двигателя внутреннего сгорания на пару процентных пунктов, возможно, нам стоит обратить внимание на электромобили, которые просто не имеют таких же присущих им ограничений.

Вот как я отношусь к Svelte и React. Svelte использует подход, основанный на компиляторе, и любые абстракции или код, которые вы пишете, компилируются в простой JS без громоздкой виртуальной DOM. Это настолько близко к ванильному JS, насколько вы можете получить с помощью фреймворка. И благодаря этому вас не сдерживают ограничения виртуального DOM. Больше не нужно думать об оптимизации для повторного рендеринга, следовании правилу хуков или чему-либо еще, связанному с виртуальным DOM.

Использование React с каждым годом становится все более обременительным. Это не горстка постоянно меняющихся библиотек, которые вам нужно использовать с React, это даже не Redux, на самом деле, мне все еще нравится использовать Redux, это просто React. Он стал настолько тяжелым, что с ним трудно двигаться вперед.

По сравнению с ним использование Svelte похоже на полет. Это так легко. И не только в окончательном размере пакета, но и в плане умственной нагрузки или специфичных для фреймворка знаний, необходимых для его использования. Это упрощает работу разработчиков и ускоряет загрузку для пользователей.

Я думаю, что React зашел слишком далеко на данный момент. Что бы ни привело нас от jQuery к React, это не выведет нас на следующий уровень. Нам нужно что-то более легкое и простое, чтобы освободить место для всего, что придет, и я думаю, что Svelte подходит как нельзя лучше.