ใช่การใช้ Esbuild กับ VITE สามารถปรับปรุงความเร็วในการแปลงได้อย่างมีนัยสำคัญเมื่อเทียบกับการใช้ bundlers อื่น ๆ เช่น Webpack นี่คือประเด็นสำคัญบางประการ:
การพึ่งพาล่วงหน้ากับ Esbuild
VITE ใช้ ESBUILD เพื่อการพึ่งพาล่วงหน้าซึ่งเร็วกว่าการใช้คอมไพเลอร์ TypeScript (TSC) ประมาณ 20-30 เท่า [3] ขั้นตอนก่อนการรวมกลุ่มนี้แปลงโมดูล CommonJS/UMD เป็น ESM และปรับปรุงเวลาเริ่มต้นเย็นของ Vite เมื่อเทียบกับ Bundlers ที่ใช้ JavaScript [1]
การแปลง typescript ที่เร็วขึ้น
Vite Leverages Parser TypeScript ที่กำหนดเองของ Esbuild ซึ่งได้รับการปรับให้เหมาะสมสำหรับประสิทธิภาพ มันหลีกเลี่ยงการกระแทกความเร็วบางอย่างในคอมไพเลอร์ TypeScript อย่างเป็นทางการเช่นการใช้รูปทรงวัตถุ megamorphic อย่างหนักและการเข้าถึงคุณสมบัติแบบไดนามิกที่ไม่จำเป็น [3]
การวัดประสิทธิภาพเชิงประจักษ์
เกณฑ์มาตรฐานแสดงให้เห็นว่า VITE กับ Esbuild นั้นเร็วกว่า Webpack สำหรับการดำเนินการบางอย่าง [2]::
- เริ่มต้น `เส้นด้าย Start` Build: Vite 6s กับ Webpack 150s
- React Component Hot Reload: VITE 1S กับ WebPack 13S
- การเปลี่ยนแปลงข้อมูลเซิร์ฟเวอร์ "hot" reload: vite 13s กับ webpack 17s
ในขณะที่การเพิ่มประสิทธิภาพที่แน่นอนจะขึ้นอยู่กับโครงการแนวโน้มโดยรวมแสดงการเร่งความเร็วอย่างมีนัยสำคัญจากการใช้ ESBuild สำหรับการแปลงใน VITE เมื่อเทียบกับทางเลือกอื่นเช่น WebPack [2]
อย่างไรก็ตามเป็นสิ่งสำคัญที่จะต้องทราบว่า Esbuild ไม่ได้ทำการตรวจสอบประเภทดังนั้นคุณอาจต้องเรียกใช้ `TSC -Noemit` แยกกันเพื่อความปลอดภัยประเภทเต็ม [4] คุณสมบัติบางอย่างเช่น `const enum` ยังไม่ได้รับการสนับสนุนโดย Esbuild [4]
โดยสรุปความสามารถในการเปลี่ยนแปลงที่รวดเร็วของ Esbuild เป็นปัจจัยสำคัญในการได้เปรียบด้านประสิทธิภาพของ Vite เหนือ Bundlers อื่น ๆ การเพิ่มความเร็วอาจมีความสำคัญโดยเฉพาะอย่างยิ่งในระหว่างการพัฒนา แต่มีการแลกเปลี่ยนบางอย่างที่ต้องพิจารณาเช่นกัน
การอ้างอิง:[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