Angular 6 正式发布

Angular 6 已经正式发布了!这个主要版本并不关注于底层的框架,更多地关注于工具链,以及使 Angular 在未来更容易快速推进。

作为发布的一部分,我们同步了主要的框架包  (@angular/core, @angular/common, @angular/compiler, etc),  Angular CLI, 以及 Angular Material + CDK。现在全部都是作为 6.0.0 发布。我们理清了它们之间的兼容性。小的更新的补丁将会基于项目的需要发布。

可以通过每个项目的变更清单来查看全部的内容: framework, material+cdk, cli.

1. ng update

ng update <package>  是一个新的 CLI 命令,用于分析 package.json 并使用其关于 Angular 的知识来更新您的应用。请查看升级手册来查看其行为。

不仅可以使用 ng update 来帮助您适配正确版本的依赖项,并保持依赖同步,而且第三方也可以使用 schematics 来提供 update 脚本命令。如果您的某个依赖库提供了 ng update 语法,在其有大更新的时候,就可以自动更新您的代码了。

ng update 并不会替换您的包管理器,而是使用 npm 或者 yarn 在底层管理依赖,然后更新依赖,ng update 将对您的项目进行必要的转换。

例如,ng update @angular/core 将会更新所有的 Angular 框架包,比如:RxJS 和 TypeScript,并运行这些包中可用的 schematics 来保持最新。作为命令的一部分,我们将会自动安装 rxjs-compat 到您的应用中以平滑迁移。

我们期待更多的库和包在随后支持 ng update 语法,我们已经 听到一些企业库的团队在计划使用 ng update 来自动更新重要的变更升级,以减少开发时间。

学习更多关于如何使用 ng update , 开始学习如何创建您自己的 ng update 语法,可以参考 rxjs 的 package.json 的入口,它关联了  collection.json。

2. ng add

另一个新的 CLI 命令是 ng add,它可以使您添加新包变得更加容易。ng add 将使用您的包管理器来下载新的依赖项,并运行安装脚本(以 schematics 实现)。通过配置文件来更新项目。添加额外的依赖项(例如 polyfill 等),或者执行包特定的初始化代码。

可以在您的使用 ng new 创建的新项目上试一下下面的命令:

  • ng add @angular/pwa, 通过为您的应用添加 manifest 文件和 service worker 将其转换为 PWA 项目
  • ng add @ng-bootstrap/schematics, 将 ng-bootstrap 添加到项目中
  • ng add @angular/metarial, 安装与设置 Angular Metarial ,并使用 ng generate 添加新的启动组件。
  • ng add @clr/angular@next, 从 VMWare 安装和设置 Clarity。
  • ng add @angular/elements, 为 Angular elements 安装 document-register-element.js 和依赖项。

由于 ng add 基于 schematics 和 Npm ,我们希望库和社区支持我们构建一个 ng add 支持包的生态圈。

请查看 Angular Metarial 的 ng add schemetic ,作为示例来帮助您开始创建您自己的 ng add。

3. Angular Elements

第一个版本的 Angular Elements 支持您在现有的 Angular 应用中通过注册 Angular Component 作为自定义元素。我们在 angular.io 内容管理系统中使用这种扩展能力,通过嵌入 HTML 来支持动态。这替换掉了手动启动 Angular 组件。

请查看注册 Angular Component 作为 custom element,或者学习更多的 Angular Elements.

已经有一个社区成员发布了 Angular Elements Quick Start, 我们非常建议您参考。

4. Angular Metarial + CDK component

最大的更新是增加了新的 tree 组件以显示层次结构,遵循 table 组件的模式,CDK 支持了核心 tree 指令,Angular Metarial  通过 Metarial Design 提供了一致的体验,我们最近提供了一个关于它的内容,可以参考(video, slide ).新的 tree 组件有两种风格:(Metarial 风格)mat-tree 和未修饰的版本 cdk-tree

除了 tree 组件之外,我们还提供了 badgebottom-sheet-components。徽章用于显示小的帮助信息。例如未读项目数量等等,Bottom-sheet  是移动设备专用的对话框,通常用于提供一系列动作的选项。

@angular/cdk/overlay 是 CDK 中非常有用的包,在新的 v6 版中,其包含新的定位逻辑,以在各种场景下帮助弹出。

5. Angular Metarial Starter Components

