返回博客首页
← 所有文章

NativeScript 3.0 发布候选版本

2017 年 3 月 29 日 — 作者:Georgi Atanasov

我们非常兴奋地宣布 NativeScript 3.0 发布候选版本现已发布!这是项目和团队的一个重要里程碑——他们在原型设计、实施和稳定新功能方面付出了艰辛的努力。正如您可能已经在这篇文章中读到,3.0 版本引入了许多性能改进和一些重大变更。我们相信,每个引入的变更都使 NativeScript 框架更加稳定、更有价值,并且性能更佳。

为了简化迁移路径,我们准备了一份全面文档来解释这些变更,为什么需要它们,以及它们带来的价值。我们还编制了一份完整的迁移指南,它将帮助您将应用程序升级到 3.0。

发行亮点

以下是 3.0 RC 中包含内容的概述。

跨平台模块

  • 全新的模块 3.0 实现! 模块重构基于三大支柱
    • 性能改进;
    • 更简单的扩展性模型;
    • 整个跨平台模块实现中更一致的 API。
  • 完全改进的布局测量系统。 在 3.0 之前,布局系统使用 DIP(设备无关像素)。在 3.0 中,所有内容都计算到 DP(设备像素),您可以指定 px 后缀来定义一个确切的 1 像素宽边框,例如。
  • 迁移到 TypeScript 2.2 并删除环境模块,转而使用显式路径解析。
  • 解决了大量现有问题。

NativeScript CLI

  • 我们对 NativeScript CLI 做了以下行为更改
    • livesync 命令被移除,取而代之的是 tns run,它现在自动执行 livesync --watch
    • plugin find/search 命令被移除,因为它没有被使用;
    • emulate 命令现在已弃用,其功能已通过 run 命令及其 --emulate 选项公开;
    • run --device <设备标识符> 命令现在将在尚未启动的情况下启动模拟器。在 3.0 之前,--device 选项仅适用于物理设备。
  • 许多内部改进,确保代码库的更好稳定性和扩展性。
  • 大量错误修复。

iOS 和 Android 运行时

  • 为 Chrome 开发者工具启用网络域。 现在,您可以直接在Chrome 开发者工具中监控应用程序网络流量。注意:此功能目前适用于内置的http 模块。对于进行网络请求的第三方模块,必须实现额外的粘合代码来填充网络选项卡。
  • 恢复了 Android 的静态绑定代码生成,而不是直接生成 *.DEX 文件。代码生成方法具有几个主要优势,会影响构建速度、可读性和可维护性。
  • 更新了 Gradle 构建工具。这将显著加快 Android 构建速度。
  • 改进了 Chrome 开发者工具中 Android 的调试体验。我们在调试时修复了与崩溃和错误相关的几个问题。

启用 NativeScript 3.0 RC

您可以从 npm 安装新的 NativeScript 包(在 RC 标签后面)

npm install -g nativescript@rc

使用 NativeScript 3.0 RC 创建新项目

您可以基于新的 3.0 模板创建新项目

  • Vanilla JavaScript 应用程序:tns create MyApp --template tns-template-hello-world@rc
  • TypeScript 应用程序:tns create MyApp --template tns-template-hello-world-ts@rc
  • Angular 应用程序:tns create MyApp --template tns-template-hello-world-ng@rc

这些命令将创建一个项目,并将添加 3.0 RC tns-core-modules@rc

此时,您可以添加您要定位的平台的 RC 部分

tns platform add android@rctns platform add ios@rc

就是这样! 现在,您可以使用 tns run <平台名称> 启动项目。

更新现有项目

为了更新现有项目,您将必须更新应用程序的 tns-core-modules 和平台

tns plugin remove tns-core-modules 
tns plugin add tns-core-modules@rc
tns platform remove <platform-name>
tns platform add <platform-name>@rc

对于 TypeScript 和 Angular 应用程序,您还应更新 TypeScript 插件

npm uninstall nativescript-dev-typescript --save-dev
npm uninstall typescript --save-dev
npm install [email protected] --save-dev

最后,对于 Angular 项目,您需要执行以下操作

1) 更新 nativescript-angular 插件

tns plugin remove nativescript-angular
tns plugin add nativescript-angular@rc

2) 更新到 Angular 4,打开项目的 package.json 文件并将各种 Angular 包更新到 4.0.0。此外,zone.js 依赖项现在应该列为依赖项而不是开发依赖项,并更新到 0.8.2。

因此,您的 package.json 应该如下所示

"dependencies": {
    "nativescript-theme-core": "~1.0.2",
    "nativescript-angular": "rc",
    "tns-core-modules": "rc",
    "@angular/animations": "4.0.0",
    "@angular/core": "4.0.0",
    "@angular/common": "4.0.0",
    "@angular/compiler": "4.0.0",
    "@angular/http": "4.0.0",
    "@angular/platform-browser": "4.0.0",
    "@angular/platform-browser-dynamic": "4.0.0",
    "@angular/forms": "4.0.0",
    "@angular/router": "4.0.0",
    "rxjs": "~5.2.0",
    "reflect-metadata": "~0.1.8",
    "zone.js": "~0.8.2"
},
"devDependencies": {
    "typescript": "~2.2.1",
    "nativescript-dev-typescript": "~0.4.0",
    "nativescript-dev-android-snapshot": "^0.*.*"
}

已知限制

团队目前正在修复一些已知限制。但是,我们希望今天发布这些新功能,因为我们认为它们足够稳定,可以进行早期实验。以下是我们知道的限制

  • 不支持 Xcode 8.3
  • 无法部署到物理 iOS 设备,除非指定了 --syncAllFiles 选项
  • Android 没有提供快照包

我们计划在解决这些问题后发布新的 RC 版本。 在正式发布之前,我们可能会有多个 RC 版本,以确保尽快解决关键问题,而不是迫使我们的用户等待 4 周才能修复问题!

分享您的反馈!

告知我们您发现的此发布候选版本中的任何问题,以便我们可以在正式发布之前解决它们。

虽然我们相信只有所有现有NativeScript 插件中的一个小部分会受到这些变更的影响(主要是提供自定义 UI 的那些插件),但我们确实希望确保尽快识别和修复问题!

何时发布正式的 3.0 版本?

我们计划将 2017 年 4 月 26 日 定为正式的 3.0 版本发布日期。在 RC 和正式发布日期之间的 4 周时间内,我们将致力于修复可能出现的任何问题,帮助作者将其插件迁移到 3.0,以及更新文档和入门材料。

下一步