我正在清理我的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 = { };
。這項服務是否使用HMR來管理我們可以使用this.appState.set('value', value);
(這是來自HomeComponent)管理的數據,就像一個Redux的商店(沒有動作,調度員,blabla)?
修飾器@HmrState()
在這裏的目的是什麼?
謝謝。