Google에서 개발하여 웹 애플리케이션 구축을 위한 오픈 소스 솔루션으로 일반적으로 사용되는 Angular 프레임워크는 개발자에게 동적이고 반응적이며 확장 가능한 웹 애플리케이션을 구축할 수 있는 포괄적인 도구 및 기능 세트를 제공합니다.

Angular의 최신 버전인 버전 16은 개발 프로세스와 애플리케이션의 전반적인 성능 및 안정성을 크게 개선하는 수많은 매력적인 개선 사항과 개선 사항을 제공합니다.

각도 신호

각도 신호를 사용하면 반응형 값을 생성하고 이러한 값 간의 관계를 형성할 수 있습니다. 이에 대한 간단한 예시는 Angular 애플리케이션의 컨텍스트에서 볼 수 있는데, Angular 신호 라이브러리를 사용하여 두 변수 간에 연결을 설정하여 한 변수를 변경하면 다른 변수도 그에 따라 조정되도록 할 수 있습니다.

 @Component ({
   selector: 'my-app',
   standalone: true,
   template: `
{{ fullName() }} <button (click)="setName('John')">Click</button>
`,
})
export class App {
   firstName = signal('Jane');
   lastName = signal('Doe');
   fullName = computed(() => `${this.firstName()} ${this.lastName()}`);
   constructor() {
       effect(() => console.log('Name changed:', this.fullName()));
   }
   setName(newName: string) {
       this.firstName.set(newName);
   }
}

앞서 언급한 코드 세그먼트는 ‘fullName’이라는 계산 값을 설정하며, 이 값은 ‘firstName’과 ‘lastName’의 신호 값에 의존합니다. 또한 참조하는 신호의 값이 변경될 때마다 실행되는 기능 단위(FU)인 효과를 설명합니다.

복합 엔티티를 구성하는 두 구성 요소 중 하나를 조정할 때 발생하는 영향의 크기는 다음 시나리오에서 관찰할 수 있습니다. 개인의 이름에 대한 별칭으로 “John”이 지정되면 개발 도구의 로그 출력에 다음과 같은 선언이 나타납니다:

  Name changed: John Doe. 

독립형 Ng 새 컬렉션

Angular는 버전 16에서 처음부터 독립형 프로젝트를 생성할 수 있는 새로운 기능을 도입했습니다. 이 독립형 회로도의 개발자 미리 보기를 테스트하려면 Angular CLI 버전 16을 설치한 후 다음 명령을 실행해야 합니다:

 ng new --standalone 

이 과정을 통해 `NgModule` 선언이 없는 보다 간소화된 프로젝트 아키텍처를 얻을 수 있습니다. 또한 프로젝트 내의 모든 생성기는 독립적으로 사용할 수 있는 자급자족 지시어, 컴포넌트 및 파이프를 생성합니다.

이 글도 확인해 보세요:  HTTP와 HTTPS: 차이점은 무엇인가요?

자동 경로 매개변수 매핑

이 문장은 이미 공식적이고 기술적인 언어로 작성된 것으로 보이므로 대체 문구를 제공할 수 없습니다.

 export const routes: Routes = [{
   path: 'search:/id',
   component: SearchComponent,
   resolve: {
       searchDetails: searchResolverFn
   }
}];

버전 16 이전의 이전 버전의 Angular에서는 특정 URL에 대한 URL 매개 변수, 쿼리 매개 변수 또는 관련 데이터에 액세스하기 위해 ActivatedRoute 서비스를 명시적으로 주입해야 했습니다.

죄송하지만 무엇을 말하는지 이해할 수 없습니다.가능

 @Component({
   ...
})
export class SearchComponent {
   readonly #activatedRoute = inject(ActivatedRoute);
   readonly id$ = this.#activatedRoute.paramMap(map(params => params.get('id')));
   readonly data$ = this.#activatedRoute.data.map(({
       searchDetails
   }) => searchDetails);
}

