Я очищаю свой проект angular2 и по многим причинам, я решил начать с семени. Этот.
Это семя использует 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()
здесь?
Спасибо.