<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        angular1.x和angular2+并行,angular1.x升級(jí)angular2+方案

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 19:31:29
        文檔

        angular1.x和angular2+并行,angular1.x升級(jí)angular2+方案

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

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

        angular1.x 升級(jí) angular2+ 方案

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

      1. 方案1:主體為angular1.x,逐步將angular1.x當(dāng)中service、component、filter、controller、route、dependencies升級(jí)為angular5

      2. 方案2: 主體為angular5,將項(xiàng)目所有js文件先進(jìn)行一次加工,采用ES6的方式將每個(gè)js文件module
        export出來,再逐步將內(nèi)容向angular5靠近

      3. 我建議選擇方案1增量式升級(jí),通過在同一個(gè)應(yīng)用中一起運(yùn)行這兩個(gè)框架,并且逐個(gè)把AngularJS的組件遷移到Angular中。 可以在不必打斷其它業(yè)務(wù)的前提下,升級(jí)應(yīng)用程序,因?yàn)檫@項(xiàng)工作可以多人協(xié)作完成,在一段時(shí)間內(nèi)逐漸鋪開,下面就方案1展開說明

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

        1、調(diào)用 UpgradeModule 來引導(dǎo) AngularJS

        在AngularJS中,我們會(huì)把AngularJS的資源添加到angular.module屬性上。 在Angular中,我們會(huì)創(chuàng)建一個(gè)或多個(gè)帶有NgModule裝飾器的類,這些裝飾器用來在元數(shù)據(jù)中描述Angular資源。在混合式應(yīng)用中,我們同時(shí)運(yùn)行了兩個(gè)版本的Angular。 這意味著我們至少需要AngularJS和Angular各提供一個(gè)模塊。要想引導(dǎo)混合式應(yīng)用,我們在應(yīng)用中必須同時(shí)引導(dǎo) Angular 和 AngularJS。要先引導(dǎo) Angular ,然后再調(diào)用 UpgradeModule 來引導(dǎo) AngularJS。

        從HTML中移除ng-app和ng-strict-di指令, 創(chuàng)建一個(gè)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方法中啟動(dòng) AngularJS 應(yīng)用,現(xiàn)在我們就可以使用 platformBrowserDynamic.bootstrapModule 方法來啟動(dòng) AppModule 了。

        main.ts:

        import {AppModule} from './app/app.module';
        import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
        
        platformBrowserDynamic().bootstrapModule(AppModule)
         .catch(err => console.log(err));

        我們就要開始運(yùn)行AngularJS+5的混合式應(yīng)用程序了!所有現(xiàn)存的AngularJS代碼會(huì)像以前一樣正常工作,但是我們現(xiàn)在也同樣可以運(yùn)行Angular代碼了

        2、將項(xiàng)目中的services逐步升級(jí)為angular5

        我們將username-service.js里面的內(nèi)容升級(jí)為username-service.ts:

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

        要在angular1.x中使用UsernameService,先創(chuàng)建一個(gè)downgrade-services.ts文件,這里將會(huì)存放所有angular5服務(wù)降級(jí)后在angular1.x中使用的服務(wù)

        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、項(xiàng)目中的filter逐步升級(jí)為angular5的pipe,同時(shí)angular1.x的filter依然保留

        由于filter的性能問題angular2中已經(jīng)將filter改為pipe,angular團(tuán)隊(duì)沒有提供filter升級(jí)為pipe,或者pipe降級(jí)為filter的module,所以angular1.x中使用filter,angular中使用pipe,filter的升級(jí)放在component之前,因?yàn)閏omponent的template可能會(huì)用到

        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、將項(xiàng)目中的component逐步升級(jí)為angular5的component

        我們將hero-detail.js里面的內(nèi)容升級(jí)為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,先創(chuàng)建一個(gè)downgrade-components.ts文件,這里將會(huì)存放所有angular5組件降級(jí)后在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)

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

        5、將angular1.x controller改成angular5 component

        現(xiàn)在就剩下controller了,angular2已經(jīng)取消了controller,controller可以把它當(dāng)成一個(gè)大的component,所以我們按照component的方法重構(gòu)controller,并且對新的component降級(jí),controller重構(gòu)之后我們需要修改路由,我們現(xiàn)在使用的還是angular1.x的路由,基本上一個(gè)路由對應(yīng)的是一個(gè)controller,這個(gè)時(shí)候路由可以這樣修改:

        假設(shè)有個(gè)TestContentCtrl,對應(yīng)的路由是test(想看更多就到PHP中文網(wǎng)AngularJS開發(fā)手冊中學(xué)習(xí))

        .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、第三方插件或者庫解決方案

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

      4. 引入angular2+的版本,刪除angular1.x版本,降級(jí)后在angular1.x應(yīng)用中用到該插件的都檢查一次,運(yùn)用angular2+的版本的API使用該插件

      5. 引入angular2+的版本,保留angular1.x版本,angular1.x應(yīng)用使用angular1.x版本插件,
        angular5應(yīng)用使用angular2+版本插件,

        方案2增加了項(xiàng)目的體積,相同的插件引用了兩個(gè)版本。在不影響首屏加載時(shí)間的情況下方案2是不錯(cuò)的選擇,因?yàn)橐淮涡詫⑺胁寮蛘邘斓腁PI全部過一遍,工作量比較大容易出錯(cuò),也不符合我們增量式升級(jí)的初衷

      6. 現(xiàn)在項(xiàng)目中所有的內(nèi)容基本都升級(jí)為angular5了,我們可以刪除downgrade-services.ts和downgrade-components.ts這兩個(gè)文件了,同時(shí)將路由升級(jí)為angular5,刪除angular1.x相關(guān)的庫和插件,一個(gè)完整的angular5應(yīng)用就誕生了

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

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        angular1.x和angular2+并行,angular1.x升級(jí)angular2+方案

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲熟妇丰满多毛XXXX| 国内精品免费视频自在线| 永久亚洲成a人片777777| 手机永久免费的AV在线电影网| 亚洲码欧美码一区二区三区| 1024免费福利永久观看网站| 亚洲国产精品综合一区在线| 日本精品人妻无码免费大全| 亚洲色偷偷色噜噜狠狠99网| 国产色婷婷精品免费视频| 亚洲va中文字幕无码久久| 久久青草免费91观看| 免费永久在线观看黄网站| 女人裸身j部免费视频无遮挡| 最刺激黄a大片免费网站| 亚洲日本香蕉视频| 天天摸天天操免费播放小视频| 亚洲成a人片77777kkkk| 999久久久免费精品播放| 亚洲国产精品成人精品软件| 中文字幕av无码不卡免费| 亚洲国产高清在线| 日韩一区二区a片免费观看| 亚洲av无码一区二区三区天堂| 黄页网站在线看免费| 亚洲AV无码成人精品区在线观看| 午夜亚洲国产精品福利| 伊伊人成亚洲综合人网7777| 99久久人妻精品免费一区| 亚洲欧洲日产国码久在线| 亚洲伊人久久综合影院| 少妇无码一区二区三区免费| 亚洲精品国产综合久久久久紧| 97视频免费观看2区| 亚洲人成色777777精品| 国产亚洲老熟女视频| 91成人免费观看网站| 色老头综合免费视频| 亚洲人成电影在线观看网| 亚洲精品国产成人影院| 成人免费的性色视频|