QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Angular 6 发布,新功能详解

  • 2018-05-07
  • 本文字数:2462 字

    阅读完需:约 8 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

5 月 4 日,Angular 6.0.0 正式发布,新版本重点关注工具链以及工具链在 Angular 中的运行速度问题。

这次更新还包括框架包(@angular/core,@angular/common,@angular/compiler 等)、Angular CLI、Angular Material + CDK,这主要是为了解决兼容问题,这些项目的补丁版本将根据项目需求发布。

ng update

ng update <package>是一种新的 CLI 命令,它可分析你的package.json,并基于对 Angular 的了解向你的应用程序推荐更新。

ng update可以帮助你使用正确版本的依赖包,让你的依赖包与你的应用程序同步,使用 schematics 时,第三方还能提供脚本更新。如果你的某个依赖包提供了ng update schematic,那么它在进行重大更改时会自动更新代码!

ng update不会取代你的软件包管理器,而是在后台使用 npm 或 yarn 来管理依赖包,除了更新和监视依赖包外,ng update还会在必要的时候对你的项目进行改造。

例如,命令ng update @angular/core将会更新所有的 Angular 包以及 RxJS、FTypeScript,它还将在这些包中运行可用的 schematics 以保证版本是最新的。同时,这个命令还能自动安装rxjs-compat到你的应用程序中,以使 RxJS v6 更加流畅。

ng add

另一项新的 CLI 命令ng add <package>将使你的项目更容易添加新功能。ng add使用软件包管理器来下载新的依赖包并调用安装脚本,它可以通过更改配置和添加额外的依赖包(如 polyfills)来更新你的应用。

你可在新的ng new应用程序中尝试以下动作:

  • ng add @angular/pwa:添加一个 app manifest 和 service worker,将你的应用程序变成 PWA。
  • ng add @ng-bootstrap/schematics:将ng-bootstrap添加到你的应用程序中。
  • ng add @angular/material:安装并设置 Angular Material 和主题,注册新的初级组件 到ng generate中。
  • ng add @clr/angular@next:安装设置 VMWare Clarity。

Angular Elements

Angular Elements 的第一个版本专注于在现有的 Angular 应用程序中启动 Angular 组件,方法是将它们注册为 Custom Elements,目前已被广泛用于 angular.io 内容管理系统中,它嵌入 HTML,可动态启动系统功能。

Angular Material + CDK 组件

最值得一提的是用于显示分层数据的树形控件,遵循数据表组件的模式,CDK 包含树的核心指令,而 Angular Material 则提供与顶层的 Material Design 样式相同的体验。

于此同时,还更新了徽章(badge)和底部菜单栏的组件,徽章用于显示小而有用的信息,例如未读信息的数量。

目前,@angular/cdk/overlay 软件包是 CDK 最强大的基础架构之一,你可以利用他们来构建自己的 UI 库。

Angular Material 初级组件

一旦运行 ng add @angular/material并添加材料到现有的应用程序中,就能够生成 3 个新的初级组件。

Material Sidenav

Material Sidenav 是带有应用程序名称和侧面导航的工具栏的初级组件,它基于断点窗口(breakpoints)进行响应。

运行:

复制代码
ng generate @angular/material:material-nav

会生成以下组件:

Material Dashboard

Material Dashboard 是包含动态网格列表的启动组件。

运行:

复制代码
ng generate @angular/material:material-dashboard

会生成以下组件:

Material Data Table

Material Data Table 已预配置了一个用于排序和分页的datasource

如下图:

CLI Workspaces

CLI v6 现已支持多项目工作区,如多个应用程序或库,CLI 项目用 angular.json 取代 angular-cli.json 构建和配置项目。

每个 CLI 工作区都有项目,每个项目都有目标,每个目标都可以有配置。

复制代码
angular.json:
{
"projects": {
"my-project-name": {
"projectType": "application",
"architect": {
"build": {
"configurations": {
"production": {},
"demo": {},
"staging": {},
}
},
"serve": {},
"extract-i18n": {},
"test": {},
}
},
"my-project-name-e2e": {}
},
}

库支持

接下来介绍 CLI 最重要的一项功能:支持创建和构建库。

复制代码
ng generate library <name></name>

该命令将在CLI 工作区内创建一个库,并对其进行配置以进行测试和构建。

Tree Shakable Providers

为了让你的应用更小,我们将服务引用模块改为模块引用服务,这让我们只需要构建在模块里注入的服务。

之前:

复制代码
app.module.ts:
@NgModule({
...
providers: [MyService]
})
export class AppModule {}
复制代码
my-service.ts:
import { Injectable } from '@angular/core';
@Injectable()
export class MyService {
constructor() { }
}

以后,NgModule 不再需要引用:

复制代码
my-service.ts
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class MyService {
constructor() { }
}

动画性能提升

更新后,以后将不再需要网页动画 polyfill。这意味着你可以从应用程序中删除此 polyfill,可以节省大约 47KB 的内存,同时提高 Safari 中的动画性能。

RxJS v6

