چرا من واکنش را ترک کردم – انجمن DEV
با دلایل خوب، React یکی از محبوب ترین کتابخانه های جاوا اسکریپت جلویی موجود است. این در نبرد آزمایش شده است، دارای یک اکوسیستم بزرگ است و دارای ویژگی های بسیاری است که ایجاد رابط های کاربری پیچیده را آسان می کند. با وجود این، React یک راه حل یکسان نیست. در ماه گذشته، چارچوبها و تکنیکهای جایگزین را بررسی کردم، پارادایمهای مختلف را بررسی کردم و در نهایت React را کنار گذاشتم.
زمینه
من در حال ساخت یک برنامه رسانه اجتماعی به عنوان یک پروژه جانبی / “برنامه رویایی” هستم و چندین ماه است که ذهنیت این را داشتم که همه آن را خودم انجام دهم. پس از تغییر به استراتژی «چرخ را دوباره اختراع نکن»، شروع کردم به تجدید نظر در فن آوری هایی که از آن استفاده می کنم تا بهتر با شعار جدیدم آشنا شوم:
- کارایی
- توسعه سریع
- لبه برنده (اما نه خونریزی).
- فن آوری پیشرفته
نارضایتی از اکوسیستم Current React
یکی از دلایل اصلی که من به دنبال جایگزینی برای React بودم، نارضایتی فزاینده من از اکوسیستم فعلی React بود. با افزایش محبوبیت React، تعداد کتابخانهها، ابزارها و چارچوبهای نوشته شده پیرامون آن نیز افزایش یافته است. متأسفانه React اخیراً از کلاس ها به توابع و React 18 سوئیچ کرده است هنوز دارای پشتیبانی متغیر برای واکشی داده ها، اقدامات ناهمزمان و حتی اجزای سرور. من قبلاً فکر می کردم که خوب است، زیرا می توانستم آن را خودم بسازم. با این حال، من فقط توسعه دهنده متوسط هستم. همچنین اجرای مواردی مانند مسیریابی تودرتو و مرزهای خطا بدون بالون کردن اندازه بسته من، اگر اصلاً کار میکردند، بسیار دشوار بود.
کندی Next.js، ریمیکس در مقایسه با Vite
من CSR را به دلایل سئو دوست ندارم، بنابراین طبیعتاً تصمیم گرفتم Next.js را برای پشتیبانی عالی SSR آن انتخاب کنم. متأسفانه Next همچنان از webpack در ارتباط با SWC استفاده می کند. در حالی که من مطمئن هستم که Turbopack می تواند بسیار بهتر باشد، هنوز حتی در مرحله بتا نیست. در حال حاضر، حدود 5 ثانیه طول می کشد تا سرور راه اندازی شود و 1-2 ثانیه دیگر برای بارگذاری مجدد سریع. در مقایسه با چیزی مانند React w/Vite، Next احساس کندی دارد. من همین احساس را برای متافرایمورک های دیگر مانند Remix نیز داشته ام.
عملکرد کلی React
در نهایت، من در مورد عملکرد کلی React تردید داشتم. در Vite، پس از حذف هر گونه فایل غیر ضروری (CSS، تصاویر، و غیره)، اندازه بسته نرم افزاری 142.93 کیلوبایت (45.89 کیلوبایت gzipped) است. Svelte 5.49kB (2.53kB gzip) است. این کاهش 96% (94% gzipped) در اندازه فایل است، برای دکمه ای که هر بار که روی آن کلیک می کنید یک عدد را افزایش می دهد!
بررسی گزینه های جایگزین
با در نظر گرفتن این مسائل، من شروع به بررسی جایگزین های React کردم. من Qwik، Vue.js، Astro و حتی Ruby on Rails را در نظر گرفتم. هر کدام از این راه حل ها مزایا و معایبی داشتند، اما من در نهایت SvelteKit را برای پروژه خودم انتخاب کردم.
SvelteKit چارچوبی برای ساخت برنامه های کاربردی وب است که از یک کامپایلر برای تولید کد جاوا اسکریپت بسیار بهینه شده استفاده می کند. وقتی صحبت از عملکرد و زمان بارگذاری به میان می آید، به طور قابل توجهی سریعتر از React است. همچنین، تجربه رضایتبخشی مشابه Ruby on Rails را ارائه میدهد که از آن لذت بردم.
SvelteKit علیرغم داشتن جامعه و اکوسیستم کوچکتر، به طور قابل توجهی کارآمدتر و لذت بخش تر از React است. حتی اگر React بهترین راه حل برای بسیاری از توسعه دهندگان باشد، بسیار مهم است که گزینه های دیگری را در نظر بگیرید که ممکن است نیازهای شما را بهتر برآورده کنند.
نتیجه
من عاشق React هستم. این اولین عشق من بود که وارد توسعه وب شدم. با این حال، SvelteKit در حال رشد است. این راه را برای توسعه وب جدید و بهتر هموار می کند. در مورد من، متوجه شدم SvelteKit برای پروژه شخصی من مناسب است، و من برای ادامه کاوش در آنچه که ارائه می دهد هیجان زده هستم.