Уже какое-то время пользуясь Solid.js, открываю всё новые и новые чудные преимущества этой технологий, и просто не перестаю удивляться, насколько Solid.js — это чудо.
Ну и вот, наконец, в самолете у меня появилось немного времени написать небольшую обзорную статью по этой технологии с какими-то абстракциями, пояснениями, и прочим. Как вы уже могли понять по предыдущему моему посту, одним постом тут не обойтись, поэтому у нас будет так называемый цикл постов про такую замечательную технологию, как Solid.
Я очень надеюсь, что кто-то, читая мои наработки, вдохновится на изучение Solid и откроет для себя совсем новый дивный мир эффективной разработки.
Ввиду того, что раннее я был (да и всё ещё являюсь им по долгу службы) преимущественно React-разработчиком, в этой статье я буду вести сравнительную характеристику Solid именно с этой технологией. Просто потому, что в React у меня есть внушительный опыт, и уже какое-то сформировавшееся мнение.
// Инициализация
Визуально, инициализация приложения в Solid не сказать, что сильно отличается от React. На входе нас встречает практически одинаковый код:
// React
const domRoot = document.getElementById('root’)!;
ReactDOM
.createRoot(domRoot);
.render(<StrictMode><App/></StrictMode>);
// Solid
render(() => <App/>, domRoot);
Тут, особенно, говорить нечего, кроме того, что в корне приложения на React имеется компонент, именуемый
StrictMode
. Он ответственнен за то, чтобы помочь разработчику найти некорректное поведение, связанное с использованием хуков React и ре-рендерингом. Как по мне, это компонент вызывает больше проблем, нежели чем помогает их решать. Да, он заставляет разработчиков делать свою работу правильно, но заставляет при этом решать какие-то невозможные кейсы, и в каких-то случаях по ощущениям, ведет себя некорректно. Двойной вызов эффектов (useEffect) с моей точки зрения - крайне странный способ проверять, а правильно ли реализован эффект.В Solid таких "приколов" нет — каждый эффект вызывается только тогда, когда должен. У вас нет возможности включить какой-то "строгий режим" при котором эффекты начнут вызываться N раз (хотя при желании вы и это сделать можете).