Analisis mendalam mengenai mekanisme pengesanan perubahan sudut
Artikel ini akan meneroka mekanisme pengesanan perubahan Angular secara mendalam, mendedahkan prinsip operasi asasnya, dan memberikan strategi pengoptimuman. Terdapat sedikit maklumat mengenai topik ini di Internet.
Konsep teras: Lihat (Lihat)
Aplikasi sudut tidak terdiri daripada komponen sahaja, tetapi melihat pokok. Setiap komponen sepadan dengan pandangan, iaitu unit asas dalam seni bina UI sudut, dan bertanggungjawab untuk mengendalikan semua pemeriksaan harta dan kemas kini DOM. Keterangan pandangan dalam kod sumber adalah seperti berikut:
Lihat adalah blok bangunan asas ui aplikasi. Ia adalah kumpulan terkecil unsur -unsur yang dicipta dan dimusnahkan bersama.Dalam artikel ini, kami menggunakan pandangan komponen dan konsep komponen secara bergantian. Harus diingat bahawa banyak artikel web dan jawapan limpahan stack merujuk kepada pandangan yang diterangkan di sini sebagai "objek pengesanan perubahan" atau "ChangeTetectorRef". Malah, tidak ada objek pengesanan perubahan berasingan dalam sudut, perubahan pengesanan secara langsung bertindak pada pandangan.Ciri -ciri unsur -unsur dalam pandangan boleh diubah, tetapi struktur (nombor dan perintah) unsur -unsur dalam pandangan tidak dapat diubah. Menukar struktur elemen hanya boleh dilakukan dengan memasukkan, bergerak, atau memadam pandangan bersarang menggunakan ViewContainerRef. Setiap paparan boleh mengandungi pelbagai bekas pandangan.
Setiap paparan dikaitkan dengan subviewnya melalui harta
, yang membolehkan tindakan dilakukan pada subview. nodes
Lihat status (ViewState)
Pandangan mempunyai menyatakan, yang memainkan peranan penting dalam menentukan sama ada untuk menjalankan pengesanan perubahan untuk pandangan dan semua subviewnya. Negeri -negeri penting termasuk:
FirstCheck
ChecksEnabled
Errored
Destroyed
, atau pandangannya berada di dalam ChecksEnabled
atau false
, pengesanan perubahan pandangan dan subviewnya dilangkau. Secara lalai, semua pandangan dimulakan dengan Errored
kecuali Destroyed
digunakan. ChangeDetectionStrategy.OnPush
ChecksEnabled
Angular menyediakan konsep canggih untuk memanipulasi pandangan, seperti
. Apabila peristiwa tak segerak berlaku, sudut mencetuskan pengesanan perubahan tahap tertinggi ViewRef
, yang secara rekursif mengesan subview selepas pengesanan perubahannya sendiri. detectChanges
ViewRef
ViewRef
boleh disuntik ke dalam pembina komponen melalui token
ChangeDetectorRef
ViewRef
export class AppComponent { constructor(cd: ChangeDetectorRef) { ... } }
Fungsi adalah logik utama yang bertanggungjawab untuk menjalankan pengesanan perubahan pandangan. Fungsi ini memanggilnya secara rekursif, bermula dari komponen tuan rumah, memeriksa setiap komponen dan subkomponennya pula. checkAndUpdateView
ViewState.firstCheck
OnChanges
OnInit
cangkuk kitaran subkomponen (ngDoCheck
dipanggil hanya pada cek pertama). OnInit
ContentChildren
AfterContentInit
cangkuk kitaran hayat contoh subkomponen (AfterContentChecked
dipanggil hanya pada cek pertama). AfterContentInit
ViewChildren
AfterViewInit
cangkuk kitaran hayat contoh subkomponen (AfterViewChecked
dipanggil hanya pada cek pertama). AfterViewInit
perubahan strategi pengesanan dan pencetus manual Dasar ini dapat mengurangkan overhead prestasi dengan ketara kerana ia hanya melakukan pengesanan perubahan apabila perubahan data sebenar, seperti perubahan atribut input atau pelancaran peristiwa yang jelas.
ChangeDetectionStrategy.OnPush
menyediakan kaedah seperti
dan ChangeDetectorRef
untuk membolehkan lebih banyak kawalan pengesanan perubahan, terutamanya dalam aplikasi yang besar dan kompleks. detectChanges()
markForCheck()
detach()
(berikut akan memperkenalkan secara terperinci kaedah penggunaan
, , ChangeDetectorRef
dan detach()
kaedah
reattach()
markForCheck()
(seluruh artikel akan terus meneroka cara menggunakan kaedah ini untuk mengoptimumkan prestasi, dan menyediakan beberapa senario aplikasi praktikal dan contoh kod.) detectChanges()
(Akhirnya, artikel itu akan meringkaskan soalan -soalan yang sering ditanya mengenai pengesanan perubahan sudut, yang meliputi strategi OnPush, teknik pengoptimuman pengesanan perubahan, peranan zon, dan kaedah untuk pengesanan perubahan debug.)
Atas ialah kandungan terperinci Tukar Pengesanan Dalam Angular: Semua yang Anda Perlu Tahu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!