Angular2'de üretim ve geliştirme modu arasındaki fark nedir?


Yanıtlar:


77

Geliştirme modunda, değişiklik algılama, ilk çalıştırmadan hemen sonra ikinci bir çalıştırma yapar ve birinci ile ikinci çalıştırma arasında herhangi bir sınır değer değiştiyse bir hata oluşturur. Bu, kontrol değerlerinin yan etkilere sahip olduğu veya alanların veya işlevlerin Angular'ın değişiklik algılamasını baltalayan sonraki çağrılarda aynı değeri döndürmediği hataları bulmaya yardımcı olur.

Geliştirme modunda, ikinci değişiklik algılama çalışması sırasında Angular, izin verilmeyen model değişikliklerini tespit etmek için üretimde yapmayacağı bazı derin nesne karşılaştırmaları da yapar.

Güncelleme:

Geliştirme modunda, HTML dezenfektanı hizmeti bağlamalardan [innerHTML]="..."veya [ngStyle]="...". Ayrıca bakınız: RC.1'de bazı stiller bağlama sözdizimi kullanılarak eklenemez


5
Üretim modunda mı yoksa geliştirme modunda mı çalıştığımı nasıl anlarım?

Bunun daha önce sorulduğunu gördüm ama bir cevap görmedim. Üretim modunu açıkça etkinleştirmeniz gerekir ve prodMode'u etkinleştirdiğinizde, hangi modun etkin olduğunu bilmek için kodunuzda kontrol edilebilecek bazı global değişkenler de ayarlayabilirsiniz.
Günter Zöchbauer

6
Ayrıca, geliştirme modunda çalışıyorsanız ve tarayıcınızda konsolu açarsanız, "Angular 2 geliştirme modunda çalışıyor. Üretim modunu etkinleştirmek için enableProdeMode () çağrısı yapın" yazan bir mesaj yazdırılacaktır. Zaten üretim modundaysanız, burada hiçbir şey görmezsiniz.
c.dunlap

36

ApplicationRef.tick () durumu için belgeler :

Geliştirme modunda, tick()daha fazla değişikliğin algılanmamasını sağlamak için ikinci bir değişiklik algılama döngüsü (TTL = 2) gerçekleştirir. Bu ikinci döngü sırasında ek değişiklikler alınırsa, uygulamadaki bağlamaların tek bir değişiklik algılama geçişinde çözülemeyen yan etkileri vardır. Bu durumda, Angular bir hata atar, çünkü bir Angular uygulamasında tüm değişiklik tespitinin tamamlanması gereken tek bir değişiklik algılama geçişi olabilir.

Ek değişiklik yapamamamızın nedeni, üretim modunda değişiklik tespitinin yalnızca bir kez çalışmasıdır; bu, bileşen ağacındaki her bileşenin bir kez (TTL = 1) ... üstten, derinlemesine inceleneceği anlamına gelir. sipariş. Dolayısıyla, örneğin, bir alt bileşenin input özelliğinde yapılan bir değişiklik, bir görünümde / şablonda üst bileşenin bağladığı başka bir özellikte bir değişikliğe neden olursa, üst bileşenin görünümü güncellenmez (çünkü değişiklik algılama, "tek geçişli" ağaç geçişi nedeniyle üretim modunda ana bileşen). Yalnızca bir sonraki sefer meydana geldiğinde güncellenecek ve değişiklik algılama tekrar çalıştırıldığında - ama bu çok geç!

İşte kuralı ihlal eden bir Plunker - bir alt bileşenin setbir input özelliğinde başka bir input özelliğini değiştiren bir yöntemi vardır . Evet, uydurma bir örnek ama anlaşılması bir sonrakinden daha kolay:

Bu sorunla karşılaşabileceğiniz başka bir senaryo, durum bilgisi olan borularla ilgilidir. Check out Bu cevabı bu senin sorunun buysa.

Probleminizi tanımlamalısınız (başka bir SO sorusunda). Düzeltmenin bir yolu olmalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.