返回博客首页
← 所有文章

NativeScript 4.2 发布!

2018年8月7日 — 作者:Veselina Radeva

虽然42可能是万事万物之答案,但我们在此发布了最新的 NativeScript 4.2 版本,它至少可以解答您的一些 NativeScript 问题。

  • 更快的开发者体验,得益于 Android 上的 LiveSync;
  • 使用 Webpack 进行调试;
  • 灵活的错误处理;
  • 更轻松地生成 Android 类型定义;
  • 我们 文档 的全新外观和内容;
  • NativeScript Playground 中支持 Vue SFC;
  • NativeScript Marketplace 中新增插件徽章;
  • …以及更多内容!

有关详细信息,请继续阅读此博文,并查看 NativeScript 的 CHANGELOG

感谢社区在本次发布期间付出的所有努力和合作!完整的贡献者列表 在下方提供。您想了解如何为 NativeScript 贡献力量吗?查看方法!

现在使用 npm install -g nativescript 开始使用 NativeScript 4.2,并了解如何 更新您现有的 NativeScript 应用程序

LiveSync 性能和稳定性改进

在此版本中,我们重写了 Android 版 LiveSync。旧版解决方案不够稳定,存在许多性能问题。它依赖于在设备上创建临时文件,并在应用程序启动后复制这些文件。此解决方案导致了许多问题,尤其是在最新的 Android 版本中。例如,您可能遇到过这样的问题:将应用程序的新版本部署到设备,但启动后却看到旧版本。

现在,这一切都已成为过去!Android 版 LiveSync 现在使用套接字而不是临时文件。此解决方案使我们能够可靠地将文件发送到您的设备,而无需使用某些“禁止”位置并占用设备上的额外存储空间。LiveSync 运行并应用更改后,将更快地发送到设备,因为 CLI 不再生成额外的 adb 进程。

请注意,新的 LiveSync 需要使用最新的 CLI 和最新的 Android 运行时(了解如何更新您的运行时 此处)。如果您使用的是旧版运行时,CLI 将回退到旧行为。

我们还对项目创建和向项目添加运行时应用了多项性能改进。例如,我们将 tns platform add android 的速度从 2 分多钟提高到了仅 6 秒!

使用 Webpack 进行调试

最新的 [email protected] 现在可以调试使用 Webpack 打包的 NativeScript 应用程序。此功能极大地提升了打包的 NativeScript 应用程序的开发体验,现在您可以通过 Webpack 构建更快地开发和调试移动应用程序。您可以使用Chrome 开发者工具Visual Studio Code 扩展调试打包的应用程序。

打包应用程序的 Chrome 开发者工具调试

请按照以下简单步骤启用并开始调试打包的应用程序

1) 确保已安装 nativescript-dev-webpack 的 0.15.0 版本。

npm i nativescript-dev-webpack@latest --save-dev 

2) 在传递 --bundle 标志到 debug 命令时,启动调试过程

tns debug android --bundle
// or
tns debug ios --bundle 

3) debug 命令在连接的设备或模拟器上构建并部署一个新包。项目构建和部署后,调试器将启动,并生成一个类似于以下内容的 Chrome 开发者工具 URL

To start debugging, open the following URL in Chrome:

chrome-devtools://devtools/bundled/inspector.html?experiments=true&ws=localhost:40000 

出于安全原因,调试代理无法从命令行自动启动。因此,NativeScript CLI 生成了一个 URL,该 URL 会显示在屏幕上。您需要手动将其复制到 Google Chrome 的地址栏中才能开始调试。

4) 在 Chrome 开发者工具中,选择“源代码”选项卡,您将看到一个包含名为“webpack://”的文件夹的项目结构。展开该文件夹,您将在点文件夹(“. ”)中找到应用程序源文件。您可以通过代表您应用断点来开始调试应用程序(有关详细信息,请参阅 Chrome 开发者工具文章)。插件的源文件位于 node_modules 文件夹中,也可以即时调试。

