国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

angular1.x和angular2+并行,angular1.x升級angular2+方案

來源:懂視網 責編:小采 時間:2020-11-27 19:31:29
文檔

angular1.x和angular2+并行,angular1.x升級angular2+方案

angular1.x和angular2+并行,angular1.x升級angular2+方案:本篇文章介紹的是關于angularjs1.x升級angularjs2+方案,還有介紹了angularjs1.x和angularjs2+的并行,現在我們就一起來看這篇文章吧angular1.x 升級 angular2+ 方案我給大家提供的是angular1.x和angular5并行,增量式升級方案,這樣大家可
推薦度:
導讀angular1.x和angular2+并行,angular1.x升級angular2+方案:本篇文章介紹的是關于angularjs1.x升級angularjs2+方案,還有介紹了angularjs1.x和angularjs2+的并行,現在我們就一起來看這篇文章吧angular1.x 升級 angular2+ 方案我給大家提供的是angular1.x和angular5并行,增量式升級方案,這樣大家可

本篇文章介紹的是關于angularjs1.x升級angularjs2+方案,還有介紹了angularjs1.x和angularjs2+的并行,現在我們就一起來看這篇文章吧

angular1.x 升級 angular2+ 方案

我給大家提供的是angular1.x和angular5并行,增量式升級方案,這樣大家可以循序漸進升級自己的應用,不想看文字直接demo入手migration-from-angular1.x-to-angular2Plus

  • 方案1:主體為angular1.x,逐步將angular1.x當中service、component、filter、controller、route、dependencies升級為angular5

  • 方案2: 主體為angular5,將項目所有js文件先進行一次加工,采用ES6的方式將每個js文件module
    export出來,再逐步將內容向angular5靠近

  • 我建議選擇方案1增量式升級,通過在同一個應用中一起運行這兩個框架,并且逐個把AngularJS的組件遷移到Angular中。 可以在不必打斷其它業務的前提下,升級應用程序,因為這項工作可以多人協作完成,在一段時間內逐漸鋪開,下面就方案1展開說明

    Hybrid APP主要依賴Angular提供upgrade/static模塊。后面你將隨處可見它的身影。以下手把手教你將angular1.x遷移到angular2+

    1、調用 UpgradeModule 來引導 AngularJS

    在AngularJS中,我們會把AngularJS的資源添加到angular.module屬性上。 在Angular中,我們會創建一個或多個帶有NgModule裝飾器的類,這些裝飾器用來在元數據中描述Angular資源。在混合式應用中,我們同時運行了兩個版本的Angular。 這意味著我們至少需要AngularJS和Angular各提供一個模塊。要想引導混合式應用,我們在應用中必須同時引導 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、將項目中的services逐步升級為angular5

    我們將username-service.js里面的內容升級為username-service.ts:

    import { Injectable } from '@angular/core';
    @Injectable() 
    export class UsernameService {
     get() {
     return 'nina'
     }
    }

    要在angular1.x中使用UsernameService,先創建一個downgrade-services.ts文件,這里將會存放所有angular5服務降級后在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));

    完成這兩步之后UsernameService就可以在angular1.x controller component service等注入使用了,在angular5中的使用方法這里就不舉例了,按照angular5的使用方法來就行

    3、項目中的filter逐步升級為angular5的pipe,同時angular1.x的filter依然保留

    由于filter的性能問題angular2中已經將filter改為pipe,angular團隊沒有提供filter升級為pipe,或者pipe降級為filter的module,所以angular1.x中使用filter,angular中使用pipe,filter的升級放在component之前,因為component的template可能會用到

    username-pipe.ts:

    import { Pipe, PipeTransform } from '@angular/core';
    Pipe({
     name: 'username'
    })
    export class usernamePipe implements PipeTransform { 
     transform(value: string): string {
     return value === 'nina' ? '張三' : value;
     }
    }

    4、將項目中的component逐步升級為angular5的component

    我們將hero-detail.js里面的內容升級為hero-detail.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 component,先創建一個downgrade-components.ts文件,這里將會存放所有angular5組件降級后在angular1.x中使用的組件

    downgrade-components.ts:

    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)

    現在你可以在angular1.x中的template中使用hero-detail組件了,組件之間通訊的問題按照angular5的接口寫

    5、將angular1.x controller改成angular5 component

    現在就剩下controller了,angular2已經取消了controller,controller可以把它當成一個大的component,所以我們按照component的方法重構controller,并且對新的component降級,controller重構之后我們需要修改路由,我們現在使用的還是angular1.x的路由,基本上一個路由對應的是一個controller,這個時候路由可以這樣修改:

    假設有個TestContentCtrl,對應的路由是test(想看更多就到PHP中文網AngularJS開發手冊中學習)

    .state('test', {
     url: '/test',
     controller: 'TestContentCtrl',
     controllerAs: 'vm',
     templateUrl: './src/controllers/test-content-ctrl.html'
     })

    在TestContentCtrl改成test-content component后

    .state('test', {
     url: '/test',
     template: '<test-content></test-content>'
     })

    6、第三方插件或者庫解決方案

    關于項目中引用基于angular1.x的插件或者庫,基本都能找到angular2+的版本,可以將angular2+的版本引入進行降級處理就可以在angular1.x中使用了,但是~~~, angular2+的版本很多API都改了,angular1.x中的對應使用方法可能不存在了,這里有兩種解決方案

  • 引入angular2+的版本,刪除angular1.x版本,降級后在angular1.x應用中用到該插件的都檢查一次,運用angular2+的版本的API使用該插件

  • 引入angular2+的版本,保留angular1.x版本,angular1.x應用使用angular1.x版本插件,
    angular5應用使用angular2+版本插件,

    方案2增加了項目的體積,相同的插件引用了兩個版本。在不影響首屏加載時間的情況下方案2是不錯的選擇,因為一次性將所有插件或者庫的API全部過一遍,工作量比較大容易出錯,也不符合我們增量式升級的初衷

  • 現在項目中所有的內容基本都升級為angular5了,我們可以刪除downgrade-services.ts和downgrade-components.ts這兩個文件了,同時將路由升級為angular5,刪除angular1.x相關的庫和插件,一個完整的angular5應用就誕生了

    好了,本篇文章到這就結束了(想看更多就到PHP中文網AngularJS使用手冊中學習),有問題的可以在下方留言提問。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    angular1.x和angular2+并行,angular1.x升級angular2+方案

    angular1.x和angular2+并行,angular1.x升級angular2+方案:本篇文章介紹的是關于angularjs1.x升級angularjs2+方案,還有介紹了angularjs1.x和angularjs2+的并行,現在我們就一起來看這篇文章吧angular1.x 升級 angular2+ 方案我給大家提供的是angular1.x和angular5并行,增量式升級方案,這樣大家可
    推薦度:
    標簽: 升級 并行 an
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产一二三区在线 | 国产欧美另类久久精品91 | 亚洲欧美一区二区三区久久 | 在线亚洲欧美日韩 | 欧美亚洲综合一区 | 在线h片| 精品国产一区二区三区免费看 | 免费视频国产 | 日韩国产综合 | 日本美女一区二区 | 国产成人综合久久精品亚洲 | 在线播放国产精品 | 国产激情一级毛片久久久 | 亚洲欧美日韩电影 | 国产毛片视频 | 中文字幕一区久久久久 | 午夜视频在线免费观看 | 亚洲色图欧美另类 | 精品国产欧美一区二区五十路 | 久久成人a毛片免费观看网站 | 亚洲第一视频区 | 在线免费一区二区 | 最近免费中文字幕大全免费版视频 | 特一级大黄在线观看 | 小说区 亚洲 自拍 另类 | 青青草原国产一区二区 | 欧美 日韩 亚洲另类专区 | 国产亚洲欧美日韩俺去了 | 伊人久久精品成人网 | 91欧美亚洲| 曰韩欧美| 国内精品线在线观看 | 久久久一区二区三区不卡 | 国产在线视频一区 | 一区二区三区高清 | 国产边打电话边做对白刺激 | a欧美在线 | 亚洲第一页在线播放 | 国内精品视频在线观看 | 国产国语在线播放视频 | 国产欧美日本在线 |