
بروزرسانی: 25 خرداد 1404
SolidJS در مقابل React: The Go-to Guide
✔
در مقابل، بنیانگذار SolidJS موفق شد از تمام این رفت و آمدها طفره برود. با استفاده از مکانیزمی به نام واکنش ریز دانه برای دستکاری مستقیم DOM مرورگر، SolidJS ردپای حافظه بسیار سبک تری را ارائه می کند و برنامه ای فوق العاده سریع از ویرایش های صفحه و کد تزریقی را ارائه می دهد.
هدف، واقعگرایانه
بررسی موارد استفاده خاص پروژه شما می تواند نشان دهد که کدام چارچوب از نظر بهره وری انتخاب بهتری است.
SolidJS در مقابل React
✔
برای اینکه یک توسعه دهنده React در SolidJS که از درس ها، ساختار و رویکردهای انتزاعی آموخته شده در طول عمر React استفاده می کند، سرعت بگیرد، تقریباً هیچ منحنی یادگیری وجود ندارد. من به شما توصیه می کنم از همین امروز استفاده از SolidJS را شروع کنید—ممکن است آینده front end باشد.
هم در React و هم در SolidJS مدرن، یک کامپوننت از a render
تابع با خواص به عنوان آرگومان. همراه با هر جزء JSX، کد دقیق و مختصر است. JSX آسان است و به توسعه دهندگان باتجربه اجازه می دهد تا به صورت بصری مدل یک جزء را در تعریف آن توصیف کنند.
✔
✔
memo
SolidsJS و React دارای تفاوت هایی در عملکرد هستند که فراتر از رویکردهای آن ها در حفظ کردن است. این دو زبان به روش های بسیار متفاوتی به دستکاری HTML برخورد می کنند. نقطه کانونی این تفاوت نحوه به روز رسانی DOM مرورگر است.
رندر سمت سرور (یعنی هیدراتاسیون)
رندر مشروط
ابزار داربست
واکنش نشان دهید
✔ به طور موثر و بومی از این پشتیبانی می کند.
من کاملاً به رویکرد TL;DR اعتقاد دارم، بنابراین تفاوت های اصلی React و SolidJS را در جدول زیر خلاصه کرده ام و ارائه کرده ام:
در ظاهر، SolidJS و React به نظر نزدیک به هم مرتبط هستند. چارچوب های سمت کلاینت متقابل قابل درک هستند و هر دو برای ایجاد برنامه های تک صفحه ای (SPA) استفاده می شوند. در حالی که تجربه توسعه دهنده برای هر دو تقریباً یکسان است، مکانیسم های اساسی هر فریم ورک تضاد قابل توجهی دارند. شناسایی و ردیابی وابستگی های اجزا | ✔ | React برای رندر سریع برنامه های آن به حافظه سازی بستگی دارد. در مقابل، به دلیل ردیابی تغییرات بهینه و استفاده از DOM، SolidJS به ندرت به یادداشت صریح نیاز دارد. برای موارد لبه شدید که در آن تغییرات پایه کامپوننت مستلزم به روزرسانی رندر نیست، SolidJS ذخیره سازی را از طریق یک واحد مدیریت می کند. روش نامیده می شود کاراییافکت یک تابع ویژه است که یک بلوک اصلی در React و SolidJS است. به جای پاسخ دادن به تعامل مستقیم کاربر با مرورگر، هنگامی که یک حالت جزء تغییر می کند، یک افکت فعال می شود، شبیه به تماس یا شنونده رویداد. SolidJS | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
جریان داده های یک طرفه |
| SolidJS | ✔ به صورت دستی وابستگی های مؤلفه را با useEffect برچسب گذاری می کند. | ✔ | ||||||||||||||||||
رندر همزمان (یعنی تعلیق) | ✘ | |||||||||||||||||||||
مولفه هایی که بر پایه عملکرد تکیه دارند | ||||||||||||||||||||||
اینها توابعی هستند که برای اجرا در زمانی که فریمورک در زمان های خاصی در چرخه حیات یک جزء فعال می شوند، اجرا می شوند. تیم تحریریه وبلاگ مهندسی تاپتال از شما تشکر می کند جاناتان بندهان برای بررسی محتوای فنی ارائه شده در این مقاله. ادامه مطلب در وبلاگ مهندسی تاپتال:منبع قلاب یادداشت | ویژگی | استفاده از مولفه های حالت بدون نشانه گذاری | ✔ به طور خودکار وابستگی های اجزا را شناسایی و ردیابی می کند. | |||||||||||||||||||
وقتی بهره وری توسعه دهندگان را در React در مقابل SolidJS در نظر می گیریم، چند ملاحظات کلیدی وجود دارد:
من تجربه قابل توجهی با SolidJS و React دارم. از دیدگاه من، SolidJS برنده واضح این دو است. SolidJS با قدرت و ویژگی های قوی React مطابقت دارد. علاوه بر این، پاسخگویی سریعی را به کاربران نهایی ارائه می دهد که با React بی نظیر است. اگرچه من وسوسه می شوم که مقاله را در اینجا پایان دهم و بگویم که SolidJS به دلیل سرعت آن برنده واضح است، بحث در مورد اینکه چگونه این دو فریم ورک از نظر کارایی توسعه دهندگان روی هم چیده می شوند، مهم است. بهره وری توسعه دهندگان✔ | ||||||||||||||||||||||
React یک اثر را با the تعریف می کند حفظ کردنهر دو فریم ورک SPA مسئول تقسیم ساختار و عملکرد صفحه وب برنامه هستند، اما در یک مرورگر، این چارچوب ها عناصر HTML صفحات را به گونه ای متفاوت دستکاری می کنند تا تجربه کاربری مورد نظر را ارائه دهند. SolidJS و React در استفاده آنها از Document Object Model (DOM). بیایید توضیح دهیم که چگونه اجزای React و SolidJS به منطق برنامه اجازه تقلید از یک وب سایت چند صفحه ای می دهند. یک مقایسه مختصرجامعه و اکوسیستم غنی | ✔ | |||||||||||||||||||||
| در زیر هود، هم هوک ها و هم اولیه های واکنشی راهی برای اتصال به سیستم های مدیریت تغییر React و SolidJS مربوطه هستند. به طور کلی، این دو چارچوب عملکردهای مؤلفه را به شیوه ای مشابه مدیریت می کنند، اما از روش ها یا نامگذاری های متفاوتی برای انجام این کار استفاده می کنند. با عملکرد بالا |
| ✔ | |||||||||||||||||||
✔ از این ویژگی پشتیبانی می کند. | React و SolidJS دقیقاً ساختارهای برنامه نویسی و پشتیبانی از مؤلفه ها (تکه های کد جداگانه و قابل استفاده مجدد) دارند. ✔ | |||||||||||||||||||||
✔ | پشتیبانی از TypeScript | ✔ | توابع هوک مستقل از یکدیگر هستند، اما می توانند قلاب های دیگر را از داخل همان جزء فراخوانی کنند. چنین زنجیره های فراخوانی امکان عملکردهای پیچیده تری را فراهم می کنند و کد را به زیر تابع ها تشکیل می دهند. | |||||||||||||||||||
✔ | یک جزء بدون عملکرد فقط نشانه گذاری است. پس چگونه React و SolidJS کامپوننت ها را عملیاتی می کنند؟ رویکردهای آنها مشابه است:
✘ | تفاوت دیگر بین این دو فریمورک، ویژگی های متفاوت آنهاست که عملکرد اجزا را فعال می کند. عملکرد جزء✔ | دستکاری مستقیم DOM | از رندر مجدد کامپوننت جلوگیری می کند | حافظه گذاری عملکرد فریم ورک را با ذخیره سازی نتایج رندر مؤلفه های گران قیمت در حافظه پنهان، و استفاده از مقادیر ذخیره شده در زمان مناسب بر خلاف محاسبه مجدد مقادیر، بهینه می کند. در React، یادداشت را با استفاده از یکی از سه هوک پیاده سازی می کنیم:
مستندات توسعه دهنده عالی | واکنش ریز دانه وابستگی های متقابل متغیر را دنبال می کند. بر اساس وابستگی متغیر و زنجیره های ویرایش، SolidJS به روزرسانی های ساختار صفحه ما را محدود می کند تا فقط آنچه را تغییر داده است منعکس کند و از رندرهای غیرضروری اجزا عبور کند. این منجر به بهبود عملکرد گسترده نسبت به React می شود. ✔ | ✔ | ✘ از این ویژگی خارج از جعبه پشتیبانی نمی کند، اما این پروژه آب و برق شکاف را پر می کند | ||||||||||||||
✔ | ما می توانیم استدلال کنیم که – چون React به طور پیش فرض، با تکیه بر محاسبات تفاوت DOM برای به روزرسانی ها، مؤلفه ها را دوباره رندر می کند – React دو بار کار خود را انجام می دهد. از آنجایی که کامپوننت ها را هر بار رندر می کند، React برای جلوگیری از محاسبات غیرضروری و تکراری به حافظه سازی نیاز دارد. پیشوند |
نویسنده: تیم تحریریه Matthew Newman
|