Artikel ini akan membincangkan tentang DOM maya dalam vue, memperkenalkan apa itu dom maya, faedah memperkenalkan vdom, dan sebab vue menggunakan vdom, saya harap ia akan membantu semua orang.
Hampir semua rangka kerja sedia ada memperkenalkan DOM maya untuk mengabstrakkan DOM sebenar, yang kini dikenali sebagai VNode dan VDOM Jadi mengapa kita perlu memperkenalkan DOM maya? Artikel ini akan menjawab soalan ini! (Belajar perkongsian video: Tutorial pengenalan Vuejs)
Dom mayaSeperti namanya, ia adalah maya. objek dom, sendiri Ia adalah objek JavaScript, tetapi ia menerangkan struktur paparan melalui atribut yang berbeza.
1. Abstrak nod elemen sebenar ke dalam VNode, dengan berkesan mengurangkan bilangan operasi langsung pada dom, dengan itu meningkatkan prestasi program
2 Mudah untuk pelaksanaan merentas platform
SSR(Nuxt.js/Next.js)
, aplikasi asli (Weex/React Native
), program kecil (mpvue/uni-app
), dsb., dan render ke dalam WebGL dan sebagainya. Tambahan: Mengapa vue menggunakan vdom?
Pengenalan Virtual DOM
hanyalah satu aspek pertimbangan prestasi.
Prestasi sangat dipengaruhi oleh senario yang berbeza mungkin menyebabkan jurang prestasi eksponen antara penyelesaian pelaksanaan yang berbeza, jadi ia bukan persoalan prestasi yang lebih baik bergantung pada pengikatan terperinci dan Virtual DOM
Soalan mudah untuk membuat kesimpulan.
Vue
Sebab yang lebih penting mengapa Virtual DOM
diperkenalkan adalah untuk memisahkan HTML
kebergantungan, yang membawa dua faedah yang sangat penting:
HTML
untuk penghuraian templat, dan boleh melakukan lebih banyak kerja AOT
untuk meningkatkan kecekapan masa jalan: melalui kompilasi templat AOT
, volum masa jalan Vue
boleh dimampatkan lagi kecekapan masa jalan ; DOM
untuk melaksanakan ciri lanjutan seperti SSR
dan pemaparan isomorfik, yang digunakan oleh rangka kerja seperti Weex
. Ringkasnya, peningkatan prestasi
Virtual DOM
bukanlah yang paling penting ialah ia menjadikanVue
mempunyai ciri-ciri itu rangka kerja moden harus mempunyai ciri-ciri canggih.
Dalam vue kita sering menulis templat untuk komponen, templat ini akan disusun oleh pengkompil untuk fungsi rendering, fungsi render akan dipanggil semasa proses pemasangan seterusnya, dan objek yang dikembalikan ialah dom maya. Tetapi mereka bukan DOM sebenar lagi, jadi mereka akan ditukar lagi menjadi DOM dalam proses tampalan seterusnya.
Selepas proses pemasangan selesai, program vue memasuki proses kemas kini. Jika beberapa data responsif berubah, ia akan menyebabkan komponen dipaparkan semula Pada masa ini, vdom baharu akan dijana dan perubahan akan diperoleh dengan membezakan hasil pemaparan terakhir, sekali gus menukarnya kepada jumlah minimum DOM. operasi dan kemas kini yang cekap.
definisi vnode: https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/vnode.ts#L127-L128
[Buat vnode]:
buatElementBlock: https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/vnode. ts #L291-L292
createVnode: https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/vnode.ts#L486-L487
Masa panggilan pertama: https://github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/apiCreateApp.ts#L283-L284
lekapkan: https:/ / github1s.com/vuejs/core/blob/HEAD/packages/runtime-core/src/renderer.ts#L1171-L1172
(Mempelajari perkongsian video: bahagian hadapan web)
Atas ialah kandungan terperinci Mari kita bercakap tentang apa itu dom maya? Mengapa vue menggunakan vdom?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!