Pytanie Jak działa minifikacja i czy wpływa na obiekty zagnieżdżone?


Jak radzi sobie minifikacja $scope.obj.subObj = { key: val ...};

z tego co rozumiem, że ostatnie użycie zmiennych pozostaje niezmienione,

ale gdybym miał element html

<div>{{obj.subObj.key}}</div>

czy wynik minify skróci kod do a.b.c.key? wybacz mi, że pytam w amatorski sposób, ale próbuję zrozumieć, jak działa mechanizm javascriptminification.


11
2018-06-24 17:13


pochodzenie


Przyzwoity minifender nie skróci właściwości publicznych, które są używane gdzie indziej. Którego używasz? - Bergi
Z którego narzędzia korzystasz do zminimalizowania? Niektóre narzędzia kompresują interfejsy, inne - nie. Na przykład kompresor YUI nie zmieni nazw zmiennych globalnych i ich zawartości - tylko argument funkcji i nazwy zmiennych lokalnych zostaną zminimalizowane. Możesz go bezpiecznie używać. - Egor Nepomnyaschih


Odpowiedzi:


Od: http://en.wikipedia.org/wiki/Minification_(programming)

Minimalizacja (również minimalizacja lub minimalizacja) w językach programowania komputerowego, a zwłaszcza w JavaScript, jest procesem usuwania wszystkich niepotrzebnych znaków z kodu źródłowego, bez zmiany jego funkcjonalności.

Tak więc, jeśli minifier jest w stanie wykryć, że może bezpiecznie przepisać $scope.obj.subObj do a.b.c to będzie.

Z reguły jednak każda zmienna pochodząca z zakresu globalnego, np document, window lub jQuery nie zostanie minified, ponieważ może na nim polegać inny kod (poza zakresem tego pliku).

Następnym krokiem do minifikacji jest użycie kompresor jak Google Closure Compiler lub YUI Compressor Yahoo. Te programy są zazwyczaj bardziej wydajnymi minifigurami. Mogą na przykład zastąpić wywołanie funkcji za pomocą funkcji in-line lub zmienić określoną metodę za pomocą krótszej lub szybszej metody. Wymaga to dużej wiedzy na temat JavaScript i optymalizacji wydajności.

Możesz zwiększyć współczynnik kompresji, rezygnując z pewnych wymagań kompatybilności, ale okazało się, że wynikowy kod jest bardzo niestabilny, więc nie sądzę, że jesteśmy już na miejscu :)


9
2018-06-24 17:19