Pertanyaan Apa perbedaan antara mode produksi dan pengembangan di Angular2?


Untuk beberapa alasan, saya harus menjalankan aplikasi saya dalam mode produksi. Apa perbedaan antara mode-mode itu?


76
2018-01-19 05:03


asal


Jawaban:


Dalam mode pengembangan, deteksi perubahan akan dijalankan kedua segera setelah menjalankan pertama dan menghasilkan kesalahan jika ada nilai yang terikat telah berubah antara lari pertama dan kedua. Ini membantu untuk menemukan bug di mana memeriksa nilai memiliki efek samping atau bidang atau fungsi tidak mengembalikan nilai yang sama pada panggilan berikutnya yang merongrong deteksi perubahan Sudut.

Dalam mode pengembangan, selama deteksi perubahan kedua dijalankan, Angular juga melakukan beberapa perbandingan objek dalam yang tidak akan dilakukan dalam produksi untuk mendeteksi perubahan model yang tidak diizinkan.

Memperbarui:

Dalam mode pengembangan, petunjuk juga dicetak ke konsol ketika layanan pembersih HTML mengupas nilai dari binding [innerHTML]="..." atau [ngStyle]="...". Lihat juga: Dalam RC.1 beberapa gaya tidak dapat ditambahkan menggunakan sintaks yang mengikat


63
2018-01-19 05:10



Dokumen untuk ApplicationRef.tick () negara:

Dalam mode pengembangan, tick() juga melakukan siklus deteksi perubahan kedua (TTL = 2) untuk memastikan tidak ada perubahan lebih lanjut yang terdeteksi. Jika perubahan tambahan dijemput selama siklus kedua ini, bindings dalam aplikasi memiliki efek samping yang tidak dapat diselesaikan dalam satu pass deteksi perubahan tunggal. Dalam hal ini, Angular melempar kesalahan, karena aplikasi Sudut hanya dapat memiliki satu jalur deteksi perubahan di mana semua deteksi perubahan harus diselesaikan.

Alasan mengapa kami tidak dapat melakukan perubahan tambahan karena dalam mode produksi, deteksi perubahan hanya berjalan satu kali, yang artinya setiap komponen dalam pohon komponen diperiksa sekali (TTL = 1) ... dari atas, dalam-kedalaman-pertama memesan. Jadi, jika, misalnya, perubahan pada properti input komponen anak menyebabkan perubahan pada beberapa properti lain yang komponen induknya terikat dalam tampilan / template, tampilan komponen induk tidak akan diperbarui (karena deteksi perubahan tidak akan mengunjungi kembali komponen induk dalam mode produksi ... karena "satu lintasan" lintasan pohon). Ini hanya akan diperbarui saat berikutnya beberapa peristiwa terjadi dan perubahan deteksi berjalan lagi - tetapi itu sudah terlambat!

Ini a Plunker yang melanggar aturan - komponen anak memiliki set metode pada properti input yang memodifikasi properti input lain. Ya, itu adalah contoh yang dibuat-buat, tetapi lebih mudah dipahami daripada yang berikutnya:

Skenario lain di mana Anda mungkin mengalami masalah ini adalah dengan pipa stateful. Periksa jawaban ini kalau itu masalahmu.

Anda harus menggambarkan masalah Anda (dalam pertanyaan SO yang lain). Harus ada cara untuk memperbaikinya.


31
2018-01-22 23:28