目次
この記事では、angularjs2+ を angularjs1.x からアップグレードするためのソリューションを紹介し、angularjs1.x と angularjs2+ の間の並列性についても紹介します" >この記事では、angularjs2+ を angularjs1.x からアップグレードするためのソリューションを紹介し、angularjs1.x と angularjs2+ の間の並列性についても紹介します
ホームページ ウェブフロントエンド jsチュートリアル Angular1.x と angular2+ は並行して実行され、angular1.x は angular2+ ソリューションをアップグレードします

Angular1.x と angular2+ は並行して実行され、angular1.x は angular2+ ソリューションをアップグレードします

Sep 07, 2018 pm 05:33 PM
angular.js javascript typescript

この記事では、angularjs2+ を angularjs1.x からアップグレードするためのソリューションを紹介し、angularjs1.x と angularjs2+ の間の並列性についても紹介します

angular1.x の angular2+ のアップグレード ソリューション

私が提供するのは、angular1 の並列増分アップグレード ソリューションです。

  • オプション 1: 本体は angular1.x で、angular1.x のサービス、コンポーネント、フィルター、コントローラー、ルート、依存関係を段階的にアップグレードします。 angular5 へ

  • オプション 2: 本体は angular5 で、プロジェクトのすべての js ファイルが最初にアップグレードされます 1 回限りの処理で、ES6 メソッドを使用して各 js ファイル モジュールをエクスポート

    し、その後内容を徐々に angular5 に近づけますangular5

同じアプリケーション内でこれら 2 つのフレームワークを一緒に実行し、AngularJS コンポーネントを 1 つずつ Angular に移行することで段階的にアップグレードするオプション 1 をお勧めします。 この作業は複数人で完了し、時間をかけて段階的に展開できるため、他のビジネスを中断することなくアプリケーションをアップグレードできます。以下はオプション 1 の説明です

ハイブリッド APP は主に Angular に依存してアップグレードを提供します。静的モジュール。今後、あらゆる場所で見かけることになるでしょう。以下では、angular1 を移行する方法を段階的に説明します。 Angular では、メタデータ内の Angular リソースを記述するために使用される NgModule デコレータを使用して 1 つ以上のクラスを作成します。ハイブリッド アプリケーションでは、2 つのバージョンの Angular を同時に実行します。 これは、AngularJS と Angular からそれぞれ少なくとも 1 つのモジュールが必要であることを意味します。ハイブリッド アプリケーションをブートストラップするには、アプリケーションで Angular と AngularJS の両方をブートストラップする必要があります。まず Angular をブートストラップし、次に UpgradeModule を呼び出して AngularJS をブートストラップする必要があります。 HTML から ng-app および ng-strict-di ディレクティブを削除し、app.module.ts ファイルを作成し、次の NgModule クラスを追加します。

import { UpgradeModule } from '@angular/upgrade/static';
@NgModule({   
  imports: [  
    UpgradeModule
  ]
})
export class AppModule {
  constructor(private upgrade: UpgradeModule) { }    
  ngDoBootstrap() {
    this.upgrade.bootstrap(document.body, ['yourAngularJsAppName'], { strictDi: true });
  }
}
ログイン後にコピー

AppModule.ngDoBootstrap メソッドを使用して AngularJS アプリケーションを起動します。 platformBrowserDynamic.bootstrapModule メソッドを使用して AppModule を起動できます。 main.ts:

import {AppModule} from './app/app.module';
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.log(err));
ログイン後にコピー

まもなく AngularJS+5 ハイブリッド アプリケーションの実行を開始します。既存の AngularJS コードはすべて以前と同様に正常に動作しますが、Angular コードを実行することもできます

2. プロジェクト内のサービスを段階的に angular5 にアップグレードします

username-service.js のコンテンツをアップグレードします。 .ts:

import { Injectable } from '@angular/core';
@Injectable() 
export class UsernameService {
  get() {
    return 'nina'
  }
}
ログイン後にコピー

angular1.x で UsernameService を使用するには、まず downgrade-services.ts ファイルを作成します。このファイルには、angular5 services をダウングレードした後に angular1.x で使用されるすべてのサービスが保存されます

downgrade-services.ts:

import * as angular from 'angular';
import { downgradeInjectable } from '@angular/upgrade/static';
import { UsernameService  } from './services/ username-service '; 
angular.module('yourAngularJsAppName')
  .factory('UsernameService', downgradeInjectable(UsernameService));
ログイン後にコピー
Afterこれらの 2 つの手順を完了すると、 UsernameService を angular1 に挿入でき、プロジェクト内のフィルターは angular5 のパイプに徐々にアップグレードされ、フィルターのモジュールは angular1 で使用されます。 angular5 のコンポーネントに

