Angular Signals는 게임 체인저입니다. 확장 가능한 앱에 적합한 방법

Angular Signals는 게임 체인저입니다. 확장 가능한 앱에 적합한 방법

신호 Angular에서는 상당히 새로운 개념이므로 모든 사람이 그것들을 사용하거나 익숙하지는 않습니다. 신호를 만드는 것은 매우 쉽습니다.

const count = signal(0);

그러나 그것이 실제로 무엇입니까? 글쎄, 그것은 반응성 프로그래밍 및 각도 템플릿과 매우 잘 작동하는 구조입니다. 지금까지 Angular는 어떤 변화와 템플릿을 업데이트 할시기를 인식하기 위해 많은 일을해야했기 때문입니다. Zone.js는 Angular의 큰 부분이며 다음과 같은 자연적인 것들을 활용하려고합니다. 설정 타임 아웃 코더가 부드럽게 업데이트하기 위해 물건을 스파이하는 기능.

그건 그렇고, 내 이름은입니다 Tom Smykowski저는 확장 가능한 엔터프라이즈 각도 응용 프로그램을 구축하는 전문가 이며이 시리즈에서는 어떻게 해야하는지 가르쳐 줄 것입니다!

그만큼 onpush 이 전략을 사용하면 각도가 변경 및 이벤트에만 반응하기 때문에 방법이 변경되었습니다. 그러나 완벽한 솔루션이 아니며 ngionChanges입력에 대한/세터를 얻습니다 관찰 가능 그리고 주제 정말 재미 있지 않습니다. 이러한 모든 접근법에는 기능 지향 구성 요소 만 난독 화하는 다소 보일러 플레이트가 제공됩니다.

Angular에서 비동기식으로 작업 할 때 더 중요한 것은 소개하기가 정말 쉽다는 것입니다. 메모리 누출. 당신이해야 할 일은 주제 (또는 동작 서체 등) 또는 이벤트 기반 관측 가능 (예 : 프롬벤스) 장치 메모리에서 영원히 임대료가없는 살기 위해. 이러한 접근 방식의 가장 큰 단점입니다.

그것에 대해 많이 말하는 것은 아니지만 각도 신호 또한이 문제에 대한 해결책입니다. 구체적으로, 우리가 각도 문서로 읽을 수 있듯이 :

효과를 생성하면 동봉 컨텍스트가 파괴 될 때 자동으로 파괴됩니다. 이는 구성 요소 내에서 생성 된 효과가 구성 요소가 파괴 될 때 파괴됨을 의미합니다. 지침, 서비스 등의 영향도 마찬가지입니다.

따라서 우리는 이것에 대해 걱정할 필요가 없습니다. 컨텍스트는 신호에 대해 알고 올바르게 파괴합니다. 그래서 당신이 있다면 신호 서비스 나 구성 요소에서 메모리 누출에 대해 걱정할 필요가 없습니다.

더욱이, 이것은 정말 인상적입니다. 신호가 관찰 가능성과 RXJ를 처리하는 방법입니다. 의심 할 여지없이, 오늘날 현재 신호는 RXJS가 제공하는 모든 좋은 모든 것을 인수 할 수는 없지만 경우에 따라 신호로 작업 할 때 RXJ가 필요하지 않을 수도 있습니다.

그러나 그 의미는 신호와 RXJ를 통합 할 때 여전히 메모리 누출을 만들 위험이 있다는 것입니다. 좋은 소식은 독특한 구성입니다 신호 이 문제를 해결합니다.

그만큼 ToNIGNAL 함수는 관찰 가능한 신호를 돌릴 수 있습니다.

import { Component } from '@angular/core';
import { AsyncPipe } from '@angular/common';
import { interval } from 'rxjs';
import { toSignal } from '@angular/core/rxjs-interop';
@Component({
  template: `{{ counter() }}`,
})
export class Ticker {
  counterObservable = interval(1000);
  // Get a `Signal` representing the `counterObservable`'s value.
  counter = toSignal(this.counterObservable, {initialValue: 0});
}

Angular Documentation에서 제공하는이 예에서 볼 수 있듯이 카운터는 신호 추적이됩니다. 반 관찰 가능. 표준 관찰 가능한 것은 값을 방출하는 것을 보장하지 않기 때문에 초기 값그렇지 않으면 그럴 것입니다 한정되지 않은.

그러나 이것은 이야기의 중요한 부분이 아닙니다. 중요한 것은 ToNIGNAL 관찰 가능한 것들로부터 구독 취소를 처리합니다.

구독이 작성했습니다 toSignal 호출하는 구성 요소 또는 서비스가있을 때 주어진 관찰 가능한 주어진에서 자동으로 구독을 취소합니다. toSignal 파괴됩니다.

기본적으로 메모리 누출 소독제 역할을한다는 것을 의미하므로 구성 요소 및 서비스에 사용하는 관찰 가능성이 비 수신이 자동으로 관리되므로 메모리 누출이 발생하지 않도록합니다.

각도 앱의 지연의 주요 원인을 해결하는 데 기여하는 신호의 상당한 이점입니다. 서비스 나 구성 요소가 파괴되면 ToNignal이 자동으로 구독되지 않으므로 인간 오류의 위험이 없습니다.

좋은 점은 무엇입니까? 물론, 메모리 누출이 여전히 발생할 수있는 경우가 있으며, 그러한 경우에도 여전히 수동으로 리소스를 지울 수 있습니다. 수동 청소 신호가 일반적으로 집안일을 할 때 호출됩니다.

이를 위해 확장 가능한 각도 앱을 구축하는 관점에서, 다른 이유는 다음 기사에 쓸 것입니다. 신호 리소스를 보존하고, 앵글 앱의 응답 성을 높이고, 특히 자체적으로 자체적으로 사용하는 앱에서 리소스를 저장하는 데 좋습니다.

각도 19의 신호 기반 입력과 같은 점진적인 기능 축적으로 도입 된 반응성 각도 16의 간소화 된 처리는 유지 보수 비용이 낮아지고 메모리 누출 위험이 낮아 전반적인 성능으로 인해 확장 가능한 앱에 적합합니다. 매끄럽게 확장하려면 앱을 신호로 점차적으로 다시 작성하는 것이 좋습니다.

각 앱을 확장하고 기업 요구에 대비할 수있는 방법에 대한 무료 점검 목록을 준비했습니다. 관심이 있으시면이 점검표를 얻을 수 있습니다 여기에 무료.

질문이 있으시면 의견 섹션에서 문의하십시오!

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다