一旦您执行 ng add @angular/metarial 将 Metarial 添加到您的项目中,您将得到 3 个新的 starter 组件:

Metarial SideNav

您现在可以生成一个包含 app 名称的 toolbar 和边栏导航的起步组件。

执行

ng generate @angular/material:material-nav

将会生成这样的起步组件。

Metarial Dashboard

您可以生成一个包含动态表格的卡片列表 。

执行

ng generate  @angular/material:material-dashboard

可以生成这样的组件。

Material Data Table

您可以生成支持排序、分页的预配置 datasource 的数据表组件。

执行

ng generate  @angular/material:material-table

将会生成这样的组件。

在这里查看更多资料:Angular Material  Schematics

6. CLI Workspaces

Angular CLI v6 现在支持包含多个项目的工作空间,比如多个应用或者库。CLI 项目现在将使用 angular.json 来替代 .angular-cli.json 进行配置和构建。

每个 CLI 可以有多个项目,每个项目有 target, 每个 target 有配置文件。

{
"projects": {
"my-project-name“: {
"projectType": "application",
"architect": {
"build": {
"configurations”: {
"production": {},
"demo": {},
"staging": {},
}
},
"serve": {},
"extrace-i18n": {},
"test": {},
} },
"my-project-name-e2e": {}
}
}

更多信息请参考:新的配置文件

7. 库的支持

被广泛请求的一个 CLI 特性现在支持了:创建和构建库。我很荣幸介绍它。

ng generate  library <name>

该命令将会在您的 CLI 工作空间创建一个库项目,并配置其测试和构建。

更多信息请参考:使用 Angular CLI 创建库

8. Tree Shakable 提供器

为使您的应用尺寸更小,我们从模块引用服务变成了服务引用模块。这使得我们可以仅仅打包模块中注入到代码中的服务。

以前

@NgModule({
...
providers: [ MyService ]
})
export class AppModule {}

其中,服务的定义

import { Injectable } from '@angular/core';

@Injectable()
export class MyService {
constructor() {}
}

以后的用法

不需要在模块中引用。

import { Injectable } from '@angular/core';

@Injectable( {
providedIn: 'root',
})
export class MyService {
constructor() {}
}

更多信息,参考依赖注入

9. 动画性能改进

我们已经更新了动画实现,不再需要 Web animations polyfill,这意味着您可以从应用中删除这个 polyfill,并节省大约 47K 的打包尺寸,同时提升了在 Safari 中的性能。

10. RxJS v6

Angular 已经升级到 RxJS v6。RxJS 是 Angular 的一个依赖项,其在几周前正式发布了 v6。RxJS v6 带来了多个重要的更新,还提供了反向兼容库 rxjs-compat,可以保持您的应用继续工作。

RxJS 进行了重新组织以便于 Tree shakable, 以确保只有用到的 RxJS 部分打包到应用中。

如果您使用 ng update, 您的应用将会保持工作,您可以从 RxJS 5.5 迁移到 6 得到更多信息。

11. 长期支持

我们扩展了我们的长期支持条款到所有主要发布版本。

以前,我们声明只有 v4-v6 是长期支持的版本。但是为了是的从某个主要版本升级到下一个更加容易,并给予大的项目更多的时间来计划升级,我们决定扩展到支持从 v4 开始的所有主要版本。

每个主要发布将会支持 18 个月,包括 6 个月的活动开发和 12 个月的关键 bug 修复和安全补丁。

更多信息可以参考Angular 版本和发布

12. 如何更新到 6.0.0

访问 update.angular.io 来得到升级应用的信息和指导。

升级通常包括 3 步,并可以从 ng update 工具获得好处。

  1. 升级 @angular/cli
  2. 升级 Angular 框架包
  3. 升级其它依赖

对于我们来说,让开发者保持最新版本的更新特别重要,所以,如果您有什么建议请让我们知道。

13. Ivy 怎么样了?

关于我们下一代的渲染引擎 Ivy,Ivy 当前处于开发阶段,还不是 v6 的一部分。在随后的几个月,我们将会宣告 Ivy 的一个预览版。

See Also