RxJS v6 也将被 Angular 6 使用,RxJS v6 于上个月发布。RxJS v6 带来了一个向后兼容的软件包 rxjs-compat,它可以让你的应用程序保持运行。

RxJS 已重新安排,使其更具树型动摇性,确保只有你使用的 RxJS 部分能放置在生产 bundle 中。

长期支持(LTS)

Angular 表示他们正在将长期支持版本扩展到所有主版本中。

之前只有 v4 和 v6 是 LTS 版本,但为了使开发者从一个主版本更新到另一个主版本更容易,并给更多的项目充足时间来规划更新,Angular 团队表示从 v4 开始,将扩大对所有主版本的长期支持。

每个主版本的支持时间是 18 个月,其中,前 6 个积极开发阶段,接下的 12 个月是错误修正和安全补丁阶段。

如何更新到 Angular 6.0.0

请访问更新指南,以获取更新指导。

更新通常遵循 3 个步骤,请使用新 ng update 工具:

  • 更新 @ angular / cli
  • 更新你的 Angular 框架包
  • 更新其他依赖包

链接

原文链接:

https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4

更新指南:

https://update.angular.io/

Angular 官方公告:

https://angular.io/guide/releases

2018-05-07 19:004270
用户头像

发布了 83 篇内容, 共 48.9 次阅读, 收获喜欢 187 次。

关注

评论

发布
暂无评论
发现更多内容

java程序员的AI之路-大数据篇 hadoop安装

爱好编程进阶

Java 面试 后端开发

OneFlow学习笔记:从Python到C++调用过程分析

OneFlow

c++ Python Relu 调用过程分析

git(1) 起步

爱好编程进阶

Java 面试 后端开发

Java 集合容器篇面试题(上)-王者笔记

爱好编程进阶

Java 面试 后端开发

http server源码解析

爱好编程进阶

Java 面试 后端开发

电脑硬件中光驱的作用是什么?

InfoQ IT百科

Google 出品的 Java 编码规范,权威又科学,强烈推荐

爱好编程进阶

Java 面试 后端开发

Kubernetes家族容器小管家Pod在线答疑?

囧么肥事

Kubernetes 云原生 k8s #Kubernetes# 容器服务

跟我读CVPR 2022论文:基于场景文字知识挖掘的细粒度图像识别算法

华为云开发者联盟

图像识别 推理 视觉 文字检测 语义信息

【等保】二级等保常见问题解答汇总

行云管家

网络安全 等保 等保2.0 二级等保

DevSecOps软件安全开发实践

华为云开发者联盟

开源 DevSecOps 安全开发 华为云DevCloud 软件研发

纯 JS 实现 WebRTC 视频通话

杨成功

音视频 WebRTC

云小课|教你如何使用RDS for PostgreSQL插件

华为云开发者联盟

postgresql 插件 开源数据库 RDS for PostgreSQL

焱融 YRCloudFile 跨云多源数据管理,直击自动驾驶 “割裂式存储”痛点

焱融科技

自动驾驶 云计算 分布式 高性能 文件存储

怎么样判断显卡性能好坏?

InfoQ IT百科

聊一聊龙蜥硬件兼容性 SIG 那些事儿 | 龙蜥 SIG

OpenAnolis小助手

开源 sig 硬件兼容 龙蜥操作系统

Java中return和finally到底哪个先执行

爱好编程进阶

Java 面试 后端开发

抖音春晚活动背后的 Service Mesh 流量治理技术

火山引擎开发者社区

微服务 后端 后端技术

破浪人丨国内首位 Envoy Maintainer!王佰平独家讲述四年开源之路

网易数帆

开源 云原生 Service Mesh 服务网格 envoy

电脑内存越大处理速度就越快吗?

InfoQ IT百科

java 使用Html2Image将html转图片

爱好编程进阶

Java 面试 后端开发

如何调节鼠标的灵敏度?

InfoQ IT百科

电脑分区C盘格式化会怎样?

InfoQ IT百科

Java中使用Spring-security(一)

爱好编程进阶

Java 面试 后端开发

Java并发关键字-volatile

爱好编程进阶

Java 面试 后端开发

一文深入Java浅拷贝和深拷贝

芝士味的椒盐

Java 大数据 Java 开发 深拷贝 浅拷贝

Windows操作系统升级后会出现与CPU不兼容情况吗?

InfoQ IT百科

复杂度守恒定律与计算哲学|Authing CEO 谢扬

Authing

开发者 云原生 身份云 生产力 Idaas

一文看懂“低代码,零代码,APAAS”是什么?怎么选?

优秀

低代码 零代码 aPaaS

前端食堂技术周刊第 34 期:Node.js v18 、Nuxt 3 RC1、Parcel v2.5.0、计算机程序的构造和解释、Linux 命令行世界生存指南

童欧巴

JavaScript 前端 技术周刊

【网络安全】8个网络安全名词解释看这里!

行云管家

网络安全 防火墙 数据安全 堡垒机

Angular 6发布,新功能详解_语言 & 开发_覃云_InfoQ精选文章