Có, sử dụng Esbuild với VITE có thể cải thiện đáng kể tốc độ chuyển đổi so với sử dụng các gói khác như webpack. Dưới đây là một vài điểm chính:
phụ thuộc trước đóng gói với Esbuild
VITE sử dụng các phụ thuộc ESBUILD để đóng cửa trước, nhanh hơn khoảng 20-30 lần so với sử dụng Trình biên dịch TypeScript (TSC) trực tiếp [3]. Bước đóng gói trước này chuyển đổi các mô-đun CommonJS/UMD thành ESM và cải thiện thời gian bắt đầu lạnh của VITE so với các gói dựa trên JavaScript [1].
Chuyển đổi bản thảo nhanh hơn
VITE tận dụng trình phân tích cú pháp tùy chỉnh tùy chỉnh của Esbuild được tối ưu hóa cho hiệu suất. Nó tránh một số va chạm tốc độ trong trình biên dịch bản loại chính thức, như sử dụng nặng các hình dạng đối tượng megamorphic và truy cập thuộc tính động không cần thiết [3].
Đo lường hiệu suất thực nghiệm
Điểm chuẩn cho thấy Vite với Esbuild có thể nhanh hơn nhiều so với webpack cho các hoạt động nhất định [2]:
- Bản dựng ban đầu `Sợi khởi động`
- Thành phần phản ứng nóng lại nóng: Vite 1S vs Webpack 13s
- Thay đổi dữ liệu máy chủ "nóng" tải lại: VITE 13S vs Webpack 17s
Mặc dù mức tăng hiệu suất chính xác sẽ phụ thuộc vào dự án, xu hướng tổng thể cho thấy tốc độ tăng tốc đáng kể từ việc sử dụng ESBUILD cho các phép biến đổi trong VITE so với các lựa chọn thay thế như webpack [2].
Tuy nhiên, điều quan trọng cần lưu ý là Esbuild không thực hiện kiểm tra loại, vì vậy bạn có thể cần phải chạy riêng biệt `tsc - -noemit` để đảm bảo an toàn loại đầy đủ [4]. Một số tính năng như `const enum` cũng chưa được Esbuild hỗ trợ [4].
Tóm lại, việc tận dụng các khả năng chuyển đổi nhanh của Esbuild là một yếu tố chính trong lợi thế hiệu suất của VITE so với các gói khác. Tăng tốc độ có thể là đáng kể, đặc biệt là trong quá trình phát triển, nhưng cũng có một số sự đánh đổi để xem xét.
Trích dẫn:[1] https://vitejs.dev/guide/features
[2] https://dev.to/noriste/migrating-a-150k-loc-codebase-to-vite-and-esbuild-how-part-2-3-1c08
[3] https://esbuild.github.io/faq/
[4] https://github.com/vitejs/vite/issues/1585
[5] https://github.com/vitejs/vite/issues/3193