返回博客首页
← 所有文章

NativeScript 现已支持 Angular 8

2019 年 6 月 4 日 — 作者:Vladimir Amiorkov

上周,Angular 团队发布了全新的 Angular 8,今天我们很高兴地宣布 NativeScript 现在支持此最新更新 🎉。

Angular 8 有哪些新特性?

Angular 8 带来了许多内部变化,并且是未来 Ivy 实现的垫脚石,使其成为 Angular 历史上一个重要的里程碑。有关所有更改的完整列表,您可以阅读 这篇博文

Ivy,Angular 的未来

在 Angular 8.0.0 中,Angular 团队发布了一个框架,其中包含一个名为 enableIvy 的实验性可选标志的 Ivy,您可以在 angularCompilerOptions 中设置此标志。由于其当前实现状态,启用 Ivy 的好处并不大。长话短说,当前的 NativeScript 插件没有以适当的格式(APF)发布,这意味着 Ivy 的 tree-shaking 功能不可用。NativeScript 团队与 Angular 团队紧密合作开发 Ivy 实现,我们预计当它准备就绪并可用时,我们将能够提供首日支持。敬请关注!

查看 这篇文章 以获取有关 Ivy 的更多信息。

从 7.x.x 升级到 8.0.0

让我们看看如何更新您的 NativeScript-Angular 应用以利用这些优化。

nativescript angular dependency changes

为了将您的项目更新到最新的 Angular 8.0.0,您只需执行以下简单步骤

  • 安装最新的 nativescript-angular 插件 npm i nativescript-angular@latest --save 并运行包提供的自动依赖项更新脚本 ./node_modules/.bin/update-app-ng-deps
  • 安装最新的 nativescript-dev-webpacknpm i nativescript-dev-webpack@latest --save-dev 并运行包提供的自动依赖项更新脚本 ./node_modules/.bin/update-ns-webpack --deps --configs(请注意,--configs 将更新您的 webpack.config.js,建议在每个新版本的 nativescript-dev-webpack 中更新该配置,但如果需要,您可以将其删除)。
  • 安装最新的 nativescript-dev-typescriptnpm i nativescript-dev-typescript@latest

您快完成了!剩下的唯一事情是检查您的项目是否需要迁移任何 变更日志中描述的重大更改。您可以通过使用 tsc 触发项目的 TypeScript 编译来找出这一点。如果您很幸运,终端不会显示任何错误,并且您会很高兴地知道您已准备好开始使用 Angular 8.0.0。如果您看到任何关于 ViewChild 的错误,只需遵循以下迁移示例。

在以前使用带有一个参数的 @ViewChild 的任何地方,您现在都必须提供一个带有 static 属性的第二个参数,该属性设置为 truefalse

之前的代码

import { ElementRef } from "@angular/core";

@ViewChild("myElement") myElement: ElementRef;

迁移后的代码

import { ElementRef } from "@angular/core";

@ViewChild("myElement", { static: false }) myElement: ElementRef;

已知问题

目前我们知道 @nativescript/schematics 不适用于 Angular 8.0.0。我们正在积极进行更新!

最后说明

@angular/http 包已弃用,我们计划在 nativescript-angular 的未来版本中完全删除它。

对于大多数用户来说,升级到 Angular 8 应该是无缝的。您可以参考我们的 变更日志 以获取已更改内容的完整列表,如果您遇到问题,请在我们的 问题跟踪器 上告知我们。

欢迎在评论中告诉我们您对这个最新的 Angular 更新的看法。