sayfanın altına senaryo yazmanın ve senaryoyu yazmanın farkı / avantajı / dezavantajı nedir
$(document).ready(function(){});
Yanıtlar:
Kendi başına çok az şey, her iki durumda da DOM sizin üzerinde işlem yapmanız için hazır olacaktır (bunu Google'dan okuyana kadar bu konuda gergindim ). Sayfa sonu hilesi kullanırsanız, kodunuz en ufak, en ufak bir zamanda daha erken çağrılabilir, ancak hiçbir önemi olmayacaktır. Ancak daha da önemlisi, bu seçim JavaScript'inizi sayfaya nereye bağladığınızla ilgilidir.
scriptEtiketinizi 'e eklerseniz headve güvenirseniz ready, tarayıcı script, kullanıcıya herhangi bir şey göstermeden önce etiketinizle karşılaşır . Normal olaylar sırasında, tarayıcı bir çığlık atarak durur ve betiğinizi indirir ve indirir, JavaScript yorumlayıcısını çalıştırır ve komut dosyasını ona verir, ardından yorumlayıcı komut dosyasını işlerken bekler (ve ardından jQuery çeşitli şekillerde izler) DOM'un hazır olması için). (Bazı tarayıcılar etiketlerde asyncveyadefer özniteliklerini desteklediğinden "normal gidişat" diyorum script.)
scriptEtiketinizi bodyöğenin sonuna eklerseniz , sayfanız büyük ölçüde kullanıcıya zaten görüntülenene kadar tarayıcı bunların hepsini yapmaz. Bu, sayfanız için algılanan yükleme süresini iyileştirir.
Bu nedenle, algılanan en iyi yükleme süresini elde etmek için komut dosyanızı sayfanın altına yerleştirin. (Bu aynı zamanda Yahoo'dakilerin rehberidir .) Ve eğer bunu yapacaksanız, o zaman kullanmaya gerek yoktur ready, elbette isterseniz yapabilirsiniz.
Yine de bunun bir bedeli var: Kullanıcının görebileceği şeylerin etkileşime girmeye hazır olduğundan emin olmalısınız. İndirme süresini sayfanın büyük ölçüde görüntülendikten sonrasına taşıyarak, komut dosyanız yüklenmeden önce kullanıcının sayfayla etkileşime girme olasılığını artırırsınız. Bu, scriptetiketi sonuna koymanın karşı argümanlarından biridir . Çoğunlukla bu bir sorun değildir, ancak bunun olup olmadığını ve eğer öyleyse, bununla nasıl başa çıkmak istediğinizi görmek için sayfanıza bakmanız gerekir. (Küçük bir koyabilirsiniz satır içi script de elemanı headbununla başa çıkmak için bir belge çapında olay işleyicisi kadar o setleri. Bu şekilde, iyileştirilmiş yüklenme süresini olsun ama eğer bir şeyi çok erken yapmaya çalışırlarsa, onlara bunu söyleyebilirsiniz ya da daha iyisi, yapmak istedikleri şeyi sıraya koyun ve tam senaryonuz hazır olduğunda bunu yapın.)
Önce $(document).ready()jQuery'nin eşzamanlı olarak yüklenmesini gerektirdiğinden, sayfanız komut dosyalarını DOM genelinde dağıtarak (sonunda hepsi yerine) daha yavaş yüklenecektir.
$ = jQuery. Bu nedenle $, jQuery'yi yüklemeden komut dosyalarınızda kullanamazsınız . Bu yaklaşım, sizi jQuery'yi sayfanın başlangıcına yakın bir yerde yüklemeye zorlar, bu da jQuery tamamen indirilene kadar sayfa yüklemenizi durdurur .
Sen olamaz asyncjQuery yüklemek ya birçok durumda, sizin için $(document).ready()komut (lar) yine çünkü, jQuery tamamen zaman uyumsuz yüklenmeden önce yürütmek ve hataya neden çalışacağız $henüz tanımlanmadı.
Bununla birlikte, sistemi kandırmanın bir yolu var. Esasen $, $(document).ready()işlevleri bir kuyruğa / diziye iten bir işleve eşit ayarlama . Ardından sayfanın alt kısmında jQuery'yi yükleyin, ardından kuyrukta yineleyin ve her $(document).ready()birini birer birer yürütün . Bu, jQuery'yi sayfanın alt kısmına ertelemenize, ancak yine $de DOM'da onun üzerinde kullanmanıza olanak tanır . Şahsen bunun ne kadar iyi çalıştığını test etmedim, ancak teori sağlam. Fikir bir süredir ortalıkta dolaşıyor ama çok, çok nadiren uygulandığını gördüm. Ama harika bir fikir gibi görünüyor:
http://samsaffron.com/archive/2012/02/17/stop-paying-your-jquery-tax