Sprzątam mój projekt kątowy2 i z wielu powodów postanowiłem zacząć od nasienia. This one.NG2: angular2-webpack-starter - jaki jest cel HMR?
To nasienie używa HMR, ale nie do końca rozumiem, jaki jest tego cel.
Na początku myślałem, że HMR dotyczy dynamicznego ładowania i zastępowania komponentu podczas działania aplikacji internetowej.
Ale odkąd spuściłem wzrok na app.service.ts
, zgubiłem się. Oto kod tej usługi:
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));
}
}
Myślałem, że ta usługa po prostu zapewnia miejsce do przechowywania niektórych danych. W końcu to tylko przykład.
Ale ta linia mnie zmyliła: @HmrState() _state = { };
. Czy ta usługa używa HMR do zarządzania danymi, którymi możemy zarządzać za pomocą this.appState.set('value', value);
(to jest z HomeComponent), tak jak mały sklep Redux (bez akcji, dyspozytora, blabla)?
Jaki jest cel dekoratora @HmrState()
tutaj?
Dzięki.