chrome dev tools debugging

打包应用程序的 VS Code 调试

最新版本的 NativeScript Visual Studio Code 扩展 也支持打包的 NativeScript 应用程序的调试。要通过 VSCode 启用 Webpack 调试,请按照以下步骤操作

1) 将 VS Code 扩展更新到最新版本。

2) 确保已安装 nativescript-dev-webpack 的 0.15.0 版本。

npm i nativescript-dev-webpack@latest --save-dev 

3) 在 VS Code 中打开 launch.json 文件,并将 --bundle 标志添加到所需调试选项的 tnsArgs 键中。

例如

{
    "name": "Launch on Android",
    "type": "nativescript",
    "request": "launch",
    "platform": "android",
    "appRoot": "${workspaceRoot}",
    "sourceMaps": true,
    "watch": true,
    "sourceMapPathOverrides": {
        "webpack:///*": "${workspaceRoot}/app/*"
    },
    "tnsArgs":["--bundle"]
}, 

请注意,VS Code 将自动生成 sourceMapPathOverrides 键。

4) 设置断点并使用 VS Code 开始调试!

visual studio code extension debugging

使用 Trace 模块进行灵活的错误处理

错误和异常处理最近一直是 NativeScript 社区中的热门话题。主要是因为未处理的 JS 异常会导致 NativeScript 应用程序崩溃,而在浏览器中,这些异常仅在控制台中报告。通常,您不希望在生产应用程序中发生崩溃,并且您希望即使在开发期间也能控制这些崩溃。因此,我们在 trаce API 中添加了一些补充功能来帮助您做到这一点。您现在可以添加自定义的 ErrorHandler 并决定是抛出、忽略、报告还是对错误执行其他操作。有关更多信息,您可以 查看 github 问题NativeScript 错误处理指南

感谢来自 nstudio 的 NativeScript 大师们的帮助,以及所有参与定义需求和提供此问题反馈的人员。

丢弃未捕获的 JavaScript 异常模式

默认情况下,在 iOS 和 Android NativeScript 运行时中,如果在执行从本机 API 调用的 JavaScript 代码时抛出异常,它将导致应用程序崩溃并显示堆栈跟踪。如果希望记录异常堆栈跟踪,但希望应用程序崩溃,则可以在 app/package.json 文件中启用 discardUncaughtJsExceptions 标志

{
    "discardUncaughtJsExceptions": true
} 

此模式在生产环境中很有用,因为可以最大程度地减少应用程序崩溃。

Android 类型定义生成中的更新

我们改进了 android-dts-generator 工具,以便更轻松地生成本机依赖项的类型定义。现在,为您的插件创建 .d.ts 文件非常容易!更多详细信息可以在 本文 中找到。

此外,tns-platform-declarations 包现在包含从 17 到 27 的所有平台的 Android 类型定义,因此,例如,如果您目标平台为 android 24 或更高版本,则可以使用以下 .d.ts

<reference path="./node_modules/tns-platform-declarations/android-24.d.ts" /> 

新的 NativeScript 文档

NativeScript 文档 最近进行了重大改版。我们通过实施更轻便、更舒适的配色方案和字体,彻底改变了外观和风格。“目录”已重新构建,以便将主题分组到有意义的类别中,并以逻辑方式进行组织。

我们还添加了一些新的功能元素,例如右侧边栏,旨在让您轻松访问最相关的操作和信息:子部分、指向 API 参考的链接、指向 GitHub 的链接。我们还确保确认您在过去 2 年多时间里提供的全部反馈。

在文档方面,我们的下一步目标是改进 SEO,以便您能够减少搜索内容的时间,而将更多时间用于实际构建应用程序。

NativeScript Marketplace 更新

Playground 中的代码示例预览

