今回は Angular の HMR 機能を実装する方法を紹介します。 Angular の HMR 機能を実装する際の注意点は次のとおりです。 最近同僚が Angular を使用していたとき、コードを変更した後にブラウザが更新されず、変更されたコンポーネントに応じてページが自動的に
更新する VUE のような機能が欲しいと考えていました。この機能の名前はHMR(ホットモジュールリプレース)です。 少し調べたところ、angular/cli で作成したプロジェクトにこれを実装するのはそれほど難しくないことがわかりました。手順は次のとおりです。
1. まず src/environments/environment.hmr.ts ファイルを作成します。次の内容です
export const environment = { production: false, hmr: true };
もちろん、対応するenvironment.prod.tsとenvironment.tsにはhmr: falseを追加する必要があります。
environment.tsのhmrがtrueに設定されている場合、ngserve --hmrは次のようになります。同じ効果です。ただし、ホットリプレースメント機能についてはあまり自信がありません。ブラウザを更新すると
stateが確実にきれいになるため、environment.ts の hmr を false にします。 2. json ファイル hmr 環境を次のように追加します。
"environments": { ... "hmr": "environments/environment.hmr.ts", }
3. package.json のスクリプトに新しいコマンドを追加します。 (もちろん、追加せずに ngserve --hmr -e=hmr を実行することもできます。これは、npm run hmr を実行するのと同じ効果があります)
hrreee4.
hmr モジュールをインストールします。 コマンドは次のとおりです。 :"scripts": { ... "hmr": "ng serve --hmr -e=hmr" }
npm install --save-dev @angularclass/hmr
import { NgModuleRef, ApplicationRef } from '@angular/core'; import { createNewHosts } from '@angularclass/hmr'; export const hmrBootstrap = (module: any, bootstrap: () => Promise<NgModuleRef<any>>) => { let ngModule: NgModuleRef<any>; module.hot.accept(); bootstrap().then(currentModule => ngModule = currentModule); module.hot.dispose(() => { const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef); const elements = appRef.components.map(c => c.location.nativeElement); const removeOldHosts = createNewHosts(elements); ngModule.destroy(); removeOldHosts(); }); };
Expressのデフォルトログコンポーネントmorganの詳細な紹介
Webpackのホットモジュール置換HMR/ホットアップデートの具体的な手順
以上がAngularのHMR機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。