Next.js 12

Bài tóm tắt Vercel 2021 3. Quy mô lớn Độ khó: Trung bình

Vercel · 2021 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc

Vercel vừa làm framework Next.js vừa bán nền tảng chạy nó; nhận định về sản phẩm của họ trong trang này đều là "theo Vercel". Thông báo phát hành (release note); số đo là theo Vercel, không nêu điều kiện đo.

Thay đổi chính

  • Compiler Rust (SWC) thay Babel: theo Vercel, biến đổi mã nhanh hơn Babel 17 lần, refresh local nhanh khoảng 3 lần và build nhanh khoảng 5 lần. Phải viết lại các phép biến đổi Babel của Next.js bằng Rust, kể cả một parser CSS mới cho styled-jsx. Project có cấu hình Babel riêng tự động không dùng compiler mới.
  • Minify bằng SWC (nhanh hơn Terser 7 lần, theo Vercel) để tuỳ chọn cho tới khi kiểm chứng đủ, vì nó thay một hạ tầng đã dùng nhiều năm.
  • Middleware: code chạy trước request (rewrite, redirect, header) trên runtime hạn chế theo Web API, chạy cả ở next start lẫn edge.
  • Output file tracing: đưa @vercel/nft (đã chạy hơn 2 năm trên Vercel) vào framework: mỗi trang/API route có danh sách file cần thiết, thay tuỳ chọn target gom mọi phụ thuộc vào bundle; hướng tới output standalone cho image Docker nhỏ.
  • Thử nghiệm: React Server Components, SSR streaming, import ES module qua URL.
  • Mặc định từ 12: ES modules được ưu tiên hơn CommonJS (thử nghiệm từ 11.1); module chỉ có CommonJS vẫn import được.

Bài học cho SWE

  • Đổi công cụ build sang ngôn ngữ native vẫn giữ lối thoát: ai có cấu hình cũ thì tự rơi về đường cũ, phần rủi ro (minify) để tuỳ chọn.

Liên quan