Bạn không cần NextJS
Next.js là câu trả lời mặc định để xây dựng các ứng dụng React. Nó là một framework tuyệt vời. Nhưng mặc định không có nghĩa là cần thiết.
Sử dụng nó cho sai dự án đã khiến chúng tôi mất đi tốc độ và gây ra sự mâu thuẫn trong nhóm. Chúng tôi đã xây dựng một sản phẩm nặng về dữ liệu với các bảng điều khiển (dashboards) và biểu đồ. Hầu như mọi màn hình đều nằm sau lớp đăng nhập.
Đối với loại ứng dụng này, server-side rendering (SSR) chỉ làm tăng chi phí mà không mang lại giá trị.
Công cụ phù hợp phụ thuộc vào những gì bạn đang xây dựng.
Các dự án ưu tiên nội dung (Content-first): • Các trang marketing • Blog • Cửa hàng trực tuyến • Tài liệu (Docs) • Hãy sử dụng Next.js ở đây. SEO rất quan trọng và nội dung là tĩnh.
Các dự án ưu tiên ứng dụng (Application-first): • Công cụ nội bộ • Bảng điều khiển (Dashboards) • Bảng quản trị (Admin panels) • Bảng điều khiển SaaS • Hãy sử dụng một Vite-based SPA ở đây. Những ứng dụng này hoạt động sau lớp xác thực (auth) và phụ thuộc vào các API.
Chúng tôi đã chuyển từ Next.js sang một Vite SPA. Đây là lý do:
Debugging dễ dàng hơn Các lỗi máy chủ không được ánh xạ rõ ràng tới các component của bạn. Các lỗi phía client xảy ra ngay trên trình duyệt với các stack trace rõ ràng. Điều này giúp việc sửa lỗi trở nên nhanh chóng.
Kiểm thử (Testing) tốt hơn Bạn không thể dễ dàng unit test một server component mà nó lại render các server component khác. Chúng tôi đã phải đưa ra các lựa chọn thiết kế chỉ để duy trì khả năng kiểm thử. Đó là một sai lầm.
Xác thực (Auth) đơn giản hơn SSR yêu cầu máy chủ phải xác thực token trong mỗi yêu cầu. Điều này tạo ra nhiều bề mặt tấn công hơn và logic cookie phức tạp hơn. Một ứng dụng ưu tiên client sẽ xử lý auth tại một nơi duy nhất: API.
Chi phí hạ tầng thấp hơn SSR cần một máy chủ luôn hoạt động cho mỗi yêu cầu. Một frontend tĩnh được phân phối dưới dạng các tệp từ CDN. Bạn sẽ có ít dịch vụ hơn cần phải vận hành và bảo mật.
Ít phức tạp hơn Next.js buộc phải có sự phân chia giữa server và client. Các kỹ sư frontend đã phải quản lý cả các vấn đề của server như middleware và caching. Điều này đã làm chúng tôi chậm lại.
Chúng tôi đã di chuyển theo từng giai đoạn. Chúng tôi giữ lại Next.js cho các trang công khai quan trọng về SEO. Chúng tôi chuyển tất cả những thứ còn lại sang một Vite SPA.
Các đánh đổi là rất nhỏ: • SEO: Các bảng điều khiển sau lớp đăng nhập không cần SEO. • Tải trang lần đầu (Initial load): Các ứng dụng nặng về dữ liệu thường chậm do cơ sở dữ liệu, chứ không phải do framework.
Hãy sử dụng Next.js nếu SEO và các bản xem trước trên mạng xã hội (social previews) là quan trọng. Hãy sử dụng một Vite SPA nếu ứng dụng của bạn có tính tương tác cao, dựa trên dữ liệu và nằm sau lớp đăng nhập.
Đừng sử dụng những gì mặc định. Hãy tự hỏi bản thân bạn thực sự đang xây dựng cái gì.
Nguồn: https://dev.to/moruno21/you-dont-need-nextjs-heres-why-708
