ഈ ടൂളിനെ കുറിച്ച്
ജാവാസ്ക്രിപ്റ്റ് മിനിഫിക്കേഷൻ ആവശ്യമില്ലാത്ത പ്രതീകങ്ങൾ നീക്കം ചെയ്തും (ശരിയായ മിനിഫയറുകളോടെ) ലോക്കൽ വേരിയബിളുകളെ ചെറിയ പേരുകളാക്കി പുനർനാമകരണം ചെയ്തും സോഴ്സ് കോഡിൻ്റെ വലുപ്പം കുറയ്ക്കുന്നു. ആദ്യത്തെ വിഭാഗം - വൈറ്റ്സ്പെയ്സും കമൻ്റ് നീക്കംചെയ്യലും - നേരായതും അപകടരഹിതവുമാണ്. രണ്ടാമത്തേത് - വേരിയബിൾ പുനർനാമകരണം - സ്കോപ്പ് നിയമങ്ങൾ മനസ്സിലാക്കേണ്ടതുണ്ട്, കൂടാതെ ടെർസർ, എസ്ബിൽഡ് പോലുള്ള പ്രൊഡക്ഷൻ മിനിഫയറുകൾ ഏറ്റവും മികച്ചത് ചെയ്യുന്നത് ഇതാണ്.
ഈ ഉപകരണം സുരക്ഷിതമായ മിനിഫിക്കേഷനിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നു: അഭിപ്രായങ്ങൾ നീക്കം ചെയ്യുക, വൈറ്റ്സ്പേസ് തകർക്കുക, അനാവശ്യ അർദ്ധവിരാമങ്ങൾ നീക്കം ചെയ്യുക, വ്യക്തമായ പാറ്റേണുകൾ ചുരുക്കുക. വേരിയബിൾ പുനർനാമകരണം യാഥാസ്ഥിതികമാണ് - വ്യക്തമായ സ്കോപ്പിലുള്ള പ്രാദേശിക വേരിയബിളുകൾ മാത്രം സ്പർശിക്കുന്നു, കൂടാതെ ബാഹ്യമായി പരാമർശിച്ച പേരുകൾ മാത്രം അവശേഷിക്കുന്നു. ഫലം പ്രവർത്തനപരമായി ഉറവിടത്തിന് സമാനമാണ്.
പ്രൊഡക്ഷൻ-ഗ്രേഡ് മിനിഫിക്കേഷനായി, ഡെഡിക്കേറ്റഡ് ടൂളുകൾ (Terser, esbuild, swc) മുഴുവൻ ECMAScript സ്കോപ്പ് മോഡൽ മനസിലാക്കുകയും ഗണ്യമായി ചെറിയ ഔട്ട്പുട്ട് നിർമ്മിക്കുകയും ചെയ്യുന്നു. പൂർണ്ണമായ ബിൽഡ് സജ്ജീകരണം ലഭ്യമല്ലാത്തപ്പോൾ ബ്രൗസർ-വശം വേഗത്തിൽ ചെറുതാക്കാനുള്ളതാണ് ഈ ഉപകരണം.
എന്തുകൊണ്ട് ജാവാസ്ക്രിപ്റ്റ് ചെറുതാക്കണം
ഒരു ആധുനിക വെബ്പേജിലെ ഏറ്റവും വലിയ ഒറ്റ വിഭവമാണ് ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലുകൾ. മിനിഫിക്കേഷൻ സ്ഥിരമായി 30-60% വലിപ്പം കുറയ്ക്കുന്നു, അൺമിനിഫൈഡ് സ്രോതസ്സിനെതിരെ. Gzip അല്ലെങ്കിൽ Brotli എന്നിവയുമായി സംയോജിപ്പിച്ചാൽ, കുറവ് കുറച്ച് ചുരുങ്ങുന്നു, പക്ഷേ കോമ്പിനേഷൻ ഇപ്പോഴും അളക്കാവുന്ന ബൈറ്റുകൾ സംരക്ഷിക്കുന്നു - പ്രത്യേകിച്ച് വേഗത കുറഞ്ഞ കണക്ഷനിലുള്ള ഉപയോക്താക്കൾക്ക്.
വേഗതയേറിയ JavaScript അർത്ഥമാക്കുന്നത് ഇൻ്ററാക്ടീവിനുള്ള വേഗതയേറിയ സമയം എന്നാണ്. ചെറിയ സ്ക്രിപ്റ്റുകൾ വേഗത്തിൽ ഡൗൺലോഡ് ചെയ്യുകയും വേഗത്തിൽ പാഴ്സ് ചെയ്യുകയും വേഗത്തിൽ എക്സിക്യൂട്ട് ചെയ്യുകയും ചെയ്യുന്നു. TTI ബൗൺസ് റേറ്റുകളെയും SEO റാങ്കിംഗിനെയും ബാധിക്കുന്ന സൈറ്റുകൾക്ക്, ലഭ്യമായ ഏറ്റവും വിലകുറഞ്ഞ വിജയങ്ങളിലൊന്നാണ് മിനിഫിക്കേഷൻ.
സാങ്കേതിക വിശദാംശങ്ങൾ
ECMAScript വാക്യഘടനയെ മാനിക്കുന്ന ഒരു പാർസർ ഉപയോഗിച്ച് മിനിഫയർ JavaScript ടോക്കണൈസ് ചെയ്യുന്നു. /* എന്ന് അടയാളപ്പെടുത്തിയിട്ടുള്ള ലൈസൻസ് കമൻ്റുകൾ ഒഴികെയുള്ള കമൻ്റുകൾ (സിംഗിൾ-ലൈൻ, മൾട്ടി-ലൈൻ) നീക്കം ചെയ്യപ്പെടും! ഉപസർഗ്ഗം. വാക്യഘടനാപരമായി ആവശ്യമുള്ളിടത്ത് ഒഴികെ വൈറ്റ്സ്പേസ് ചുരുക്കിയിരിക്കുന്നു (ഐഡൻ്റിഫയറുകൾക്കിടയിൽ, കീവേഡുകൾക്ക് ശേഷം).
കൺസർവേറ്റീവ് വേരിയബിൾ പുനർനാമകരണം ലോക്കൽ വേരിയബിളുകളെ നേരായ സ്കോപ്പുകളിൽ ചുരുക്കുന്നു. ആഗോള, കയറ്റുമതി, ഇറക്കുമതി ചെയ്ത പേരുകൾ പുനർനാമകരണം ചെയ്യപ്പെടുന്നില്ല - അത് ബാഹ്യ റഫറൻസുകളെ തകർക്കും. ആഴത്തിലുള്ള പുനർനാമകരണത്തിനായി, ടെർസർ ഉപയോഗിക്കുക അല്ലെങ്കിൽ ശരിയായ മൊഡ്യൂൾ-അവെയർ വിശകലനം ഉപയോഗിച്ച് എസ്ബിൽഡ് ഉപയോഗിക്കുക.
എഡ്ജ് കേസുകൾ: ഓട്ടോമാറ്റിക് അർദ്ധവിരാമം ഉൾപ്പെടുത്തൽ (ASI) എന്നാൽ പ്രോഗ്രാം സ്വഭാവം മാറ്റുന്നത് ഒഴിവാക്കാൻ മിനിഫയർ ചില സന്ദർഭങ്ങളിൽ ന്യൂലൈനുകൾ സംരക്ഷിക്കണം. ടെംപ്ലേറ്റ് ലിറ്ററലുകൾ, റീജക്സ് ലിറ്ററലുകൾ, JSX (ഇൻപുട്ടിൽ അത് ഉൾപ്പെട്ടിട്ടുണ്ടെങ്കിൽ) എന്നിവ കൃത്യമായി സംരക്ഷിക്കപ്പെടുന്നു, കാരണം അവയുടെ ഉള്ളടക്കങ്ങൾ കംപ്രസ് ചെയ്യാൻ സുരക്ഷിതമല്ലായിരിക്കാം.
പതിവ് ചോദ്യങ്ങള്
- എൻ്റെ കോഡ് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നത് മിനിഫിക്കേഷൻ മാറ്റുമോ?
- ഇല്ല. മിനിഫിക്കേഷൻ വൈറ്റ്സ്പെയ്സും കമൻ്റുകളും നീക്കംചെയ്യുന്നു, അത് നിർവ്വഹണത്തെ ബാധിക്കില്ല. വേരിയബിൾ ഷോർട്ടനിംഗ് (മാംഗ്ലിംഗ്) ലോക്കൽ വേരിയബിളുകളെ പുനർനാമകരണം ചെയ്യുന്നു, പക്ഷേ സ്വഭാവം സംരക്ഷിക്കുന്നു. ഗ്ലോബൽ വേരിയബിളുകളും കയറ്റുമതി ചെയ്ത പേരുകളും കേടുകൂടാതെ സൂക്ഷിക്കുന്നു.
- വികസനത്തിലോ ഉൽപ്പാദനത്തിലോ ഞാൻ ചെറുതാക്കണോ?
- ഉൽപ്പാദനത്തിൽ മിനിഫൈഡ് കോഡ് മാത്രം ഉപയോഗിക്കുക. വികസന സമയത്ത്, യഥാർത്ഥ റീഡബിൾ കോഡ് സൂക്ഷിക്കുക. മിക്ക ബിൽഡ് ടൂളുകളും (Webpack, Vite, esbuild) പ്രൊഡക്ഷൻ ബിൽഡ് പ്രോസസിൻ്റെ ഭാഗമായി മിനിഫിക്കേഷൻ സ്വയമേവ കൈകാര്യം ചെയ്യുന്നു.
- ചെറുതാക്കലും അവ്യക്തതയും തമ്മിലുള്ള വ്യത്യാസം എന്താണ്?
- ഫോർമാറ്റ് ചെയ്താൽ കോഡ് പ്രവർത്തനക്ഷമമായി വായിക്കാൻ കഴിയുന്ന തരത്തിൽ സൂക്ഷിക്കുമ്പോൾ മിനിഫിക്കേഷൻ വലുപ്പം കുറയ്ക്കുന്നു. അവ്യക്തമാക്കൽ മനഃപൂർവം കോഡ് മനസ്സിലാക്കാൻ ബുദ്ധിമുട്ടാക്കുന്നു (സ്ട്രിംഗ് എൻകോഡിംഗ്, കൺട്രോൾ ഫ്ലോ ഫ്ലാറ്റനിംഗ്). ഈ ഉപകരണം വലുപ്പം കുറയ്ക്കുന്നതിലാണ് ശ്രദ്ധ കേന്ദ്രീകരിക്കുന്നത്, അവ്യക്തതയല്ല.
- എത്ര വലിപ്പം കുറയ്ക്കാൻ ഞാൻ പ്രതീക്ഷിക്കണം?
- സാധാരണഗതിയിൽ 30-60% gzip-ന് മുമ്പ്. ദൈർഘ്യമേറിയ വേരിയബിൾ പേരുകളുള്ള നല്ല അഭിപ്രായമുള്ള കോഡ് ഏറ്റവും വലിയ കുറവുകൾ കാണുന്നു. Gzip കംപ്രഷനുമായി സംയോജിപ്പിച്ച്, JavaScript ഫയലുകൾ യഥാർത്ഥ ഉറവിടത്തേക്കാൾ 80-90% ചെറുതാണ്.
- എൻ്റെ കോഡ് ഒരു സെർവറിലേക്ക് അപ്ലോഡ് ചെയ്തിട്ടുണ്ടോ?
- ഇല്ല. മിനിഫയർ നിങ്ങളുടെ ബ്രൗസറിൽ പ്രവർത്തിക്കുന്നു.
- എൻ്റെ JavaScript എത്ര ചെറുതായിരിക്കും?
- സാധാരണയായി 30-60% കുറവ്. ദൈർഘ്യമേറിയ ഐഡൻ്റിഫയറുകളുള്ള വേരിയബിൾ-ഹെവി കോഡ് കൂടുതൽ കംപ്രസ് ചെയ്യുന്നു; എക്സ്പ്രഷൻ-ഹെവി കോഡ് കുറച്ച് കംപ്രസ് ചെയ്യുന്നു.
- ഞാൻ കൈകൊണ്ട് ചെറുതാക്കണോ?
- ഒരിക്കലും. ഉറവിടത്തിൽ വായിക്കാനാകുന്ന JavaScript നിലനിർത്തുക. ഒരു ബിൽഡ് സ്റ്റെപ്പ് അല്ലെങ്കിൽ വിന്യാസത്തിൻ്റെ ഭാഗമായി മിനിഫിക്കേഷൻ പ്രവർത്തിപ്പിക്കുക.
- ഇത് ടൈപ്പ്സ്ക്രിപ്റ്റിൽ പ്രവർത്തിക്കുന്നുണ്ടോ?
- tsc അല്ലെങ്കിൽ esbuild ഉപയോഗിച്ച് ടൈപ്പ്സ്ക്രിപ്റ്റ് ആദ്യം JavaScript-ലേക്ക് കംപൈൽ ചെയ്യേണ്ടതുണ്ട്. കംപൈൽ ചെയ്തുകഴിഞ്ഞാൽ, തത്ഫലമായുണ്ടാകുന്ന ജാവാസ്ക്രിപ്റ്റ് ചെറുതാക്കാം.