hero-detail.js のコンテンツを hero-detail.ts にアップグレードします:

import { Pipe, PipeTransform } from '@angular/core';
Pipe({
  name: 'username'
})
export class usernamePipe implements PipeTransform { 
  transform(value: string): string {
    return value === 'nina' ? '张三' : value;
  }
}
ログイン後にコピー
angular1.x で hero-detail コンポーネントを使用するには、まず downgrade-components .ts ファイルを作成します。ここには、angular5 コンポーネントをダウングレードした後に angular1.x で使用されるすべてのコンポーネントが保存されます

downgrade-components.ts:

import { Component, EventEmitter, Input, Output, ViewContainerRef } from '@angular/core';
import { UsernameService } from '../../service/username-service';
@Component({
  selector: 'hero-detail',
  templateUrl: './hero-detail.component.html'
})
export class HeroDetailComponent {
  Public hero: string;
  
  constructor(private usernameService: UsernameService) {
      this.hero = usernameService.get()
  }
}
ログイン後にコピー
これで、angular1.x のテンプレートで hero-detail コンポーネントを使用できるようになります。コンポーネント間の通信の問題は、 angular5

5のインターフェースに従って書かれています。そのため、コンポーネントメソッドに従ってコントローラーを再構築し、コントローラーを再構築した後、ルーティングを変更する必要があります。 angular1.x のルーティングを使用します。基本的に、ルートはコントローラーに対応します。このルートは次のように変更できます:

TestContentCtrl があり、対応するルートが test であるとします (詳細を確認したい場合は、 PHP 中国語 Web サイト

AngularJS 開発マニュアル

を参照してください)

import * as angular from 'angular';
import { downgradeComponent } from '@angular/upgrade/static';
import { HeroDetailComponent } from './app/components/hero-detail/hero-detail.component';
angular.module('yourAngularJsAppName')
  .directive('heroDetail', downgradeComponent({ component: HeroDetailComponent }) as angular.IDirectiveFactory)
ログイン後にコピー

TestContentCtrl を test-content コンポーネントに変更した後

.state('test', {
  url: '/test',
  controller: 'TestContentCtrl',
  controllerAs: 'vm',
  templateUrl: './src/controllers/test-content-ctrl.html'
 })
ログイン後にコピー

6. サードパーティのプラグインまたはライブラリ ソリューション

angular1 ベースのプラグインまたはライブラリに関して、angular1 での対応する使用方法が変更されました。プラグインを使用するには、すべてのプラグインを確認し、angular2+ バージョンの API を使用してください。 angular2+ バージョンを導入し、angular1 を維持します。

オプション 2 では、プロジェクトのサイズが増加し、同じプラグインが 2 つのバージョンを参照します。オプション 2 は、最初の画面の読み込み時間に影響を与えることなく、適切な選択です。これは、すべてのプラグインまたはライブラリのすべての API を一度に実行することは比較的大きなワークロードであり、エラーが発生しやすく、元の方法とは一致しないためです。増分アップグレードの目的
  • 基本的にプロジェクト内のすべてのコンテンツが angular5 にアップグレードされたので、2 つのファイル downgrade-services.ts と downgrade-components.ts を削除し、ルーティングを angular5 にアップグレードし、 angular1.x 関連のライブラリとプラグインを使用すると、完全な angular5 アプリケーションが誕生します
  • さて、この記事は終わりです (さらに詳しく知りたい場合は、PHP 中国語 Web サイト

    AngularJS ユーザー マニュアル
    にアクセスして学習してください)。ご質問がございましたら、以下にメッセージを残してください。

以上がAngular1.x と angular2+ は並行して実行され、angular1.x は angular2+ ソリューションをアップグレードしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

WebSocket と JavaScript を使用してオンライン共同エディターを実装する方法 WebSocket と JavaScript を使用してオンライン共同エディターを実装する方法 Dec 17, 2023 pm 01:37 PM

リアルタイムの共同エディターは、特にさまざまなチーム コラボレーション、オンライン ドキュメント編集、タスク管理シナリオにおいて、現代の Web 開発の標準機能となっています。WebSocket に基づくリアルタイム通信テクノロジは、チーム メンバー間の通信効率とコラボレーション効果を向上させることができます。この記事では、WebSocket と JavaScript を使用してシンプルなオンライン共同エディターを構築する方法を紹介し、読者が WebSocket の原理と使用法をよりよく理解できるようにします。 WebSocketWebSo の基本原理を理解する

See all articles