ホームページ  >  記事  >  ウェブフロントエンド  >  Angular HMR関数の実装方法(コード付き)

Angular HMR関数の実装方法(コード付き)

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-20 10:16:471698ブラウズ

今回は、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 を実行するのと同じ効果があります)

hrreee

4. hmr モジュールをインストールします。 コマンドは次のとおりです。 :

"scripts": {
 ...
 "hmr": "ng serve --hmr -e=hmr"
}
5. srchmr.ts ファイルを作成します。内容は次のとおりです。

npm install --save-dev @angularclass/hmr
これは、交換後に元のブートストラップを置き換えるキーです (以下に示すように)。モジュールが更新されると、hmr は最初に古いモジュールを削除し、次に新しいモジュールを受信します。これらはすべてブラウザ内で行われます。したがって、ページは更新されません。

6. srcmain.ts ファイルを次のように更新します。

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();
 });
};
ここを置き換えるには、hmr に設定されている場合は hmrBootStrap を呼び出して Web ページを開始する必要があります。それ以外の場合は、過去の

7 を使用します。ここで npm run hmr または ngserve --hmr -e=hmr を実行すると、ホットリプレース機能が実現されます。

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

vueでのmint-uiの詳細な説明

JSクローリングページスクロールバー

JSソートアルゴリズムの概要

以上がAngular HMR関数の実装方法(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。