MiniRx 도입-확장 가능한 반응 상태 관리

17391 단어 webdevrxjsshowdevredux

안녕하세요, 미니 Rx 상점에서 왔습니다.


MiniRx 스토어는 수동 상태 관리 영역의 새 구성원입니다.MiniRx는 대규모 상태 관리(Redux 사용)를 돕지만 간단한 상태 관리 형식인 기능 저장소를 제공합니다.
빠르게 살펴보겠습니다.

글로벌


MiniRx Store는 JavaScript 및 TypeScript 애플리케이션의 상태를 관리하는 전 세계적인 애플리케이션 범위 솔루션입니다.

반응성


미니Rx는 RxJS에 전기를 공급하고 RxJS가 관측할 수 있는 방식으로 상태를 노출한다.관찰 대상의 선택 상태가 변할 때 신호를 보냅니다.

신축 가능


MiniRx는 성숙한 Redux 상점입니다. 조작, 감축기, 메타감축기, 메모리 선택기, Redux 개발 도구 지원을 포함합니다.
그러나 MiniRx 기능 상점이 있으면 Redux 템플릿을 돌아갈 수 있습니다: 직접 setState 업데이트 상태를 사용할 수 있습니다.
MiniRx는 주 관리 요구 사항을 완벽하게 충족합니다.
  • 어려운 일을 단순화하기 위해 Redux API
  • 를 사용합니다.
  • 기능 스토리지 API
  • 를 통해 간편한 작업 수행

    빠른 링크

  • 🤓 MiniRx에 대한 자세한 내용은 Docs site
  • MiniRx on GitHub
  • 🚀 StackBlitz에서 실제 응용 프로그램 보기
  • MiniRx DNA


    NgRx


    미니Rx의 영감NgRxAngular로 세계적으로 유명한 리액션 레드ux 상점이다.MiniRx와 NgRx는 언뜻 보기에는 비슷하지만 중요한 차이점이 있다.

    NgRx와 MiniRx의 공통점은 무엇입니까?

  • 그들의 이름은 듣기에 매우 비슷하다. 큰 소리로 말해 보자.)
  • RxJS에서 전원 공급
  • 둘 다 Redux 모드 구현
  • 상태와 동작이 RxJS로 보이는 형태로 노출
  • 주요 차이점은 무엇입니까?

  • MiniRx는 프레임과 무관한 각도 의존성 없음
  • MiniRx에는 Redux 템플릿을 사용하지 않고 기능 상태를 관리할 수 있는 기능 저장소가 있습니다.
  • MiniRx는 더욱 가볍다. 이것은 상태 관리의 모든 미친 용례를 포함하지 않는다는 것을 부인할 수 없다
  • 바로 이런 차이점이'미니Rx'라는 이름을 설명한다.

    MiniRx인 이유


    NgRx 및 Redux 모드는 대규모 관리 상태에 적합합니다.그러나 거의 모든 응용 프로그램은 간단한 형태의 상태 관리 기능만 포함한다.그리고 Redux 모드와 그 조작과 감축기는 곧 지나친 느낌을 줄 것이다.NgRx처럼 보이는 상태 관리 솔루션이 있다면 다행이지만 간단한 상태 관리: 신축 가능한 상태 관리도 지원해야 한다.창조할 때MiniRx Store:

    기능 저장소를 사용하여 Redux 템플릿 무시


    MiniRx는 Redux 모드를 사용하여 상태 관리를 명확하고 예측 가능하게 합니다.Redux 모드는 매우 강력하지만, 일부 샘플 코드 (주로 조작, 감축기, 분배 조작) 를 덧붙인다.MiniRx는 Redux 템플릿을 돌아서 간단한 기능 상태를 얻을 수 있습니다. 기능 저장소를 통해 우리는 기능 상태를 직접 관리할 수 있고, 조작과 축소기를 사용하지 않아도 됩니다. setState 기능 상태를 업데이트할 수 있습니다.

    확장 가능한 상태 관리


    간단한 기능에 대해 우리는 기능 저장소를 사용할 수 있다.기능 저장소는 실제로 매우 강력하다. 메모리 선택기를 사용할 수 있고, API 호출을 위한 효과를 만들 수 있다. (원한다면.)MiniRx는 고객의 요구를 충족시킬 수 있습니다.
    방대하고 복잡한 상태를 관리해야 하는 경우 언제든지 Redux API를 사용할 수 있습니다.

    프레임 불가지론


    NgRx는 매우 좋은 반응 저장소이지만, 현재는 각도만 적용된다.예를 들어 Svelte도 반응성을 지원한다.날씬한 곳에서 NgRx 스타일의 컨디션 관리를 하면 멋집니다!
    MiniRx가 있으면 원하는 프레임워크를 사용할 수 있습니다. Angular today에 프레임워크와 무관한 상태 관리층을 구축하고 내일 Svelte (또는 다른 전단 프레임워크) 로 이동할 수 있습니다.

    MiniRx 주요 개념


  • 스토리지는 글로벌 애플리케이션 상태를 저장하는 단일 객체입니다.그것은 진리의 유일한 원천이다
  • 상태는 납작한 차원 구조를 가지고'특징상태'(Reduxworld에서도'절편'이라고 부른다)
  • 로 나뉜다.
  • 각 기능 상태에 대해 Redux API를 운영 및 감속기와 함께 사용하거나 기능 저장소 API를 setState와 함께 사용하기로 결정할 수 있습니다.
  • 상태는 RxJS관찰가능상태로 공개(저장은 전역상태를 공개하고 기능은 특정한 기능상태를 공개한다).
  • 상태는 읽기 전용(변경 불가), 스케줄링 작업(Redux API) 또는 사용setState(기능 저장소 API)
  • 으로만 변경 가능
    이것은 긴 소개다!MiniRx의 작동 상황을 살펴보기 위해 몇 가지 코드를 자세히 살펴보겠습니다...

    기본 자습서


    스토어(Redux API)


    MiniRx는 복원 및 스케줄링 작업을 등록할 수 있는 레거시 Redux API를 지원합니다.
    상태를 관찰할 수 있는 것은 기억 선택기를 통해 선택할 수 있다.
    import {
      Action,
      Store,
      configureStore,
      createFeatureSelector,
      createSelector
    } from 'mini-rx-store';
    import { Observable } from 'rxjs';
    
    // 1.) State interface
    interface CounterState {
      count: number;
    }
    
    // 2.) Initial state
    const counterInitialState: CounterState = {
      count: 1
    };
    
    // 3.) Reducer
    function counterReducer(
      state: CounterState = counterInitialState,
      action: Action
    ): CounterState {
      switch (action.type) {
        case 'inc':
          return {
            ...state,
            count: state.count + 1
          };
        default:
          return state;
      }
    }
    
    // 4.) Get hold of the store instance and register root reducers
    const store: Store = configureStore({
      reducers: {
        counter: counterReducer
      }
    });
    
    // 5.) Create memoized selectors
    const getCounterFeatureState = createFeatureSelector<CounterState>('counter');
    const getCount = createSelector(
      getCounterFeatureState,
      state => state.count
    );
    
    // 6.) Select state as RxJS Observable
    const count$: Observable<number> = store.select(getCount);
    count$.subscribe(count => console.log('count:', count));
    
    // 7.) Dispatch an action
    store.dispatch({ type: 'inc' });
    
    // OUTPUT: count: 1
    // OUTPUT: count: 2
    

    기능 스토리지 API


    기능 저장소는 조작과 축소기를 사용하지 않고 기능 상태를 관리할 수 있도록 해 준다.
    기능 저장소의 API는 최소한의 템플릿 파일로 기능 상태를 직접 선택하고 업데이트할 수 있도록 최적화되었습니다.
    import { FeatureStore } from 'mini-rx-store';
    import { Observable } from 'rxjs';
    
    // 1.) State interface
    interface CounterState {
      count: number;
    }
    
    // 2.) Initial state
    const counterInitialState: CounterState = {
      count: 11
    };
    
    export class CounterFeatureStore extends FeatureStore<CounterState> {
      // Select state as RxJS Observable
      count$: Observable<number> = this.select(state => state.count);
    
      constructor() {
        super('counterFs', counterInitialState);
      }
    
      // Update state with `setState`
      inc() {
        this.setState(state => ({ ...state, count: state.count + 1 }));
      }
    }
    
    이렇게 "counterFs"기능 스토어를 사용합니다.
    import { CounterFeatureStore } from "./counter-feature-store";
    
    const counterFs = new CounterFeatureStore();
    counterFs.count$.subscribe(count => console.log('count:', count));
    counterFs.inc();
    
    // OUTPUT: count: 11
    // OUTPUT: count: 12
    

    요소 저장 상태가 전역 상태의 일부가 되다


    각 새로운 기능 스토어에는 전역 상태에서 해당 기능 키(예: "counterFs")가 표시됩니다.
    store.select(state => state).subscribe(console.log);
    
    //OUTPUT: {"counter":{"count":2},"counterFs":{"count":12}}
    

    필기


    데모


    🚀 StackBlitz의 MiniRx 스토어 참조
    Redux API 및 기능 스토리지를 사용하는 데모:
  • 대기 사항: 기능 상점
  • 제품 및 카트: Redux
  • 사용자: 기능 스토어
  • 추가 MiniRx 예:


    MiniRx의 강력한 기능을 보여주는 이 인기 분야 프레젠테이션은 다음과 같습니다.
  • Angular Tetris with MiniRx
  • Angular Jira Clone using MiniRx
  • 출시 예정: MiniRx
  • 를 사용한 각도 Spotify

    문서


    전체 MiniRx API를 보십시오docs.

    지지 를 표시하다


    미니Rx를 좋아한다면 해봐⭐ onGitHub

    도구책


    이러한 프로젝트, 기사 및 교육 과정을 통해 MiniRx를 만들 수 있습니다.
  • NgRx
  • Akita
  • Observable Store
  • RxJS Observable Store
  • Juliette Store


  • How I wrote NgRx Store in 63 lines of code
  • NGRX VS. NGXS VS. AKITA VS. RXJS: FIGHT!
  • Pluralsight: Angular NgRx: Getting Started
  • Pluralsight: RxJS in Angular: Reactive Development
  • Pluralsight: RxJS: Getting Started
  • 좋은 웹페이지 즐겨찾기