Utilia

Oblikovalnik in zmanjševalnik JavaScript

Polepšaj zmanjšan JavaScript, zmanjšaj ga s Terserjem ali preveri sintakso z natančno vrstico in stolpcem napake. Deluje samo v tvojem brskalniku.

Možnosti zmanjševanja

Kako oblikovati ali zmanjšati JavaScript

  1. Prilepi kodo ali klikni Odpri datoteko, da naložiš datoteko .js, .mjs ali .jsx (do 10 MB).
  2. Izberi Zamik in, če imaš raje slog Allman, označi Zavite oklepaje v svojo vrstico.
  3. Klikni Oblikuj (polepšaj), da bo koda berljiva.
  4. Če jo želiš skrčiti, nastavi Možnosti zmanjševanja in klikni Zmanjšaj. Če želiš samo poiskati napake, klikni Preveri sintakso.
  5. Kopiraj ali prenesi rezultat. Vrstica stanja prikaže velikost pred in po ter prihranek v odstotkih.

Koda se samo prebere in preoblikuje, nikoli ne izvede: nič, kar prilepiš, se na tej strani ne zažene.

Polepšanje z js-beautify

Oblikuj (polepšaj) uporablja js-beautify. Vsak stavek postavi v svojo vrstico, zamakne bloke, doda presledke okoli operatorjev in za ključnimi besedami ter ohrani največ eno prazno vrstico, kjer si jih imel. Razume tudi sodobno sintakso (razrede, puščične funkcije, predloge nizov, async/await) in JSX. To je najhitrejši način za branje zmanjšane knjižnice ali enovrstičnega izseka, kopiranega s spletne strani.

Polepšanje spremeni samo presledke. Ne preverja veljavnosti kode: manjkajoč oklepaj preprosto da nenavaden zamik. Za to uporabi Preveri sintakso.

Zmanjšanje s Terserjem

Zmanjšaj uporablja Terser, zmanjševalnik, ki ga uporablja večina orodij za gradnjo JavaScripta. Ker je velik, se prenese šele, ko prvič klikneš Zmanjšaj ali Preveri sintakso. Možnosti se neposredno preslikajo v nastavitve Terserja:

  • Modul ES (import/export) kodo razčleni kot modul (module: true): velja strogi način, imena na vrhnji ravni pa so zasebna, zato jih je mogoče preimenovati, neuporabljena pa odstraniti. Pusti neoznačeno za klasičen skript, katerega globalne funkcije uporabljajo drugi skripti.
  • Stisni (compress) kodo prepiše v krajšo enakovredno kodo: izračun konstant (2*60 postane 120), odstranitev mrtve kode, združevanje deklaracij var, krajši pogoji.
  • Skrajšaj imena spremenljivk (mangle) lokalne spremenljivke in parametre preimenuje v eno- ali dvočrkovna imena. Globalna imena in lastnosti objektov se nikoli ne preimenujejo.
  • Ohrani komentarje z licenco ohrani komentarje, ki se začnejo z /*! ali vsebujejo @license ali @preserve. Vsi drugi komentarji se odstranijo.

Zmanjšanje ne more spremeniti tega, kar koda počne, vendar se koda, ki se zanaša na imena funkcij (fn.name) ali na eval, po preimenovanju lahko obnaša drugače. V tem primeru odznači Skrajšaj imena spremenljivk.

Sintaksne napake z vrstico in stolpcem

Ko Terser kode ne more razčleniti, Zmanjšaj in Preveri sintakso prikažeta sporočilo o napaki z vrstico in stolpcem, na primer »Vrstica 12, stolpec 8 – Sintaksna napaka: Unexpected token punc «)»«. Stolpec šteje znake od 1. Tipičen vzrok je manjkajoč oklepaj prej v datoteki, zato poglej tudi vrstice tik pred prijavljenim položajem.

Pogosta vprašanja

Ali se moja koda kam naloži?

Ne. js-beautify in Terser delujeta v tvojem brskalniku, koda pa ostane v tvojem računalniku.

Ali lahko zmanjšam TypeScript?

Ne. Terser sprejme samo JavaScript. TypeScript najprej prevedi v JavaScript, nato zmanjšaj izhod. Oblikovanje preprostega TypeScripta z Oblikuj (polepšaj) pogosto deluje, vendar so lahko presledki ob tipskih anotacijah nenavadni.

Zakaj je moja zmanjšana koda videti drugače, kot sem jo napisal?

Stisni ovrednoti konstantne izraze, vgradi vrednosti, uporabljene enkrat, in odstrani nedosegljivo kodo. Rezultat se obnaša enako. Odznači Stisni, če želiš odstraniti samo presledke in komentarje.

Ali se mora »modul ES« ujemati z mojo kodo?

Da. Kodo z import ali export je treba zmanjšati kot modul. Klasični skript, zmanjšan kot modul, bi lahko izgubil globalne funkcije, ki jih kličejo drugi skripti, ker se imena na vrhnji ravni potem obravnavajo kot zasebna.

Kaj pa JSON?

JSON je veljaven JavaScript, zato ga sprejmeta oba gumba, vendar namenski oblikovalnik JSON daje boljša sporočila o napakah in razvršča ključe.