npm gibi kayıt defterleri, herkesin yarım milyondan fazla herkese açık paketi indirip kullanmasına olanak tanıyarak JavaScript dünyasını daha iyi için dönüştürdü. Ancak genellikle tam olarak kullanmadığımız kitaplıkları ekleriz. Bu sorunu düzeltmek için kullanılmayan kodu tespit etmek üzere paketinizi analiz edin, ardından kullanılmayan ve gereksiz kitaplıkları kaldırın.
Core Web Vitals üzerindeki etkisi
Kullanılmayan kodu kaldırarak web sitenizin Core Web Vitals metriklerini iyileştirebilirsiniz. Örneğin, gereksiz yere büyük öğeler diğer kaynaklarla bant genişliği için rekabet ettiğinde Largest Contentful Paint, kullanılmayan koddan etkilenebilir. Yalnızca istemcide işaretlemeyi oluşturan büyük JavaScript öğeleri LCP adaylarına referans içeriyorsa LCP de etkilenebilir. Bu durumda bu kaynakların yüklenebileceği zaman geciktirilir.
Kullanılmayan JavaScript'in bile indirilmesi, ayrıştırılması, derlenmesi ve ardından yürütülmesi gerektiğinden, kullanılmayan kod Interaction to Next Paint (INP)'yi de etkileyebilir. Kullanılmayan kod; kaynak yükleme süresinde, bellek kullanımında ve ana iş parçacığı etkinliğinde gereksiz gecikmelere yol açabilir ve bu gecikmeler, sayfa yanıtlarının düşük olmasına yol açabilir.
Bu kılavuzda, projenizin kod tabanını kullanılmayan kodlar için nasıl analiz edeceğiniz açıklanmakta ve üretimde kullanıcılarınıza gönderdiğiniz JavaScript öğelerinden kullanılmayan kodları ayıklamak için stratejiler sunulmaktadır.
Paketinizi analiz etme
Geliştirici Araçları, tüm ağ isteklerinin boyutunu size gösterebilir:
- Geliştirici Araçları'nı açmak için "Kontrol+Üst Karakter+J" (veya Mac'te "Komut+Option+J") tuşlarına basın.
- Ağ sekmesini tıklayın.
- Önbelleği devre dışı bırak onay kutusunu işaretleyin.
- Sayfayı tekrar yükleyin.
DevTools'daki Kapsam sekmesi, uygulamanızda ne kadar CSS ve JS kodunun kullanılmadığını da gösterir.
Node KSA üzerinden tam bir Lighthouse yapılandırması belirterek, uygulamanızla birlikte ne kadar kullanılmayan kod gönderildiğini izlemek için Kullanılmayan JavaScript'i azalt denetimini çalıştırabilirsiniz.
Paketleyici olarak webpack kullanıyorsanız Webpack Bundle Analyzer, paketi oluşturan öğeleri incelemenize yardımcı olabilir. Eklentiyi, herhangi bir eklenti gibi web paketi yapılandırmaları dosyanıza ekleyin:
module.exports = {
//...
plugins: [
//...
new BundleAnalyzerPlugin()
]
}
Webpack genellikle tek sayfalık uygulamalar derlemek için kullanılsa da Parcel ve Rollup gibi diğer paketleyiciler de paketinizi analiz etmek için kullanabileceğiniz görselleştirme araçlarına sahiptir.
Uygulamayı bu eklentiyle yeniden yüklediğinizde tüm paketinizin yakınlaştırılabilir ağaç haritası gösterilir.
Bu görselleştirme, paketinizin hangi bölümlerinin diğerlerinden daha büyük olduğunu gösterir. Böylece, uygulamanızın içe aktardığı kitaplıkların sayısını ve boyutunu daha iyi anlayabilirsiniz. Bu, kullanılmayan veya gereksiz kitaplıklar kullanıp kullanmadığınızı belirlemenize yardımcı olabilir.
Kullanılmayan kitaplıkları kaldırın
Önceki ağaç haritası resminde, tek bir @firebase
alanında oldukça fazla paket var. Web sitenizin yalnızca Firebase veritabanı bileşenine ihtiyacı varsa içe aktarma işlemlerini bu kitaplığı alacak şekilde güncelleyin:
import firebase from 'firebase';
import firebase from 'firebase/app';
import 'firebase/database';
Hiçbir yerde kullanılmadığından emin olduğunuz gizemli görünümlü paket için bir adım geri çekilin ve hangi üst düzey bağımlılıklarınızın bu paketi kullandığına bakın. Yalnızca ihtiyacınız olan bileşenleri içe aktarmanın bir yolunu bulmaya çalışın. Kullanmadığınız kitaplıkları kaldırın. Kitaplık ilk sayfa yüklemesi için gerekli değilse gecikmeli yüklemeyi deneyin.
Webpack kullanıyorsanız popüler kitaplıklardaki kullanılmayan kodu otomatik olarak kaldıran eklentilerin listesine göz atın.
Gereksiz kitaplıkları kaldırma
Tüm kitaplıklar parçalara ayrılıp seçerek içe aktarılamaz. Bu senaryolarda, kitaplığı tamamen kaldırıp kaldıramayacağınızı düşünün. Özel bir çözüm geliştirmek veya daha hafif bir alternatiften yararlanmak, her zaman göz önünde bulundurmaya değer seçenekler olacaktır. Bununla birlikte, bir kitaplığı uygulamanızdan tamamen kaldırmadan önce bu iki stratejinin karmaşıklığını ve çabalarını değerlendirmeniz önemlidir.