私はangular2プロジェクトをクリーンアップしています。多くの理由から、私は種から始めることに決めました。 This one。NG2:angular2-webpack-starter - HMRの目的は何ですか?
この種子はHMRを使用していますが、その目的は何であるか完全に理解していません。
最初は、HMRがダイナミックローディングについて考えていて、Webアプリケーションの実行中に コンポーネントを置き換えました。
しかし、私はapp.service.ts
に目を通してしまったので、迷ってしまいました。
import { Injectable } from '@angular/core';
import { HmrState } from 'angular2-hmr';
@Injectable()
export class AppState {
// @HmrState() is used by HMR to track the state of any object during a hot module replacement
@HmrState() _state = { };
constructor() {
}
// already return a clone of the current state
get state() {
return this._state = this._clone(this._state);
}
// never allow mutation
set state(value) {
throw new Error('do not mutate the `.state` directly');
}
get(prop?: any) {
// use our state getter for the clone
const state = this.state;
return state[prop] || state;
}
set(prop: string, value: any) {
// internally mutate our state
return this._state[prop] = value;
}
_clone(object) {
// simple object clone
return JSON.parse(JSON.stringify(object));
}
}
私は、サービスが単にいくつかのデータを格納するためのスペースを提供していると考えていました。結局のところ、これは単なる例です。
しかし、この行は私を混乱させました:@HmrState() _state = { };
。このサービスは、少しReduxの店舗(アクション、ディスパッチャ、blablaなし)のようにthis.appState.set('value', value);
(これはHomeComponentから)で管理できるデータを管理するHMRを使用していますか?
デコレータ@HmrState()
の目的は何ですか?
ありがとうございました。