Tietoa tästä työkalusta
JavaScriptin pienennys pienentää lähdekoodin kokoa poistamalla tarpeettomat merkit ja (oikeilla minifierillä) nimeämällä paikalliset muuttujat uudelleen lyhyemmiksi nimiksi. Ensimmäinen luokka – välilyöntien ja kommenttien poisto – on yksinkertaista ja riskitöntä. Toinen – muuttujien uudelleennimeäminen – edellyttää laajuussääntöjen ymmärtämistä, ja se on se, mitä tuotantominifirit, kuten Terser ja esbuild, tekevät parhaiten.
Tämä työkalu keskittyy turvalliseen pienentämiseen: kommenttien poistamiseen, välilyöntien kutistamiseen, tarpeettomien puolipisteiden poistamiseen ja ilmeisten kuvioiden lyhentämiseen. Muuttujien uudelleennimeäminen on konservatiivista – kosketetaan vain paikallisia muuttujia selkeässä laajuudessa, ja ulkoisesti viitatut nimet jätetään yksin. Tulos on toiminnallisesti identtinen lähteen kanssa.
Tuotantotason minimoimista varten omistetut työkalut (Terser, esbuild, swc) ymmärtävät koko ECMAScript-laajuusmallin ja tuottavat huomattavasti pienemmän tuloksen. Tämä työkalu on tarkoitettu nopeaan selainpuolen pienentämiseen, kun täydellistä koontikokoonpanoa ei ole saatavilla.
Miksi JavaScriptin pienentäminen
JavaScript-paketit ovat tyypillisesti suurin yksittäinen resurssi nykyaikaisella verkkosivulla. Pienentäminen tuottaa rutiininomaisesti 30–60 % koon pienennyksen minimoimattomaan lähteeseen verrattuna. Yhdessä gzipin tai Brotlin kanssa vähennys pienenee jonkin verran, mutta yhdistelmä säästää silti mitattavissa olevia tavuja - erityisesti hitaiden yhteyksien käyttäjille.
Nopeampi JavaScript tarkoittaa myös nopeampaa interaktiivista aikaa. Pienemmät skriptit latautuvat nopeammin, jäsentävät nopeammin ja suoritetaan nopeammin. Sivustoilla, joilla TTI vaikuttaa poistumisprosenttiin ja hakukoneoptimoinnin sijoitukseen, pienentäminen on yksi halvimmista saatavilla olevista voitoista.
Tekniset tiedot
Minifier tokenisoi JavaScriptin käyttämällä jäsentäjää, joka kunnioittaa ECMAScript-syntaksia. Kommentit (yksiriviset ja moniriviset) poistetaan paitsi /*-merkityt lisenssikommentit! etuliite. Välilyönnit tiivistetään paitsi syntaktisesti vaadituissa tapauksissa (tunnisteiden välissä, avainsanojen jälkeen).
Konservatiivinen muuttujien uudelleennimeäminen lyhentää paikallisia muuttujia yksinkertaisessa laajuudessa. Maailmanlaajuisia, vienti- ja tuontinimiä ei nimetä uudelleen – se rikkoisi ulkoiset viittaukset. Käytä syvälliseen uudelleennimeämiseen Terseria tai esbuildia asianmukaisen moduulitietoisen analyysin kanssa.
Reunatapaukset: automaattinen puolipisteen lisäys (ASI) tarkoittaa, että minifierin on säilytettävä rivinvaihto joissakin yhteyksissä, jotta ohjelman käyttäytyminen ei muutu. Malliliteraalit, regex-literaalit ja JSX (jos syöte sisältää sen) säilytetään tarkasti, koska niiden sisältöä ei ehkä ole turvallista pakata.
Usein kysytyt kysymykset
- Muuttaako pienentäminen koodini toimintaa?
- Ei. Pienentäminen poistaa välilyönnit ja kommentit, jotka eivät vaikuta suoritukseen. Muuttujien lyhentäminen (mangling) nimeää paikalliset muuttujat uudelleen, mutta säilyttää käyttäytymisen. Globaalit muuttujat ja viedyt nimet säilyvät ennallaan.
- Pitäisikö minun vähentää kehitystä vai tuotantoa?
- Käytä tuotannossa vain minimoitua koodia. Säilytä alkuperäinen luettava koodi kehityksen aikana. Useimmat rakennustyökalut (Webpack, Vite, esbuild) käsittelevät pienentämisen automaattisesti osana tuotannon koontiprosessia.
- Mitä eroa on minifioinnin ja hämärtymisen välillä?
- Pienentäminen pienentää kokoa ja pitää koodin toiminnallisesti luettavana, jos se on alustettu. Obfuskaatio tekee koodista tarkoituksella vaikeasti ymmärrettävän (merkkijonokoodaus, ohjausvirran tasoitus). Tämä työkalu keskittyy koon pienentämiseen, ei hämärtämiseen.
- Kuinka paljon kokoa pitäisi pienentää?
- Tyypillisesti 30-60 % ennen gzipiä. Hyvin kommentoitu koodi, jossa on pitkiä muuttujien nimiä, näkee suurimmat vähennykset. Yhdessä gzip-pakkauksen kanssa JavaScript-tiedostot ovat usein 80-90 % pienempiä kuin alkuperäinen lähde.
- Onko koodini ladattu palvelimelle?
- Ei. Minifier toimii selaimessasi.
- Kuinka paljon pienempi JavaScriptini on?
- Tyypillisesti 30-60 % alennus. Muuttuva-raskas koodi pitkillä tunnisteilla pakkaa enemmän; ilmaisuvoimakas koodi pakkaa vähemmän.
- Pitäisikö minun pienentää käsin?
- Ei koskaan. Säilytä luettava JavaScript lähdekoodissa. Suorita minimointi rakennusvaiheena tai osana käyttöönottoa.
- Toimiiko se TypeScriptillä?
- TypeScript on ensin käännettävä JavaScriptiksi tsc:n tai esbuildin avulla. Kun JavaScript on käännetty, se voidaan pienentää.