返回博客首页
← 所有文章

为 Visual Studio Code 构建 NativeScript 扩展 - 三点经验

2016 年 9 月 13 日 — 作者:Ivan Buhov

几个月前,我们着手为 NativeScript 开发者提供出色的代码编辑体验。我们最终选择了 Visual Studio Code,主要因为它是一款现代化的跨平台、功能丰富且高度可扩展的代码编辑器,在软件开发者中非常受欢迎。

从那时起,我们一直在积极开发 Visual Studio Code 的 NativeScript 扩展,它提供了 Intellisense、交互式调试以及与设备模拟器的集成,为 NativeScript 开发提供了最完整的功能环境。在此过程中,我们记录了一些重要的经验教训,希望帮助希望构建 VS Code 扩展的开发者社区。

经验教训 #1:一个扩展 - 多个进程

VS Code 扩展架构使我们能够提供 NativeScript 特定的调试适配器。从技术角度来看,调试适配器是一个独立的可执行文件,它将抽象的 VS Code 调试协议适配到具体的调试器协议。在每次调试会话中,VS Code 在一个全新的进程中加载调试适配器,这意味着从调试适配器代码中,我们无法访问 VS Code API(可在扩展主机进程中使用)。

这有点棘手,因为如果你使用 node 作为调试适配器的运行时,则需要在两个进程中加载通用代码。在设计这样的共享模块时,请牢记以下几点:

1.     最小化对 VS Code API 的依赖,因为只有扩展主机进程才能调用它。

2.     如果这样的模块在需要时执行一些逻辑(例如,将数据发送到服务器),它将被执行多次 - 一次在扩展主机进程中,一次在调试适配器进程中的每个调试会话中。如果你不希望这样,请避免在模块加载时执行代码。

如果你想在两个进程之间共享一些数据,或者调试适配器需要访问 VS Code API(例如,显示消息框),请考虑使用一些常用的进程间通信机制来实现。

经验教训 #2:及时了解最新更新

务必关注 VS Code 最新版本中引入的所有更新。在每个 版本说明中,都有一个针对扩展作者的部分,描述了最新版本中提供的新的 API 和功能。这些说明通常会向我们展示现有功能的更合适的实现方式,或者为我们提供新功能的想法。此外,通过定期查看 VS Code 功能投票门户,我们总是可以提前知道未来版本中会提供哪些功能。通常,最受关注的功能很快就会被 VS Code 团队包含在正式版本中。

另一个对我们帮助很大的宝贵资源是 VS Code 官方代码库。问题部分充满了有价值的讨论,这些讨论主要由社区成员发起。

经验教训 #3:VS Code Insiders 版本

VS Code Insiders 版本是我们的另一个宝贵工具。它让我们可以提前访问最新版本,并测试 NativeScript 扩展与它们之间的兼容性。这样,我们就可以领先用户一步,以便在正式版本发布之前,有时间应对可能的重大变更。

扩展如何影响 NativeScript 开发者?

在 NativeScript 的背景下,Visual Studio Code 扩展是将通用代码编辑器与 IDE 区别开来的关键。目前,VS Code + NativeScript 扩展实际上是我们所有开发者使用的标准工具。这种组合的强大功能也得到了 VS Code Marketplace 统计数据的证实,数据显示扩展下载量持续呈指数级增长。我们从 NativeScript 社区收到的反馈也证明,通过将我们的工具故事建立在 Visual Studio Code 上,我们正在朝着正确的方向前进。

我们希望您能尝试一下(下载 VS Code 的 NativeScript 扩展),并告诉我们在 NativeScript Slack 频道上您对此的看法。

NativeScript 到底是什么?

好吧,我本可以从本段开始。但我真的很想先记录一下我们构建 VS Code 扩展的经验。也就是说,如果你能读到这里,你可能对 NativeScript 是什么感兴趣。

NativeScript 允许您构建跨平台的原生 iOS 和 Android 应用,而无需使用 web 视图。使用 Angular、TypeScript 或现代 JavaScript 来获得真正的原生 UI 和性能,同时与 web 共享技能和代码。通过 JavaScript 获得 100% 的原生 API 访问权限,并重用来自 NPM、CocoaPods 和 Gradle 的软件包。开源,由 Telerik 支持。