Я очищаю свой проект angular2 и по многим причинам, я решил начать с семени. This one.NG2: angular2-webpack-starter - какова цель HMR?
Это семя использует HMR, но я не совсем понимаю, в чем его цель.
В начале я думал, что HMR был о динамической загрузке и заменяющий компонент во время работы веб-приложения.
Но поскольку я посмотрел на 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()
здесь?
Спасибо.