位置: 编程技术 - 正文

Angular 5.0 来了! 有这些大变化(angular ...)

编辑:rootadmin

推荐整理分享Angular 5.0 来了! 有这些大变化(angular ...),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:angular4.0,angular1.0,angular4.0,angular1.0,angular1.0,angular 2020,angular4.0,angular1.0,内容如对您有帮助,希望把文章链接给更多的朋友!

我们很高兴地宣布Angular 5.0.0——五角形甜甜圈发布啦!这又是一个主版本,包含新功能并修复了很多bug。它再次体现了我们把Angular做得更小、更快、更好用的一贯目标。

以下简单介绍v5的重大变化。要了解详情,请看changelog。

构建优化器

5.0.0开始,通过CLI执行的产品构建默认使用构建优化器。

构建优化器是CLI中的一个工具,它基于我们对你Angular应用的理解,可以把构建后的包变得更小。

构建优化器有两个主要任务。首先,把你应用的某些部分标记为pure,以便原有工具利用它改进“tree shaking”的优化效果,同时删除应用中不必要的东西。

其次,构建优化器会从你的应用中删除Angular装饰器代码。装饰器只有编译器会用,运行时不用,可以删掉。上述两项优化都可以减少生成JS包的大小,同时加快应用启动速度。

Angular Universal状态转交API及对DOM的支持

这样更便于在服务端和客户之间共享应用状态。

Angular Universal是一个帮助开发者执行服务端渲染(SSR)的项目。服务端渲染生成的HTML对不支持JS的蜘蛛和爬虫友好,同时有助于提升用户感知性能。

在5.0.0中,开发团队添加了ServerTransferStateModule及对应的BrowserTransferStateModule。这个模块可以帮开发者在服务端渲染生成的内容中加入相关信息,然后传送给客户端,从而避免重复生成。这对于通过HTTP获取数据的场景是很有用的。通过把状态从服务器传送到客户端,开发者就不用再发第二次HTTP请求了。状态转交的相关文档几周后会发布。

Angular Universal团队还把平台服务器Domino加到了平台服务器中。Domino支持在服务器端环境下更多的开箱即用的DOM操作,可以改进我们对非服务端第三方JS及组件库的支持。

编译器改进

为支持递增编译,我们改进了Angular编译器。结果让重新构建加快,特别是对产品构建和AOT构建,效果更明显。我们还增强了装饰器,通过删除空白达到减少包大小的目的。

TypeScript转换

现在,Angular编译器底层的工作机制是TypeScript转换,从而让递增式重新构建快了很多。TypeScript转换是TypeScript 2.3新增的一个特性,可以让我们深入到标准TypeScript编译管道。

在打开AOT标签的情况下,运行ng serve就可以利用上述机制。

ng serve --aot

建议大家都试一下。将来这个配置会成为CLI的默认值。很多项目都有性能问题,涉及上千组件,我们希望各种规模的项目都能从这些改进中受益。

在执行 的递增AOT构建时,新编译器管道可节省%的构建时间(在我们开发机上测试的结果是从多秒减少为不到2秒)。

我们的目标是让AOT编译快到能开发者用它开发的程度。现在,我们已经冲进了2秒以内,因此将来的CLI中可能会默认开启AOT。

作为向本次转换过渡的一步,我们不再需要genDir,而outDir也变了:现在,我们会把为包生成的文件都打到node_modules里。

保留空白

过去编译器会忠实地复现并在模板中包含制表符、换行符和空白。现在你可选择是否在组件和应用中包含空白了。

可以在每个组件的装饰器中指定这个配置,而当前的默认值为true。

或者也可以在tsconfig.json中进行全局配置,其中该项默认值也是true。

一般规则是组件级配置要覆盖应用级配置。开发团队打算将来把默认值改成false,默认为开发者节省空间。不要担心你的<pre>标签,编译器会智能处理它们。

改进的装饰器支持

现在支持Lambda和对象字面量useValue、useFactory和data装饰器中的表达式降级(expression lowering)。这样可以使用只能在运行时计算的装饰器中被降级(lower)的值。

因此现在可以不使用命名函数,而改用Lambda函数。换句话说,执行代码不会影响你的d.ts或你的外部API。

我们还会将表达式降级,作为useValue的一部分。

国际化的数值、日期和货币管道

我们写了新的数值、日期和货币管道,让跨浏览器国际化更方便,不需要再使用in的腻子脚本(polyfill)。

