Kuhusu zana hii
Upunguzaji wa JavaScript hupunguza saizi ya msimbo wa chanzo kwa kuondoa herufi zisizohitajika na (kwa vidhibiti sahihi) kubadili jina la vigeu vya ndani hadi majina mafupi. Aina ya kwanza - nafasi nyeupe na kuondolewa kwa maoni - ni moja kwa moja na haina hatari. Jambo la pili - kubadilisha jina upya - kunahitaji kuelewa sheria za upeo na ndicho ambacho wahudumu wa uzalishaji kama Terser na esbuild hufanya vyema zaidi.
Zana hii inaangazia uboreshaji salama: kuondoa maoni, kukunja nafasi nyeupe, kuondoa nusukoloni zisizohitajika, na kufupisha ruwaza dhahiri. Ubadilishaji jina upya ni wa kihafidhina - vigeu vya ndani pekee katika wigo wazi ndivyo vinavyoguswa, na majina yanayorejelewa nje huachwa pekee. Matokeo yake yanafanana kiutendaji na chanzo.
Kwa uboreshaji wa kiwango cha uzalishaji, zana maalum (Terser, esbuild, swc) huelewa muundo kamili wa upeo wa ECMAScript na kutoa matokeo madogo zaidi. Zana hii ni ya uboreshaji wa haraka wa upande wa kivinjari wakati usanidi kamili wa muundo haupatikani.
Kwa nini Kupunguza JavaScript
Vifurushi vya JavaScript kwa kawaida ndio nyenzo kubwa zaidi kwenye ukurasa wa kisasa wa wavuti. Upunguzaji mara kwa mara hutoa upunguzaji wa ukubwa wa 30-60% dhidi ya chanzo kisichopunguzwa. Ikijumuishwa na gzip au Brotli, upunguzaji hupungua kwa kiasi fulani, lakini mchanganyiko bado huhifadhi baiti zinazoweza kupimika - haswa kwa watumiaji kwenye miunganisho ya polepole.
JavaScript ya haraka pia inamaanisha Wakati wa Kuingiliana haraka. Hati ndogo hupakuliwa haraka, changanua haraka na utekeleze mapema. Kwa tovuti ambazo TTI huathiri viwango vya kushuka na viwango vya SEO, uboreshaji ni mojawapo ya ushindi wa bei nafuu unaopatikana.
Maelezo ya Kiufundi
Kisafishaji kinasawazisha JavaScript kwa kutumia kichanganuzi kinachoheshimu sintaksia ya ECMAScript. Maoni (laini moja na safu nyingi) huondolewa isipokuwa kwa maoni ya leseni yaliyowekwa alama /*! kiambishi awali. Whitespace inakunjwa isipokuwa pale inapohitajika kisintaksia (kati ya vitambulishi, baada ya manenomsingi).
Ubadilishaji jina wa kihafidhina hufupisha vigeu vya ndani katika mawanda moja kwa moja. Global, mauzo ya nje na majina yaliyoagizwa kutoka nje hayabadilishwi jina - hiyo inaweza kuvunja marejeleo ya nje. Kwa kubadilisha jina kwa kina, tumia Terser au esbuild na uchanganuzi sahihi wa moduli.
Kesi za ukingo: uwekaji wa nusu koloni otomatiki (ASI) inamaanisha kiboreshaji lazima kihifadhi laini mpya katika baadhi ya miktadha ili kuepuka kubadilisha tabia ya programu. Kiolezo halisi, maandishi ya regex, na JSX (ikiwa ingizo linajumuisha) huhifadhiwa haswa kwa sababu yaliyomo yake yanaweza kuwa si salama kubana.
Maswali yanayoulizwa mara kwa mara
- Je, uboreshaji hubadilisha jinsi nambari yangu inavyofanya kazi?
- Hapana. Kupunguza huondoa nafasi nyeupe na maoni, ambayo hayaathiri utekelezaji. Ufupisho unaobadilika (kuchanganya) hubadilisha jina la vigeu vya ndani lakini huhifadhi tabia. Vigeu vya kimataifa na majina yanayosafirishwa huwekwa sawa.
- Je, nipunguze katika maendeleo au uzalishaji?
- Tumia msimbo mdogo pekee katika toleo la umma. Wakati wa uundaji, weka msimbo asili unaoweza kusomeka. Zana nyingi za ujenzi (Webpack, Vite, esbuild) hushughulikia uboreshaji kiotomatiki kama sehemu ya mchakato wa ujenzi wa uzalishaji.
- Kuna tofauti gani kati ya minification na obfuscation?
- Upunguzaji hupunguza ukubwa huku ukiweka msimbo unaoweza kusomeka kiutendaji ikiwa umeumbizwa. Ufafanuzi kimakusudi hufanya msimbo kuwa mgumu kueleweka (usimbaji wa kamba, udhibiti utambazaji wa mtiririko). Chombo hiki kinazingatia upunguzaji wa saizi, sio kufifia.
- Je! ninapaswa kutarajia kupunguzwa kwa saizi ngapi?
- Kwa kawaida 30-60% kabla ya gzip. Nambari iliyopendekezwa vizuri na majina marefu ya kutofautisha huona punguzo kubwa zaidi. Ikiunganishwa na mgandamizo wa gzip, faili za JavaScript mara nyingi ni ndogo kwa 80-90% kuliko chanzo asili.
- Je, msimbo wangu umepakiwa kwenye seva?
- Hapana. Kipunguzaji kinafanya kazi katika kivinjari chako.
- JavaScript yangu itakuwa ndogo kiasi gani?
- Kawaida hupunguzwa kwa 30-60%. Msimbo mzito unaobadilika na vitambulishi virefu hubana zaidi; msimbo mzito wa kujieleza unabana kidogo.
- Je, nipunguze kwa mkono?
- Kamwe. Dumisha JavaScript inayoweza kusomeka katika chanzo. Endesha uboreshaji kama hatua ya ujenzi au kama sehemu ya upelekaji.
- Inafanya kazi kwenye TypeScript?
- TypeScript inahitaji kukusanywa kwa JavaScript kwanza kwa kutumia tsc au esbuild. Mara baada ya kukusanywa, JavaScript inayotokana inaweza kupunguzwa.