热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

是否值得从Angular2迁移到Angular4?

如何解决《是否值得从Angular2迁移到Angular4?》经验,为你挑选了1个好方法。

您好SO社区和Angularians!

因此,我正在Angular 2中开发一个巨大的平台.我意识到Angular 2的许多外部库和依赖项正在迁移到新的Angular 4.很明显,给了我许多错误.

我可以分叉这些库并使用分叉版本并订阅主库开发,或者我可以升级到Angular 4我的项目.

要回答的问题是为了确定我是否值得迁移:

与Angular 2.4的兼容性

我发现了一些改进以确保与遗留的兼容性,如下所示:https://github.com/angular/angular/commit/e99d721

改变app范围

我是否必须通过我的整个应用程序并开始修复?

我的意思是,主要功能是否以这种方式重新设计,我将不得不审查其中的许多功能?

或者,是否有许多构建/核心不兼容性,这将使我几天占用修复编译错误/警告而不是开发?

我不是要求有人为我做研究,我问人们可能已经完成了这个过程,或者只是熟悉两个版本,以便给我一些经验提示,澄清等.

目前,我在这里做研究:

https://github.com/angular/angular/blob/master/CHANGELOG.md

http://angularjs.blogspot.it/2017/03/angular-400-now-available.html

https://learninglaravel.net/angular-4-new-features-and-improvements

UPDATE

我刚刚迁移到Angular 4.@PierreDuc在他的回答中提供的链接是一个非常好的工具,可以在迁移过程中获得合适的指导.

我建议:

    阅读新功能并使用Angular 4更新自己.这非常有用:https://angularjs.blogspot.it/2017/03/angular-400-now-available.html

    遵循Angular的指南并修改您的项目:https://angular-update-guide.firebaseapp.com/

我还建议您提交当前项目,在dev存储库中创建一个新分支,然后继续在该分支中进行迁移.

一个问题,我遇到:
Input,OutputContentChild会从错误的道路进口.

我的情况:

import { Component, OnInit, OnDestro } from '@angular/core';
import { Input, ContentChild } from "@angular/core/src/metadata/directives";

解:

import { Component, OnInit, OnDestroy, Input, ContentChild } from '@angular/core';

PierreDuc.. 25

如果您查看更改日志,则需要注意以下几点:

在更新之前

确保您不使用扩展OnInit,或对任何生命周期事件使用扩展.而是使用implements .

停止使用DefaultIterableDiffer,KeyValueDiffers#factoriesIterableDiffers#factories

停止使用深度导入,这些符号现在标记为?并且不是我们的公共API的一部分.

停止使用,Renderer.invokeElementMethod因为此方法已被删除.目前没有替代品.

在更新期间

将所有依赖项更新到版本4和最新的打字稿.

如果您使用的是Linux/Mac,则可以使用: npm install @angular/{animations,common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router}@4.0.0 typescript@latest --save

如果你在你的应用程序中使用动画,你应该导入 BrowserAnimationsModule@angular/platform-browser/animations您的应用程序NgModule.

替换RootRendererRendererFactory2.

替换RendererRenderer2.

更新后

将您的template代码重命名为ng-template.

替换OpaqueTokensInjectionTokens.

如果你调用DifferFactory.create(...)删除ChangeDetectorRef 参数.

替换ngOutletContextngTemplateOutletContext.

替换CollectionChangeRecordIterableChangeRecord

资源



1> PierreDuc..:

如果您查看更改日志,则需要注意以下几点:

在更新之前

确保您不使用扩展OnInit,或对任何生命周期事件使用扩展.而是使用implements .

停止使用DefaultIterableDiffer,KeyValueDiffers#factoriesIterableDiffers#factories

停止使用深度导入,这些符号现在标记为?并且不是我们的公共API的一部分.

停止使用,Renderer.invokeElementMethod因为此方法已被删除.目前没有替代品.

在更新期间

将所有依赖项更新到版本4和最新的打字稿.

如果您使用的是Linux/Mac,则可以使用: npm install @angular/{animations,common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router}@4.0.0 typescript@latest --save

如果你在你的应用程序中使用动画,你应该导入 BrowserAnimationsModule@angular/platform-browser/animations您的应用程序NgModule.

替换RootRendererRendererFactory2.

替换RendererRenderer2.

更新后

将您的template代码重命名为ng-template.

替换OpaqueTokensInjectionTokens.

如果你调用DifferFactory.create(...)删除ChangeDetectorRef 参数.

替换ngOutletContextngTemplateOutletContext.

替换CollectionChangeRecordIterableChangeRecord

资源


推荐阅读
  • vue使用
    关键词: ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文详细介绍了cisco路由器IOS损坏时的恢复方法,包括进入ROMMON模式、设置IP地址、子网掩码、默认网关以及使用TFTP服务器传输IOS文件的步骤。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了Hive常用命令及其用途,包括列出数据表、显示表字段信息、进入数据库、执行select操作、导出数据到csv文件等。同时还涉及了在AndroidManifest.xml中获取meta-data的value值的方法。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
author-avatar
莹TX_937
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有