返回博客首页
← 所有文章

NativeScript 3.1 正式发布

2017年6月28日 — 作者:Georgi Atanasov

我们非常激动地宣布 NativeScript 3.1 版本 现已正式发布。在过去的六周里,我们一直忙于充分利用 3.0 版本中引入的所有重要更改,并继续提供新的和有价值的功能。此新版本不仅为框架带来了更高的稳定性,还添加了一些基本缺失的部分,使 NativeScript 达到新的成熟度和可用性水平。

让我们看看亮点!

Android 中的 Chrome DevTools 元素选项卡集成

3.1 版本为 Chrome DevTools 工具库添加了另一个功能 - 元素选项卡。您现在可以 启动调试器 并检查以及修改 NativeScript 应用程序的当前视图树。

chrome devtools elements debugging

这是一个备受期待的功能,我们相信它将极大地改善用户的整个 UI 相关开发流程,并更容易理解核心模块的 UI 抽象。最初,此功能将适用于 Android 平台,并在以后的版本(很可能在 3.2 中)中登陆 iOS。

适用于 Mac 和 Linux 上 Android 的本地 V8 堆快照

在应用程序启动时间优化方面,Webpack 是我们工具集中最有价值的工具之一。我们的 nativescript-dev-webpack 插件的 0.7.1 版本支持从任意 bundle 生成 V8 堆快照

快照生成器在捆绑步骤结束时发挥作用。它在空 JavaScript 上下文中加载并执行单个脚本,并在执行后生成 V8 堆的序列化版本。Android 运行时 能够将序列化堆 直接注入到应用程序启动时的 JavaScript 上下文中。这避免了在运行时获取、解析和执行文件 - 从而显着减少了应用程序的启动时间。

在一个全新的 Angular 应用程序的上下文中,我们的测量结果表明,对最大 bundle 进行快照处理可将应用程序的启动时间提高 10-50%,具体取决于设备。在快照 bundle 中添加更多代码可以获得更好的效果。默认情况下,快照生成处于禁用状态。要启用它,请将 --snapshot 标志传递给 Android 捆绑命令。目前,此功能仅限于 macOS 和 Linux 平台。想要了解更多信息?阅读这篇由我们的工程师 Ivan Buhov 撰写的关于 Android 快照的 深入探讨文章

性能分析

自框架早期以来,原生性能一直是 NativeScript 愿景的关键支柱之一。因此,我们一直在分析、优化和高级技术上投入大量开发时间,以帮助我们实现最大性能的预期目标。

了解应用程序的性能需要全面了解 C++、Objective-C/Java 和 JavaScript 层如何在系统堆栈中混合在一起。我们在内部开发了一种方法来启用某些关键方法的性能跟踪,并使用它们来分析和微调我们自己开发的应用程序。我们认为,如果某些东西有助于我们完成工作,那么它也可能对社区有益。

因此,我们很高兴将这些内部工具公开给公众。从这个版本开始,我们为用户提供了一种方法来启用 {N} 性能分析跟踪,用于 Android(以及 iOS 运行时的 @next 版本,用于 iOS)。添加...

{
    "profiling": "timeline"
}

...到您的 app/package.json 中将启用运行时方法(例如启动时间、资源提取和 require 调用花费的时间)的控制台日志记录。与其他输出混合时,这些控制台日志很难阅读和分析,因此我们还添加了一个工具来从中创建交互式网页。要使用它,请运行

npm i -g timeline-view
tns run android | timeline-view

完成应用程序交互后,点击 ctrl + C 停止收集信息。timeline-view 工具将生成收集信息的 html 表示形式,您可以在浏览器中检查它。

以下是一些我们性能分析实验的令人兴奋的结果

Jen Looper 的 Practice Buddy

  • 之前:iPhone 6 上的启动时间为 3500 毫秒
  • 现在:iPhone 6 上为 900 毫秒 (提高了 74%)

Nick Iliev 的 COSMOS Databank

  • 之前:旧款 LG Nexus 手机上的启动时间为 4961 毫秒
  • 现在:LG Nexus 上为 2500 毫秒,索尼 Z5 等新款手机上为 1300 毫秒 (提高了 50%)

Alex Ziskind 的 looptidoo

  • 之前:旧款 LG Nexus 手机上的启动时间为 14000 毫秒
  • 现在:旧款 LG Nexus 手机上的启动时间为 3980 毫秒 (提高了 72%)

底线是,使用此工具来发现可能需要优化的性能关键区域、利用 WebPack 和为 Android 应用本地快照可以对应用程序的加载时间产生重大影响。一篇详细介绍我们性能分析结果的博文即将发布,敬请期待!

NativeScript CLI 更改

在 CLI 方面,我们专注于完善和修复错误。一些值得一提的问题

  • emulate 命令现已完全移除。它之前在 3.0 中已弃用,这是我们简化和简化 CLI 用法的努力中的又一步;
  • 我们设法修复了几个与使用 WebStorm 相关的旧问题。
  • livesync 功能经历了重大的重构,主要目的是提高此功能的稳定性和可维护性;
  • 已解决 20 多个 GitHub 问题

还有更多!

一些不在上述部分中的值得一提的内容

  • 我们继续努力进一步优化框架,改进了 CSS 属性在 NativeScript 模块中的工作方式。使用 3.1,在视图加载之前发生的属性更新现在会进行批处理,并且仅在视图加载(准备好可视化)时才应用于底层原生视图。在 iOS 上,增益更加明显,因为原生视图在视图生命周期中创建得更早,并且这种方法避免了一些不必要的设置原生回调;
  • 自 3.0 版本发布以来,已修复了主要 NativeScript 存储库中的 60 多个 问题

分享您的反馈

我们真的希望您会发现新的 3.1 版本很有价值!请试一试,并与我们分享您的反馈。我们非常重视社区的意见,因为归根结底,采用才是最重要的,特别是对于像 NativeScript 这样的开源项目。