Angular Form 컨트롤: 잘못된 부분

3337 단어 angular
이전 기사에서는 Form Controls의 장점에 대해 설명하고 이 게시물에서는 단점에 대해 설명합니다.

불변의 골칫거리
종이와 이론상으로 그리고 Javascript와 같은 약한 유형의 언어에 대한 솔루션입니다. 불변성은 모델의 단일 속성 또는 배열의 단일 레코드를 변경하기 위한 솔루션입니다.

이것이 나온 가장 논리적인 이유는 자바스크립트 프로그래밍 스타일이 뿌리 깊은 주요 문제를 일으켰기 때문입니다. 하나의 특정 구현은 다음과 같습니다.

let person ={
   lastName:'Peterson',
   fistName:'Jon'
}
//then later in some other module

let person={
 lastName:'Peterson',
 firstName:'John',
 ssn:'111223333',
}
//has an added ssn field


그 자체로는 문제가 되지 않습니다. 그러나 모듈 중 하나에 입력 매개변수로 사람이 있는 경우; 어느 것이 올바른 것입니까? 답변: 어떻게 사용되는지에 대한 컨텍스트 외에는 알 수 있는 방법이 없습니다. 키의 철자가 동일하지 않으면 어떻게 됩니까? 데이터 유형이 다른 경우에는 어떻게 됩니까?

이것은 응집력의 잠재적인 주요 문제입니다! 이 버그는 속성에 의존하는 루틴이 속성이 정의되지 않았거나 null인 것으로 확인되었을 때만 나타납니다. 실제로는 종속성이었습니다. 오랫동안 휴면 상태에 있을 수 있는 런타임 오류입니다. 즉석에서 사람 개체를 생성하는 코드에 1,000개의 위치가 있는 경우 찾는 데 시간이 걸립니다.

그것이 불변성과 무슨 관계가 있습니까?

객체의 실제 값을 설정할 수 있는 경우는 두 번뿐이라는 규칙을 만들어 보겠습니다. 1) 시작 시 2) 저장 직전 백엔드에서 업데이트, 삭제. 사이에 20개의 단계가 있을 수 있다는 사실을 신경쓰지 마십시오(반 구운 상태).

그러나 반쯤 구운 상태는 없으므로 각 사소한 변경은 새 개체에서만 수행할 수 있다는 또 다른 규칙을 만들어야 합니다. 본질적으로 우리는 객체를 딥 클론하고 한 번에 하나의 속성만 변경해야 합니다.

이것은 열등한 언어 구현으로 인해 생성된 패턴입니다. 이것은 자바스크립트 순수주의자들이 OOP 패턴에 대해 주장하는 것과 똑같은 주장입니다(강한 타이핑의 장애인 특성으로 인해 생성됨).

양방향 바인딩 없음

양식 컨트롤을 사용할 때 더 이상 양방향 바인딩을 지원하지 않는다는 Angular 지시문을 문서화했습니다. 실제로 Angular 10의 테스트에서 입증되었듯이 모두 사실입니다.

DOM은 양방향 바인딩을 허용합니다

이 단계에서 가장 심오한 깨달음은 DOM 자체에는 그러한 제한이 나타나지 않는다는 것입니다. DOM의 모든 HTMLElement는 입력이 변경될 때마다 값을 즉시 변경합니다. 각 요소가 여러 속성을 묶는 개념을 인식하지 못하기 때문에 속성이 몇 개나 있는지는 중요하지 않습니다. 각 요소는 완전히 포함되고 다른 요소와 독립적인 원자 값입니다.

Angular가 다시 의견이 되다

AngularJS의 종말은 어떻게 작동해야 하는지에 대한 자체 극단적인 의견을 선호하기 위해 Javascript를 하이재킹했다는 것입니다.

그들은 프레임워크의 특정 부분에서 다시 독단적인 일을 시작하는 것으로 보입니다.

이번에는 언어 자체를 가로채지 않았기 때문에 이전만큼 나쁘지 않을 수 있습니다. 우리가 언어를 사용하는 방식대로입니다.

요약

양방향 바인딩이 없기 때문에 FormControls를 거부해야 할 수도 있습니다. 예, 우리는 그것을 작동시킬 수 있지만 노력은 이상합니다. 주요 질문은 "당신이 더 나은 방법을 선택했다고 해서 모델이 실제로 무엇에 관한 것인지에 대한 우리의 관점을 바꿔야 하는 이유는 무엇입니까?"입니다. "우리가 할 수 없는 일을 DOM이 할 수 있는 것은 무엇입니까?"

BTW, 나는 Crockford의 방대한 Javascript 책이 처음 나왔을 때 구입했습니다. 내가 몇 년 동안 구입한 모든 프로그래밍 책 중에서 내 생각에 그의 책은 최악의 책 중 하나였습니다. 덜덜 떨리고, 굴러가고, 덜컥거리고, 트랙을 뛰어 넘었습니다. 나에게 그것은 기차 사고였지만 나는 그것을 타야만 했다. 초창기 때를 제외하고는 책상 참고용으로 사용한 적이 없습니다. 5년 전쯤에 공간을 차지해서 버렸다.

JWP2020

좋은 웹페이지 즐겨찾기