Neden İkisi de ¯ \ _ (ツ) _ / ¯? Scott Hanselman'ın performans kazanımları için CDN kullanma konusunda harika bir makalesi var, ancak CDN'nin çökmesi durumunda yerel bir kopyaya geri dönüyor .
Bootstrap'e özgü olarak, yerel bir yedeğe sahip bir CDN'den yüklemek için aşağıdakileri yapabilirsiniz :
<head>
<!-- Bootstrap CSS CDN -->
<link rel="stylesheet" href="~https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css">
<!-- Bootstrap CSS local fallback -->
<script>
var test = document.createElement("div")
test.className = "hidden d-none"
document.head.appendChild(test)
var cssLoaded = window.getComputedStyle(test).display === "none"
document.head.removeChild(test)
if (!cssLoaded) {
var link = document.createElement("link");
link.type = "text/css";
link.rel = "stylesheet";
link.href = "lib/bootstrap.min.css";
document.head.appendChild(link);
}
</script>
</head>
<body>
<!-- APP CONTENT -->
<!-- jQuery CDN -->
<script src="~https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<!-- jQuery local fallback -->
<script>window.jQuery || document.write('<script src="lib/jquery.min.js"><\/script>')</script>
<!-- Bootstrap JS CDN -->
<script src="~https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!-- Bootstrap JS local fallback -->
<script>if(typeof($.fn.modal) === 'undefined') {document.write('<script src="lib/bootstrap.min.js"><\/script>')}</script>
</body>
Güncellemeler
En İyi Uygulamalar
En İyi Uygulamalar ile ilgili sorunuz için , bir üretim ortamında CDN kullanmak için çok iyi nedenler vardır :
- Mevcut paralellikleri artırır .
- Önbellek vurma olasılığını artırır .
- Yükün mümkün olduğunca küçük olmasını sağlar .
- Sunucunuz tarafından kullanılan bant genişliği miktarını azaltır .
- Kullanıcının coğrafi olarak yakın bir yanıt almasını sağlar .
Sürüm oluşturma endişeniz için, tuz ile ağırlığına değer herhangi bir CDN, kütüphanenin belirli bir sürümünü hedeflemenize izin verir, böylece her bir sürümle yanlışlıkla kırma değişiklikleri yapmazsınız.
kullanma document.write
MDN'ye göre document.write
Not : document.write
belge akışına yazarken , document.write
kapalı (yüklü) bir belgeyi çağırmak document.open
, belgeyi temizleyecek otomatik olarak arama yapar .
Ancak, burada kullanım kasıtlıdır. DOM tamamen yüklenmeden ve doğru sırada kodun yürütülmesi gerekir. JQuery başarısız olursa, jQuery'ye dayanan bootstrap yüklemeye çalışmadan önce belgeyi satır içine enjekte etmemiz gerekir.
Yükten Sonra HTML Çıkışı :
Yine de bu örneklerin her ikisinde de, belge açıkken çağırıyoruz, böylece belgenin tamamını değiştirmek yerine içeriği satır içinde olmalıdır. Sonuna kadar bekliyorsanız, document.body.appendChild
dinamik kaynaklar eklemek için yerine geçmeniz gerekir .
Bir yana : MVC 6'da bunu bağlantı ve komut dosyası etiketi yardımcılarıyla yapabilirsiniz
rgb(51, 51, 51)
riskli görünüyor - ya bir kişi rengi değiştirir ve güncellemeyi unutursa? Kullanılabilecek daha istikrarlı bir özellik var mı?