在以前版本的Angular中,我们一直依赖浏览器及其in API提供数值、日期和货币格式。为此,很多开发者都在使用腻子脚本(polyfill),而结果也不好。很多人反馈说一些常见的格式(如货币)不能做到开箱即用。

而在5.0.0中,我们把这个管道更新成了自己的实现,依赖CLDR提供广泛的地区支持,而且可配置。以下是我们对v4和v5所做的比较:a document comparing the pipe behavior between v4 and v5。

如果你还没条件使用新管理,可以导入DeprecatedINPipesModule以降级到旧的行为。

StaticInjector代替ReflectiveInjector

为了消除对更多腻子脚本(polyfill)的依赖,我们用StaticInjector代替了ReflectiveInjector。前者不再需要Reflect,为开发者减少了应用大小。

以前

ReflectiveInjector.resolveAndCreate(providers);

Angular 5.0 来了! 有这些大变化(angular ...)

以后

Injector.create(providers);

提升Zone的速度

一方面提升了Zone的速度,另一方面也可以在特别关注性能的应用中绕过它。

若要绕过它,启动应用时加上noop:

platformBrowserDynamic().bootstrapModule(AppModule, {ngZone: 'noop'}).then( ref => {} );

这里有一个完整的例子:the example ng-component-state project。

exportAs

组件和指令中增加了对多名称的支持。这有助于用户实现无痛迁移。通过把指令导出为多个名称,可以在不破坏原有代码的情况下在Angular语法中使用新名称。Angular Material项目已经在其前缀迁移项目中用上了,对其他组件作者肯定也有用。

示例

HttpClient

v4.3在@angular/common中推出过HttpClient,用于在Angular中发送请求,它小巧易用。HttpClient受到了开发者的广泛赞誉,因此我们推荐在所有应用中使用它,放弃之前的@angular/http library。

要升级HttpClient,需要在每个模块的@angular/common/http中把HttpModule替换为HttpClientModule,注入HttpClient服务,删除所有map(res => res.json())。

CLI v1.5

从Angluar CLI v1.5开始,已经开始支持Angluar v5.0.0,默认生成v5项目。

在这次小版本升级中,我们默认打开了构建优化器,让开发者拿到更小的包。

我们还修改了使用.tsconfig文件的方式,以更严格地遵守TypeScript标准。此前,如果检测到延迟加载的路由,而且你在tsconfig.json中手工指定了一组files或include,那这些路由会自动化处理。而如今,根据TypeScript规范,我们不再这么干了。默认情况下,CLI对TypeScript的配置中没有files或include,因此多数开发者不会受影响。

Angular表单添加updateOn Blur/Submit

这样可以根据blur或submit来运行验证和更新值的逻辑了,不必再单纯依赖input事件。

表单对应用很重要,如果有服务端验证,或者验证或更新值会触发较慢的操作,你当然希望它少跑几次。现在你可以在控件层面控制验证和更新值的时机了,也可以在表单层面设置。

此外,你现在可以直接在选项中指定asyncValidators,而不是通过第三个参数指定。

模板驱动的表单

以前

<input name="firstName" ngmodel=""/>

以后

或者

反应式表单

以前

以后

RxJS 5.5

我们已经把使用的RxJS更新到5.5.2或更高版本。这个新发布的RxJS可以让开发完全摆脱之前导入机制的副作用,因为我们以新的lettable operators的方式使用了RxJS。这些新操作符消除了副作用,以及之前导入操作符中“patch”方法存在代码切割和“tree shaking”等问题。

不再这样:

现在这样:

此外,RxJS现在发行了一个使用ECMAScript Modules的版本。新Angular CLI会默认拉取这个新版本,让包大小有明显减小。如果你没使用Angular CLI,那还是应该指向这个新版本。相关文档在此:Build and Treeshaking。

新的路由器生成周期事件

我们给路由器添加了新的生命周期事件,让开发者可以跟踪running guard启动到激活完成的各个阶段。这些事件可在有子组件更新时,在一个特定的路由器出口上展示加载动画,或者测量性能。

新的事件(按顺序)是GuardsCheckStart、ChildActivationStart、ActivationStart、GuardsCheckEnd、ResolveStart、ResolveEnd、ActivationEnd、ChildActivationEnd。以下是一个使用这些事件启动和停止加载动画的示例:

如何更新

这里有Angular Update Guide,告诉你整个过程,以及更新前要做哪些事,还有更新应用的步骤,以及做好迎接Angular未来版本的准备等信息。

