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 startlẫ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ọntargetgom 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
#Next.js#SWC#Rust#Babel#Terser#Middleware#Edge#output file tracing#@vercel/nft#React Server Components#ES modules
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (2)