شما به NextJS نیاز ندارید
Next.js پاسخ پیشفرض برای ساخت اپلیکیشنهای React است. فریمورک فوقالعادهای است، اما پیشفرض بودن به معنای ضروری بودن نیست.
استفاده از آن برای پروژهای که مناسب نبود، سرعت ما را کاهش داد و باعث اصطکاک در تیم شد. ما یک محصول دادهمحور (data-heavy) شامل داشبوردها و نمودارها ساختیم. تقریباً تمام صفحات پشت یک صفحه ورود (login) قرار داشتند.
برای این نوع اپلیکیشن، رندرینگ سمت سرور (SSR) بدون ایجاد ارزش افزوده، فقط هزینهها را بالا برد.
ابزار مناسب به آنچه میسازید بستگی دارد.
پروژههای محتوا-محور: • سایتهای مارکتینگ • وبلاگها • فروشگاههای آنلاین • مستندات • در اینجا از Next.js استفاده کنید. SEO اهمیت دارد و محتوا استاتیک است.
پروژههای اپلیکیشن-محور: • ابزارهای داخلی • داشبوردها • پنلهای مدیریت • کنسولهای SaaS • در اینجا از یک Vite-based SPA استفاده کنید. این اپلیکیشنها پشت احراز هویت (auth) قرار دارند و به APIها متکی هستند.
ما از Next.js به یک Vite SPA مهاجرت کردیم. دلیل آن به شرح زیر است:
دیباگ کردن آسانتر خطاهای سرور به راحتی به کامپوننتهای شما نگاشت نمیشوند. خطاهای سمت کلاینت در مرورگر با stack traceهای واضح رخ میدهند. این موضوع باعث میشود رفع باگها سریعتر انجام شود.
تست بهتر شما نمیتوانید به راحتی یک سرور کامپوننت را که کامپوننتهای سروری دیگر را رندر میکند، unit test کنید. ما فقط برای اینکه قابلیت تست را حفظ کنیم، تصمیمات طراحی خاصی گرفتیم که این خود یک اشتباه بود.
احراز هویت سادهتر در SSR، سرور باید در هر درخواست توکنها را اعتبارسنجی کند. این کار باعث ایجاد سطوح حمله (attack surfaces) بیشتر و منطق پیچیده برای کوکیها میشود. یک اپلیکیشن کلاینت-محور، احراز هویت را در یک جا مدیریت میکند: API.
هزینههای زیرساختی کمتر SSR برای هر درخواست به یک سرور همیشه روشن نیاز دارد. اما یک فرانتاند استاتیک به صورت فایل از طریق CDN ارسال میشود. در این حالت، سرویس کمتری برای اجرا و ایمنسازی دارید.
پیچیدگی کمتر Next.js باعث ایجاد جدایی اجباری بین سرور و کلاینت میشود. مهندسان فرانتاند مجبور بودند مسائل مربوط به سرور مانند middleware و caching را مدیریت کنند که باعث کند شدن سرعت ما شد.
ما مرحلهبهمرحله مهاجرت کردیم. Next.js را برای صفحات عمومی که از نظر SEO حیاتی بودند نگه داشتیم و بقیه موارد را به یک Vite SPA منتقل کردیم.
هزینههای این کار (trade-offs) ناچیز بود: • SEO: داشبوردهایی که پشت صفحه ورود هستند، نیازی به SEO ندارند. • بارگذاری اولیه: اپلیکیشنهای دادهمحور معمولاً به دلیل دیتابیس کند هستند، نه به دلیل فریمورک.
اگر SEO و پیشنمایشهای شبکههای اجتماعی مهم هستند، از Next.js استفاده کنید. اگر اپلیکیشن شما تعاملی، دادهمحور و پشت یک صفحه ورود است، از یک Vite SPA استفاده کنید.
از استفاده از گزینههای پیشفرض دست بردارید. از خود بپرسید که واقعاً در حال ساخت چه چیزی هستید.
Source: https://dev.to/moruno21/you-dont-need-nextjs-heres-why-708