由于 NativeScript Playground 是与 NativeScript 交互的最简单方法之一,并且 Marketplace 中的代码示例 是您下一个杀手级应用程序的构建块的精选列表 - 我们决定将这两个世界的最佳功能结合起来,让您有机会轻松地在 Playground 中使用每个代码示例。只需单击一下,您就可以将我们准备的每个示例变为现实 - 将其部署到设备,更改它,并对其进行调整或修改,直到满足您的需求。

nativescript code samples

更多插件徽章

为了进一步加强我们的插件生态系统,我们不断增强 Marketplace,以提供有关 NativeScript 插件的有意义的元信息,并在支持、文档和功能丰富性方面提供透明度和可靠性。在此版本中,我们添加了所谓的动态徽章

nativescript plugin badges

乍一看,它们看起来与您已经熟悉的徽章一样。我们称它们为“动态”,因为在幕后,我们正在运行自动定期检查以验证Marketplace 中显示的每个插件的状态。一个很好的例子是我们最近引入的Webpack 徽章。我们认识到 webpack 是开发工作流程的关键部分,并且插件兼容性可能会带来一些意外。我们添加了 Webpack 徽章以证明给定插件可以成功地在启用 webpack 的情况下构建。为了向您提供这方面非常有用的信息,我们不知疲倦的构建机器每天晚上都会下载每个 NativeScript 插件并处理 6 个小时的数据,将插件添加到空白应用程序中,并确保该应用程序可以成功运行。

当您执行 tns plugin add ... 时,为获得安心而付出的低廉代价!

NativeScript Pro UI

在 4.2 版本发布期间,我们发布了 RadListViewRadSideDrawer 的几个新版本。由于这两个是使用最广泛的 NativeScript Pro UI 插件,因此我们投入了专门的精力来修复错误、添加新功能和提高性能。

您的帮助在这项工作中非常宝贵 - 报告您遇到的问题将帮助我们处理最有价值的工作项。

Playground 中支持 Vue.js 单文件组件

每天都有越来越多的 NativeScript 用户选择 Vue.js 作为框架 - 事实上,在过去 6 个月中,他们的数量增加了一倍多!

这主要是一项社区驱动的努力,{N} 工程团队为这项工作提供了很多帮助。在此版本中,我们决定在 {N} Playground 中添加 单文件组件 (SFC) 支持。从您的反馈中,我们了解到 Playground 为 NativeScript 生态系统提供了最佳的“入门”体验。同时,Vue.js 中的单文件组件的概念是独一无二的,并且是一种非常独特的范式。我们希望通过此功能,能让我们的 Vue.js 高手在 Playground 中宾至如归。

感谢我们的社区!❤️

如果没有社区的支持,我们就无法做到今天这样。以下仅列出了一些帮助使此版本成为现实的社区成员!

farfromrefugDickSmithspeiggshiv19kantNathanWalkerm-abs jkulubyayavulangezbofartekTetrygonADmadderskealmastixKsantacrrenestalderLokeCarlssonfelipebuenosurduikoevska vultixBuuhuu NathanaelA jolafritePeterStaev fthuintimhill1989 denisraison ntrpnr mintyweazel

您想贡献力量吗?

您想成为贡献者并在我们下一篇博文中包含您的头像吗?查看 NativeScript 贡献指南 并从任何 简单易上手的问题 开始。

如果您觉得编写文档比编写代码更吸引人,请前往 查看如何帮助团队 填补我们文档中的空白。

感谢您提供的所有帮助!(预先感谢)

NativeScript 的下一步是什么?

我们已经全速投入下一个版本的开发。我们的重点将继续放在提供卓越的开发体验和一流的性能上。此外,随着 Android 和 iOS 最新版本的发布,今年秋季将非常忙碌——幸运的是,NativeScript 会为您提供支持,我们将投入专门的精力,确保您顺利过渡到这两个移动平台的最新版本。

如果您像我们一样期待 vNext 版本——请务必在 10 月份于马萨诸塞州波士顿举行的 jsMobileConf 活动中预留一个座位。您将能够体验和试用我们提供的最新 NativeScript 功能,并了解扩展 JavaScript 生态系统中的一些尖端技术!