Angular v6 正式发布的更多相关文章

  1. 试用 Angular v6 的 Ivy compiler

    “Ivy” 是 Angular v6 的新一代渲染器.从 v6.0.0-beta.1 开始,Ivy 已经作为体验 API 发布. 作为下一代的 Angular 的视图引擎,重点在于彻底缩减代码尺寸并增 ...

  2. 精通 Angular JS 第一天——Angular 之禅

    简介 Angular JS是采用JavaScript语言编写的客户端MVC框架,它为业界带了重大的变化,包括对模板化的创新实现,以及数据的双向绑定,这些特性使得它强大而易用.它可以用来帮助开发者编写单 ...

  3. 支持Angular 2的表格控件

    前端框架一直这最近几年特别火的一个话题,尤其是Angular 2拥有众多的粉丝.在2016年9月份Angular 2正式发布之后,大量的粉丝的开始投入到了Angular 2的怀抱.当然这其中也包括我. ...

  4. [转]Angular: Hide Navbar Menu from Login page

    本文转自:https://loiane.com/2017/08/angular-hide-navbar-login-page/ In this article we will learn two ap ...

  5. [转]How to Add Bootstrap to an Angular CLI project

    本文转自:https://loiane.com/2017/08/how-to-add-bootstrap-to-an-angular-cli-project/ In this article we w ...

  6. [转]Using Angular in Visual Studio Code

    本文转自:https://code.visualstudio.com/docs/nodejs/angular-tutorial Using Angular in Visual Studio Code ...

  7. Angular 2的表格控件

    Angular 2的表格控件 前端框架一直这最近几年特别火的一个话题,尤其是Angular 2拥有众多的粉丝.在2016年9月份Angular 2正式发布之后,大量的粉丝的开始投入到了Angular ...

  8. [Angular] Angular Elements Intro

    Make sure install the latest Angular v6 with Angular CLI. Checkout ght Github for the code. 1. Creat ...

  9. Angular6.0发布

    Angular v6 新版本重点关注工具链以及工具链在 Angular 中的运行速度问题. Angular v6 是统一整体框架.Material 和 CLI 三大 Angular 组件的第一个版本, ...

随机推荐

  1. Web开发学习之路--Eclipse+Tomcat+mysql之初体验

    学习了一段时间android,正好要用到android和服务器之间的交互,既然要学习android,那么就涉猎下服务器端的开发了,以前学过php,用thinkphp很快可以搭建起来,但是android ...

  2. Android初级教程:屏幕分辨率

    在app编码中经常需要获取手机的屏幕分辨率(宽*高),原来我直接上网拷贝代码,但在使用过程中却发现诸多不便. 不便一:下面代码中的getWidth和getHeight在adt上提示deprecated ...

  3. Android四大组件之一Service介绍-android学习之旅(十二)

    基本概念: service是android四大组件之一,运行在后台执行耗时操作,并不提供用户界面.其他组件如acticity可以通过startService启动该组件,也可以通过bindService ...

  4. 04_NoSQL数据库之Redis数据库:set类型和zset类型

     sets类型及操作 Set是集合,它是string类型的无序集合.set是通过hash table实现的,添加,删除和查找复杂度都是0(1).对集合我们可以取并集.交集.差集.通过这些操作我们可 ...

  5. Oracle Apps DBA 常用命令

    数据库启动监听 addlnctl.sh start instance 启动数据库 addbctl.sh start 启动应用服务器 adstrtal.sh 停止应用服务器 adstpall.sh -- ...

  6. 【Unity Shaders】Transparency —— 使用alpha通道创建透明效果

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  7. Android 基于MVC的MVVM模式开发

    由skay整理  http://blog.csdn.net/sk719887916/article/details/50386144 什么是MVVM 我们一步步来,从MVC开始. MVC 我们都知道, ...

  8. Linux驱动基础:MSM平台AP/CP通信机制

    点击打开链接 概述 MSM平台AP和CP封装到一个芯片,共享内容.所以之前也说过,高通的MSM解决方案中,CP的代码都是由AP放到指定地址的内存中以供CP运行.那上传完代码,CP开始跑之后,AP/CP ...

  9. 关于React Native 火热的话题,从入门到原理

    本文授权转载,作者:bestswifter(简书) React Native 是最近非常火的一个话题,介绍如何利用 React Native 进行开发的文章和书籍多如牛毛,但面向入门水平并介绍它工作原 ...

  10. 清除行内元素之间的HTML空白

    原文连接:Remove Whitespace Between Inline-Block Elements 原文日期: 2013年8月27日 翻译日期: 2013年8月28日 至今我还记得年轻是在IE6 ...