타입스크립트(TypeScript) 기반 웹 프레임워크의 차기 메이저 버전 ‘앵귤러 13(Angular 13)’이 릴리즈 캔디데이트 단계로 이동했다. 앵귤러 13의 프로덕션 릴리즈는 오는 11월 3일 출시될 예정이다.
‘아이비(Ivy)’는 앵귤러의 차세대 컴파일 및 렌더링 엔진이다. 앵귤러는 이전 버전인 ‘뷰 엔진(View Engine)’ 지원을 유지하면서, 최근 릴리즈부터 (아이비를) 지원하기 시작했다. 앵귤러 13에서는 아이비 라이브러리가 완전히 지원되고, 뷰 엔진 지원은 제거된다.
앵귤러 13 릴리즈 캔디데이트의 코드는 깃허브에서 다운로드할 수 있다. 이 밖에 앵귤러 13의 변경사항은 다음과 같다.
• 타입스크립트 4.4(TypeScript 4.4)를 지원한다. 지난 10월 5일부터 코어에서 타입스크립트 4.4.2 이전 버전은 더 이상 지원되지 않는다.
• Rxjs(Reactive Extensions for JavaScript) v7 리액티브 프로그래밍 라이브러리가 지원된다.
• min, max, minLength와 같은 기본 유효성 검사기를 동적으로 비활성화하거나 활성화할 수 있다.
• 단순화된 ViewContainerRef.createComponent API를 통해 구성요소를 동적으로 생성할 수 있다.
• 오류 메시지가 개선됐다.
• 영구적인 ‘디폴트로 캐시 빌드(build cache by default)’ 기능을 통해 빌드가 향상됐다.
• 새로운 탐색이 진행 중인 탐색을 취소할 때 라우터가 더 이상 브라우저 URL을 대체하지 않는다. 이로 인해 URL 플리커가 발생했으며, 일부 앵귤러JS 하이브리드 애플리케이션만 지원됐다. 라우터에서 navigationId을 사용하는 하이브리드 앱은 NavigationCancel 이벤트를 구독하고, replaceState를 자체적으로 수행하여, 라우터 상태에 navigationId를 추가해야 한다.
• wrappedValue 클래스가 @angular/core에서 더 이상 지원되지 않는다. wrappedValue를 쓰는 라이브러리를 사용하면 런타임 컴파일 오류 또는 장애가 발생할 수 있다. wrappedValue 사용을 제거해야 한다.
• RouterTestingModule에서 사용하는 SpyLocation 동작이 브라우저 동작과 일치하도록 변경됐다.
• 코어에서 정적 속성 이니셜라이저에 순수 주석이 추가됐다. 코드를 실행하는 이니셜라이저를 포함한 클래스 속성은 모듈 수준 코드와 유사한 문제를 일으킬 수 있다. 잠재적인 문제가 애플리케이션 실행에 영향을 미칠 수 있기 때문에 최적화 프로그램은 이러한 정적 속성을 가진 클래스를 안전하게 제거할 수 없다. 이러한 유형의 정적 속성이 있는 클래스를 최적화하고, 사용하지 않으면 제거할 수 있도록 정적 속성의 이니셜라이저 표현식에 순수 주석을 달 수 있다.
• 요청 시 오래되거나 손상된 내용이 제공되지 않도록 서비스 작업자 캐시가 안전 작업자에서 삭제된다.
• 플랫폼 브라우저에서 애니메이션 트리거 누락에 관한 오류 메시지가 개선됐다.
• 앵귤러 13에서 양식 제어를 위해 가능한 모든 상태 문자열의 조합이자 새로운 타입인 FormControlStatus가 추가됐다. 또 AbstractControl.status는 string에서 FormControlStatus로, StatusChanges는 Observable<any>에서 Observable<FormControlStatus>로 좁혀졌다. 앵귤러 변경 로그에 따르면 대부분의 애플리케이션은 이러한 새로운 타입을 원활하게 사용할 수 있다.
• 라우터에서 기본 URL 직렬 변환기가 (쿼리 매개변수의 물음표를 포함하여) 모든 것을 나중에 삭제하여 /path?q=hello?&other=123 탐색에 잘못된 구문 분석이 발생하는 문제를 수정하기 위한 변경 사항이 제안됐다. 이 변경 사항은 올바른 구문 분석을 제공한다.
• IE11(Internet Explorer) 지원이 제거된다.
• 컴파일러-cli에서 d.ts 파일의 절대 가져오기에 올바른 모듈 확인 컨텍스트를 사용하도록 하는 변경 사항이 제안됐다.
• 또한 컴파일러-cli에서 앵귤러 동작이 없는 파일의 증분 빌드에 대한 분석을 건너뛸 수 있게 됐다. 증분 빌드에서 컴파일러는 분석 작업을 다시 수행하지 않기 위해 가능한 한 이전 컴파일의 분석 데이터를 재사용한다. 하지만 앵귤러 동작이 없는 소스 파일의 경우 분석 데이터가 기록되지 않으며, 결과적으로 변경 사항이 없더라도 소스 파일이 빌드마다 재분석된다. 이 커밋은 그러한 소스 파일의 분석을 방지한다.
• 언어 서비스의 경우 템플릿에서 자동 완성 문자열 리터럴 통합 타입에 관한 지원이 제공된다.
• 라우터에서 누락된 아울렛 이벤트가 RouterOutletContract에 추가된다. 이는 모듈 연합을 통해 구성요소가 동적으로 렌더링될 때 필요하다고 개발팀은 전했다.
ciokr@idg.co.kr