apa perbedaan / keuntungan / kerugian dari penulisan script di bagian bawah halaman dan penulisan script
$(document).ready(function(){});
javascript
jquery
Sourav
sumber
sumber
Jawaban:
Sangat sedikit dalam dan dari dirinya sendiri, DOM akan siap untuk Anda operasikan (saya gugup tentang itu sampai saya membaca ini dari Google ). Jika Anda menggunakan trik akhir halaman, kode Anda mungkin dipanggil sedikit, sedikit lebih cepat, tetapi tidak ada yang penting. Namun yang lebih penting, pilihan ini berkaitan dengan tempat Anda menautkan JavaScript ke halaman.
Jika Anda menyertakan
script
tag Anda dihead
dan mengandalkanready
, browser menemukanscript
tag Anda sebelum menampilkan apa pun kepada pengguna. Dalam kejadian normal, browser berhenti menderu dan pergi dan mengunduh skrip Anda, menjalankan penerjemah JavaScript, dan menyerahkan skrip ke sana, lalu menunggu sementara penerjemah memproses skrip (dan kemudian jQuery mengawasi dengan berbagai cara agar DOM siap). (Saya mengatakan "dalam hal biasa" karena beberapa browser mendukung atributasync
ataudefer
padascript
tag.)Jika Anda menyertakan
script
tag Anda di akhirbody
elemen, browser tidak melakukan semua itu sampai sebagian besar halaman Anda sudah ditampilkan kepada pengguna. Ini meningkatkan persepsi waktu buka halaman Anda.Jadi untuk mendapatkan waktu muat yang dipersepsikan terbaik, letakkan skrip Anda di bagian bawah halaman. (Ini juga pedoman dari orang-orang Yahoo .) Dan jika Anda akan melakukannya, maka tidak perlu menggunakan
ready
, meskipun tentu saja Anda bisa jika Anda suka.Ada harga untuk itu, meskipun: Anda harus yakin bahwa hal-hal yang dapat dilihat pengguna siap untuk diinteraksikan. Dengan memindahkan waktu pengunduhan ke setelah sebagian besar halaman ditampilkan, Anda meningkatkan kemungkinan pengguna mulai berinteraksi dengan halaman sebelum skrip Anda dimuat. Itulah salah satu argumen balasan untuk meletakkan
script
tag di akhir. Seringkali itu bukan masalah, tetapi Anda harus melihat halaman Anda untuk melihat apakah itu benar dan, jika demikian, bagaimana Anda ingin menghadapinya. (Anda dapat meletakkan elemen sebaris kecil di dalamnya yang menyiapkan penangan kejadian di seluruh dokumen untuk mengatasi hal ini. Dengan begitu, Anda mendapatkan waktu muat yang lebih baik tetapi jikascript
head
mereka mencoba melakukan sesuatu terlalu dini, Anda dapat memberi tahu mereka itu atau, lebih baik, mengantrekan hal yang ingin mereka lakukan dan melakukannya ketika skrip lengkap Anda siap.)sumber
Halaman Anda akan dimuat lebih lambat dengan menyebarkan
$(document).ready()
skrip di seluruh DOM (bukan semuanya di bagian akhir) karena memerlukan jQuery untuk dimuat secara sinkron terlebih dahulu.$ = jQuery
. Jadi, Anda tidak dapat menggunakan$
skrip Anda tanpa memuat jQuery terlebih dahulu. Pendekatan ini memaksa Anda untuk memuat jQuery di dekat bagian awal halaman, yang akan menghentikan pemuatan halaman Anda hingga jQuery diunduh sepenuhnya.Anda juga tidak dapat
async
memuat jQuery karena dalam banyak kasus,$(document).ready()
skrip Anda akan mencoba dieksekusi sebelum jQuery sepenuhnya async dimuat dan menyebabkan kesalahan, karena sekali lagi,$
belum ditentukan.Karena itu, ada cara untuk mengelabui sistem. Pada dasarnya pengaturan
$
sama dengan fungsi yang mendorong$(document).ready()
fungsi ke dalam antrian / larik. Kemudian di bagian bawah halaman, muat jQuery kemudian lakukan iterasi melalui antrian dan jalankan masing-masing$(document).ready()
satu per satu. Ini memungkinkan Anda untuk menunda jQuery ke bagian bawah halaman tetapi masih digunakan$
di atasnya di DOM. Saya pribadi belum menguji seberapa baik ini bekerja, tetapi teorinya bagus. Ide ini sudah ada sejak lama, tetapi saya sangat, sangat jarang melihatnya diimplementasikan. Tapi sepertinya ide yang bagus:http://samsaffron.com/archive/2012/02/17/stop-paying-your-jquery-tax
sumber