Jā, esbuild izmantošana ar VITE var ievērojami uzlabot transformācijas ātrumu, salīdzinot ar citu bundžu, piemēram, Webpack, izmantošanu. Šeit ir daži galvenie punkti:
Iepriekšēja atkarības no obligātajām atkarībām ar esbuild
VITE izmanto esbuild, lai atkarīgi no iepriekšējām atkarībām, kas ir apmēram 20-30x ātrāks nekā tieši TypeScript kompilatora (TSC) izmantošana [3]. Šis iepriekšējās darbības solis konvertē CommonJS/UMD moduļus ESM un uzlabo Vite auksto sākuma laiku, salīdzinot ar JavaScript balstītiem bundlers [1].
Ātra TypeScript transformācija
Vite piesaista Esbuilda pielāgoto TypeScript parsētāju, kas ir optimizēts veiktspējai. Tas ļauj izvairīties no dažiem ātruma izciļņiem oficiālajā TypeScript kompilatorā, piemēram, smaga megamorfu objekta formu un nevajadzīgu dinamisko īpašumu piekļuves izmantošana [3].
Empīriski veiktspējas mērījumi
Etaloni parāda, ka Vite ar Esbuild var būt daudz ātrāks nekā Webpack noteiktām operācijām [2]:
- Sākotnējais `dzijas sākums` Build: Vite 6s vs Webpack 150s
- React komponenta karstā pārlādēšana: VITE 1S pret Webpack 13s
- Servera dati maina "karstu" pārlādēšanu: VITE 13S pret Webpack 17s
Lai arī precīzs veiktspējas pieaugums būs atkarīgs no projekta, kopējā tendence parāda ievērojamus paātrinājumus, izmantojot ESBUILD izmantošanu pārvērtībām VITE, salīdzinot ar alternatīvām, piemēram, tīmekļa paketi [2].
Tomēr ir svarīgi atzīmēt, ka Esbuild neveic tipa pārbaudi, tāpēc, iespējams, būs jāuzsāk `TSC -NOEMIT`, lai nodrošinātu pilna veida drošību [4]. Dažas funkcijas, piemēram, "const enum", arī vēl neatbalsta Esbuild [4].
Rezumējot, ESBUILD ātrās pārveidošanas iespēju piesaistīšana ir galvenais faktors VITE veiktspējas priekšrocībām salīdzinājumā ar citiem bundriem. Ātruma pieaugums var būt ievērojams, it īpaši attīstības laikā, taču ir arī daži kompromisi, kas jāņem vērā.
Atsauces:[1] https://vitejs.dev/guide/features
[2] https://dev.to/noriste/migrating-a-150k-loc-codebase-to-vite-and-sbuild-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