Açısal CLI Bütçeleri nedir?
Bütçeler, Angular CLI'nin daha az bilinen özelliklerinden biridir. Oldukça küçük ama çok güzel bir özellik!
Uygulamalar işlevsellik açısından büyüdükçe boyutları da büyür. Bütçeler, uygulamanızın bölümlerinin belirlediğiniz sınırlar içinde kalmasını sağlamak için yapılandırmanızda bütçe eşikleri belirlemenize izin veren bir Angular CLI özelliğidir - Resmi Belgeler
Ya da başka bir deyişle, Angular uygulamamızı, derleme süreci tarafından üretilen paketler adı verilen bir dizi derlenmiş JavaScript dosyası olarak tanımlayabiliriz. Açısal bütçeler, bu paketlerin beklenen boyutlarını yapılandırmamıza olanak tanır. Dahası, bir uyarı almak istediğimizde veya paket boyutu çok fazla kontrolden çıkarsa bir hatayla derlemede başarısız olduğumuz durumlar için eşikler yapılandırabiliriz!
Bütçe Nasıl Tanımlanır?
Açısal bütçeler angular.json dosyasında tanımlanır. Bütçeler proje başına tanımlanır, bu da mantıklıdır çünkü bir çalışma alanındaki her uygulamanın farklı ihtiyaçları vardır.
Pragmatik düşünürsek, yalnızca üretim yapıları için bütçe tanımlamak mantıklıdır. Ürün derlemesi, ağaç sallama ve kod minimizasyonu gibi tüm optimizasyonları uyguladıktan sonra "gerçek boyutlu" paketler oluşturur.
Oops, bir yapı hatası! Maksimum paket boyutu aşıldı. Bu, bize bir şeylerin ters gittiğini söyleyen harika bir sinyaldir ...
- Özelliğimizi denemiş ve düzgün temizlememiş olabiliriz
- Araçlarımız yanlış gidebilir ve kötü bir otomatik içe aktarma gerçekleştirebilir veya önerilen ithalat listesinden kötü bir öğe seçeriz
- Uygun olmayan konumlardaki tembel modüllerden içeri aktarabiliriz
- Yeni özelliğimiz gerçekten büyük ve mevcut bütçelere uymuyor
İlk Yaklaşım: Dosyalarınız gzip'lenmiş mi?
Genel olarak, gzip ile sıkıştırılmış dosya, orijinal dosyanın boyutunun yalnızca yaklaşık% 20'sine sahiptir ve bu, uygulamanızın ilk yükleme süresini önemli ölçüde azaltabilir. Dosyalarınızı gzip'lemiş olup olmadığınızı kontrol etmek için, geliştirici konsolunun ağ sekmesini açmanız yeterlidir. "Yanıt Başlıkları" nda, "Content-Encoding: gzip" i görürseniz, gitmekte fayda var.
Gzip nasıl yapılır?
Angular uygulamanızı çoğu bulut platformunda veya CDN'de barındırıyorsanız, muhtemelen bunu sizin için hallettikleri için bu sorun hakkında endişelenmemelisiniz. Bununla birlikte, Angular uygulamanıza hizmet veren kendi sunucunuz (NodeJS + expressJS gibi) varsa, dosyaların gzipli olup olmadığını kesinlikle kontrol edin. Aşağıda, bir NodeJS + expressJS uygulamasında statik varlıklarınızı gzip ile sıkıştırmak için bir örnek verilmiştir. Bu ölü basit ara yazılım "sıkıştırmasının" paket boyutunuzu 2.21MB'den 495.13KB'ye düşüreceğini tahmin edemezsiniz.
const compression = require('compression')
const express = require('express')
const app = express()
app.use(compression())
İkinci Yaklaşım :: Açısal paketinizi analiz edin
Paket boyutunuz çok büyürse, paketinizi analiz etmek isteyebilirsiniz çünkü uygun olmayan büyük boyutlu bir üçüncü taraf paketi kullanmış olabilirsiniz veya artık kullanmıyorsanız bazı paketleri kaldırmayı unutmuş olabilirsiniz. Webpack, bize bir web paketi paketinin bileşimi hakkında görsel bir fikir vermek için harika bir özelliğe sahiptir.
Bu grafiği elde etmek çok kolay.
npm install -g webpack-bundle-analyzer
- Angular uygulamanızda çalıştırın
ng build --stats-json
(bayrak kullanmayın --prod
). Etkinleştirdiğinizde --stats-json
, ek bir dosya stats.json alacaksınız
- Son olarak, çalıştırın
webpack-bundle-analyzer ./dist/stats.json
ve tarayıcınız localhost: 8888'deki sayfayı açacaktır. Onunla iyi eğlenceler.
ref 1: Angular CLI Bütçeleri Günümü Nasıl Kurtardı ve Sizinkini Nasıl Kurtarabilirler?
ref 2: Açısal paket boyutunu 4 adımda optimize edin