최신 Angular 버전 16에서는 여러 경로 매개변수를 구성 요소의 입력에 직접 바인딩할 수 있으므로 여러 경로 매개변수를 추출하기 위해ActivatedRoute를 주입할 필요가 없어졌습니다.

모듈 시스템을 사용하는 소프트웨어 프로그램 내에서 앞서 언급한 기능을 활성화하려면 필요한 값을 지정하여 라우터모듈의 설정을 구성해야 합니다.

 RouterModule.forRoot(routes, {
   bindComponentInputs: true
})

단독 애플리케이션은 API가 아닌 함수를 호출해야 합니다.

 provideRoutes(routes, withComponentInputBinding()); 

이 기능을 활성화하면 구성 요소가 단순화됩니다.

 @Component({
   ...
})
export class SearchComponent {
   @Input() id!: string;
   @Input() searchDetails!: SearchDetails;
}

필수 입력

Angular 커뮤니티는 필요한 입력 요소를 지정할 수 있는 기능의 구현을 간절히 기다려 왔습니다. 이전에는 개발자가 필요한 변수가 없는 경우 NgOnInit 수명 주기 내에서 예외를 발생시키거나 컴포넌트의 선택기를 변경하여 필수 입력을 통합하는 등 다양한 접근 방식을 활용했습니다.

Flair 16에서는 주석 작업의 메타데이터 내에서 사용자 입력을 구성할 수 있는 간단한 메커니즘을 도입하여 사용자 입력 통합이 더욱 간소화되었습니다. 이 방법은 최적의 효율성을 보장하기 위해 초기화 프로세스 중에 쉽게 액세스할 수 있는 구성 개체를 제공하는 것입니다.

 @Input({
   required: true
}) name!: string;

개발 서버로서의 Vite

Angular 14에서는 이전 버전에 비해 빌드 시간을 약 40% 단축하는 새로운 JavaScript 번들러인 EsBuild가 발표되었습니다. 그럼에도 불구하고 개발자는 개발 목적으로 개발 서버를 사용하는 동안 이러한 성능 향상을 경험할 수 없었습니다.

이 글도 확인해 보세요:  Rust에서 기본 HTTP 웹 서버를 빌드하는 방법

향후 출시될 Angular 버전에서는 Vite 빌드 도구 내에 EsBuild를 통합하여 개발 수명 주기 전반에서 활용도를 높일 수 있습니다.

이 기능을 사용하려면 다음 단계에 따라 angular.json 파일 내에서 애플리케이션의 빌드 구성을 수정해야 합니다:

 "architect": {
   "build": {
       "builder": "@angular-devkit/build-angular:browser-esbuild",
       "options": {
           ...
       }
   }

이 기능은 아직 테스트 단계에 있으며 추가적으로 개선될 수 있음을 알려드립니다.

개발 경험 및 성능 향상

최신 Angular 버전 16에는 데이터의 효율적인 관리를 위한 Angular 신호, 독립형 프로젝트 생성 지원, URL 매개변수 자동 매핑, 요구 사항 처리, 더 나은 개발을 위한 Vite와의 원활한 통합 등 몇 가지 주목할 만한 발전이 도입되었습니다. 이러한 혁신은 개발 프로세스를 간소화하고 애플리케이션의 전반적인 성능을 향상시키기 위해 설계되었습니다.

By 최은지

윈도우(Windows)와 웹 서비스에 대한 전문 지식을 갖춘 노련한 UX 디자이너인 최은지님은 효율적이고 매력적인 디지털 경험을 개발하는 데 탁월한 능력을 발휘합니다. 사용자의 입장에서 생각하며 누구나 쉽게 접근하고 즐길 수 있는 콘텐츠를 개발하는 데 주력하고 있습니다. 사용자 경험을 향상시키기 위해 연구를 거듭하는 은지님은 All Things N 팀의 핵심 구성원으로 활약하고 있습니다.