我们删除很多以前废弃的API(如OpaqueToken),也公布了一些新的废弃项。以上指南会详细介绍这些变更。

已知问题

当前已知与source map相关的问题。某些source map会报“未定义的源”错误。

vue.js项目打包上线的图文教程 最近一直坚持每个月写一个小的vue.js开发的项目,最后开发完成后想到很久之前给别人回答的一个问题:vue的项目如何上线,当时有千奇百怪的回答,

Vue.js与 ASP.NET Core 服务端渲染功能整合

浅谈Vue.js 组件中的v-on绑定自定义事件理解 每个Vue实例都实现了事件接口(Eventsinterface),即:使用$on(eventName)监听事件使用$emit(eventName)触发事件Vue的事件系统分离自浏览器的EventTargetAPI。尽管它们

标签: angular ...

本文链接地址:https://www.jiuchutong.com/biancheng/377387.html 转载请保留说明!

上一篇:vuejs实现本地数据的筛选分页功能思路详解(vue.js computed)

下一篇:vue.js项目打包上线的图文教程(vue.js打包部署)

  • 小规模税费如何做分录
  • 上月多计提增值税
  • 研发支出指的是什么
  • 疫情期间社保单位不交个人吃亏吗
  • 小规模简易征收计算方法
  • 其他项目工会筹备金怎么报税
  • 单一窗口出口退税申报
  • 移动话费可以开企业发票吗
  • 企业开出的普票和专票对税额有影响吗
  • 核定征收企业可以申请高新技术
  • 房租费没有发票怎么做账务处理
  • 免税货物开成含税率的怎么报税?
  • 预收账款多说明什么
  • 劳务公司增值税怎么抵扣
  • 小规模纳税人实行简易征收办法
  • 危险废物处理费用发票怎么开
  • 公司按照实际利润额预缴企业所得税,这个实际利润额就是会计利润吗?
  • 什么时候计入其他综合收益什么时候计入投资收益
  • 个体工商户是否需要缴纳印花税
  • 公积金社保报销会计分录怎么写?
  • 企业的团队建设之荒野求生
  • linux系统 推荐
  • 财务费用借方记负数的原因
  • php清空数据表
  • 押金未退会计分录
  • php poll
  • 修建污水处理厂施工方案包括哪些内容
  • 工伤个人承担的费用
  • 享受安置残疾人优惠政策的报告怎么写
  • 物业公司管理制度及工作要求
  • 福利费可以抵扣进项吗?
  • 预缴季度企业所得税分录
  • 销售货物产生的运费怎么开票
  • php字符串包含某个字符串
  • 学堂在线结课后还能看吗
  • 33.JavaScript映射与集合(Map、Set)数据类型基础知识介绍与使用
  • opencv制作训练数据集
  • 长期股权投资初始计量会计科目
  • 增值税期末留抵退税
  • 材料发票和工程发票的区别
  • 社保和公积金在不同单位交可以吗
  • mysqljoin和where哪个好
  • 涉税金额是指金额还是税额
  • 建筑业增值税预缴管理办法
  • 小规模纳税人进项发票怎么做账
  • 注册资本印花税最新政策2023年
  • db2获取当前年月日
  • asp连接mysql数据库
  • 公司法人必须在公司名下缴纳社保吗
  • 企业净利润流量怎么算
  • 债务重组与资产重组
  • 如何解决私账流失问题
  • 内账中已交的增值税在哪
  • 收入与支出怎么说
  • 农民专业合作社是企业法人吗
  • 蔬菜公司开具专票可以抵扣吗
  • 技术服务费发票样本
  • 分公司有哪些特点
  • 公司章程约定的出资时间
  • 购买天然气进项税额
  • 小企业会计准则主要按照什么计量
  • 微软提示
  • win7开关机时间设置
  • telnet root
  • 在linux系统中命令
  • linux open o_direct
  • mac合盖不休眠怎么办
  • 电脑联想windows7
  • win8如何输入命令
  • win10怎么打开ie浏览器的兼容模式
  • js创建对象的方法有哪些
  • jquery 动态加载js
  • Ver、Vol、Ctty命令的使用教程
  • unity例子
  • JS、jQuery中select的用法详解
  • 批处理文件(.bat)怎么写?
  • js中改变css文件中的样式
  • Unity AssetBundle爬坑手记
  • 怎么代理保险业务
  • 河南林州在哪三省交界处
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设