source

Angular2의 생산 모드와 개발 모드의 차이점은 무엇입니까?

manysource 2023. 9. 27. 18:02

Angular2의 생산 모드와 개발 모드의 차이점은 무엇입니까?

어떤 이유에서인지 나는 내 앱을 프로덕션 모드로 실행해야 합니다.그 모드들의 차이점은 무엇입니까?

개발 모드에서 변경 탐지는 첫 번째 실행 직후 두 번째 실행을 수행하고 첫 번째 실행과 두 번째 실행 사이에 경계 값이 변경된 경우 오류를 발생시킵니다.이를 통해 확인 값에 부작용이 있거나 필드 또는 함수가 이후 호출에서 동일한 값을 반환하지 않아 Angular의 변경 탐지 기능이 손상되는 버그를 찾을 수 있습니다.

개발 모드에서 두 번째 변경 탐지 실행 중에 Angular는 프로덕션에서 수행하지 않는 몇 가지 심층 객체 비교도 수행하여 허용되지 않는 모델 변경을 탐지합니다.

업데이트:

개발 모드에서 HTML Sanitizer 서비스가 바인딩에서 값을 제거할 때에도 콘솔에 힌트가 인쇄됩니다.[innerHTML]="..."아니면[ngStyle]="...". 참고 항목:RC.1에서는 바인딩 구문을 사용하여 일부 스타일을 추가할 수 없습니다.

ApplicationRef.tick()의 문서 상태:

개발 모드에서는,tick()또한 두 번째 변경 감지 사이클(TTL=2)을 수행하여 추가 변경이 감지되지 않도록 합니다.이 두 번째 주기 동안 추가 변경 사항이 선택되면 앱의 바인딩은 한 번의 변경 감지 패스로 해결할 수 없는 부작용이 발생합니다.이 경우 Angular 애플리케이션은 모든 변경 감지가 완료되어야 하는 한 번의 변경 감지 패스만 사용할 수 있으므로 Angular는 오류를 발생시킵니다.

추가적인 변경이 불가능한 이유는 프로덕션 모드에서는 변경 감지가 한 번만 실행되므로 컴포넌트 트리의 모든 컴포넌트를 한 번씩 검사합니다(TTL=1).맨 위부터 깊이 순서대로.따라서 예를 들어 자식 구성 요소의 입력 속성에 대한 변경으로 인해 부모 구성 요소가 뷰/템플릿에 바인딩된 다른 속성이 변경되면 부모 구성 요소의 뷰는 업데이트되지 않습니다(변경 탐지로 인해 프로덕션 모드에서 부모 구성 요소가 다시 방문되지 않기 때문에)."One Pass" Tree Traversal(원패스 트리 횡단) 때문입니다.이벤트가 발생한 다음에 변경 탐지가 다시 실행될 때만 업데이트됩니다. 하지만 너무 늦었습니다!

규칙을 위반하는 플렁커(Plunker)가 있습니다. 하위 구성 요소는 다음과 같습니다.set다른 입력 속성을 수정하는 입력 속성 메소드입니다.예,다보다

이 문제가 발생할 수 있는 또 다른 시나리오는 상태 저장 파이프입니다.그것이 당신의 문제라면 이 답변을 확인해 보세요.

(다른 SO 질문에서) 문제를 설명해야 합니다.그것을 고칠 방법이 있을 겁니다.

언급URL : https://stackoverflow.com/questions/34868810/what-is-the-difference-between-production-and-development-mode-in-angular2