О овом алату
ЈаваСцрипт минификација смањује величину изворног кода уклањањем непотребних знакова и (са одговарајућим минифификаторима) преименовањем локалних променљивих у краћа имена. Прва категорија — уклањање размака и коментара — је једноставна и без ризика. Друго — преименовање променљиве — захтева разумевање правила опсега и оно што продукцијски минифификатори као што су Терсер и есбуилд најбоље раде.
Овај алат се фокусира на безбедно умањивање: уклањање коментара, сажимање размака, уклањање сувишних тачака и зареза и скраћивање очигледних образаца. Преименовање променљивих је конзервативно — додирују се само локалне променљиве у јасним опсегу, а имена на која се екстерно позивају остају сама. Резултат је функционално идентичан извору.
За минимизацију на нивоу производње, наменски алати (Терсер, есбуилд, свц) разумеју потпуни ЕЦМАСцрипт модел опсега и производе знатно мањи излаз. Овај алат је за брзу минимизацију на страни прегледача када није доступна комплетна конфигурација.
Зашто минимизирати ЈаваСцрипт
ЈаваСцрипт пакети су обично највећи појединачни ресурс на модерној веб страници. Минификација рутински производи смањење величине за 30–60% у односу на неминификовани извор. У комбинацији са гзип-ом или Бротли-јем, смањење се донекле смањује, али комбинација и даље штеди мерљиве бајтове — посебно за кориснике на спорим везама.
Бржи ЈаваСцрипт значи и брже време за интерактивност. Мање скрипте се преузимају брже, брже анализирају и брже се извршавају. За сајтове где ТТИ утиче на стопу посете само једне странице и СЕО рангирање, минификација је једна од најјефтинијих доступних победа.
Тецхницал Детаилс
Минифиер токенизује ЈаваСцрипт користећи парсер који поштује синтаксу ЕЦМАСцрипт. Коментари (једноредни и вишередни) се уклањају осим коментара лиценце означених са /*! префикс. Размак је скупљен осим тамо где је то синтаксички потребно (између идентификатора, после кључних речи).
Конзервативно преименовање променљивих скраћује локалне варијабле у једноставним обимима. Глобални, извозни и увезени називи се не преименују — то би прекинуло спољне референце. За дубинско преименовање користите Терсер или есбуилд са одговарајућом анализом свесне модула.
Рубни случајеви: аутоматско уметање тачке зарез (АСИ) значи да минифификатор мора да сачува нове редове у неким контекстима да би избегао промену понашања програма. Литерали шаблона, литерали регуларних израза и ЈСКС (ако га унос укључује) се чувају управо зато што њихов садржај можда није сигуран за компримовање.
Често постављана питања
- Да ли минимификација мења начин на који мој код функционише?
- Не. Минификација уклања размак и коментаре, који не утичу на извршење. Скраћивање променљивих (манглинг) преименује локалне варијабле, али чува понашање. Глобалне варијабле и извезена имена остају нетакнути.
- Да ли треба да минимизирам у развоју или производњи?
- Користите само минимизирани код у производњи. Током развоја, задржите оригинални читљив код. Већина алата за прављење (Вебпацк, Вите, есбуилд) аутоматски обрађује минимизацију као део производног процеса изградње.
- Која је разлика између минификације и замагљивања?
- Минификација смањује величину, а истовремено одржава код функционално читљивим ако је форматиран. Замагљивање намерно отежава разумевање кода (кодирање низова, изравнавање тока контроле). Овај алат се фокусира на смањење величине, а не на замагљивање.
- Колико смањење величине треба да очекујем?
- Обично 30-60% пре гзип-а. Добро коментарисан код са дугим именима променљивих види највећа смањења. У комбинацији са гзип компресијом, ЈаваСцрипт датотеке су често 80-90% мање од оригиналног извора.
- Да ли је мој код постављен на сервер?
- Не. Минифиер ради у вашем претраживачу.
- Колико ће мој ЈаваСцрипт бити мањи?
- Обично смањење од 30-60%. Променљиво тежак код са дугим идентификаторима компресује више; код који је тежак до израза мање се компресује.
- Да ли да минимизирам ручно?
- Никада. Одржавајте читљив ЈаваСцрипт у изворном коду. Покрените минимизацију као корак изградње или као део имплементације.
- Да ли ради на ТипеСцрипт-у?
- ТипеСцрипт треба прво да се компајлира у ЈаваСцрипт користећи тсц или есбуилд. Једном преведен, резултирајући ЈаваСцрипт се може умањити.