几个月前,我们着手为 NativeScript 开发者提供出色的代码编辑体验。我们最终选择了 Visual Studio Code,主要因为它是一款现代化的跨平台、功能丰富且高度可扩展的代码编辑器,在软件开发者中非常受欢迎。
从那时起,我们一直在积极开发 Visual Studio Code 的 NativeScript 扩展,它提供了 Intellisense、交互式调试以及与设备模拟器的集成,为 NativeScript 开发提供了最完整的功能环境。在此过程中,我们记录了一些重要的经验教训,希望帮助希望构建 VS Code 扩展的开发者社区。
VS Code 扩展架构使我们能够提供 NativeScript 特定的调试适配器。从技术角度来看,调试适配器是一个独立的可执行文件,它将抽象的 VS Code 调试协议适配到具体的调试器协议。在每次调试会话中,VS Code 在一个全新的进程中加载调试适配器,这意味着从调试适配器代码中,我们无法访问 VS Code API(可在扩展主机进程中使用)。
这有点棘手,因为如果你使用 node 作为调试适配器的运行时,则需要在两个进程中加载通用代码。在设计这样的共享模块时,请牢记以下几点:
1. 最小化对 VS Code API 的依赖,因为只有扩展主机进程才能调用它。
2. 如果这样的模块在需要时执行一些逻辑(例如,将数据发送到服务器),它将被执行多次 - 一次在扩展主机进程中,一次在调试适配器进程中的每个调试会话中。如果你不希望这样,请避免在模块加载时执行代码。
如果你想在两个进程之间共享一些数据,或者调试适配器需要访问 VS Code API(例如,显示消息框),请考虑使用一些常用的进程间通信机制来实现。
务必关注 VS Code 最新版本中引入的所有更新。在每个 版本说明中,都有一个针对扩展作者的部分,描述了最新版本中提供的新的 API 和功能。这些说明通常会向我们展示现有功能的更合适的实现方式,或者为我们提供新功能的想法。此外,通过定期查看 VS Code 功能投票门户,我们总是可以提前知道未来版本中会提供哪些功能。通常,最受关注的功能很快就会被 VS Code 团队包含在正式版本中。
另一个对我们帮助很大的宝贵资源是 VS Code 官方代码库。问题部分充满了有价值的讨论,这些讨论主要由社区成员发起。
VS Code Insiders 版本是我们的另一个宝贵工具。它让我们可以提前访问最新版本,并测试 NativeScript 扩展与它们之间的兼容性。这样,我们就可以领先用户一步,以便在正式版本发布之前,有时间应对可能的重大变更。
在 NativeScript 的背景下,Visual Studio Code 扩展是将通用代码编辑器与 IDE 区别开来的关键。目前,VS Code + NativeScript 扩展实际上是我们所有开发者使用的标准工具。这种组合的强大功能也得到了 VS Code Marketplace 统计数据的证实,数据显示扩展下载量持续呈指数级增长。我们从 NativeScript 社区收到的反馈也证明,通过将我们的工具故事建立在 Visual Studio Code 上,我们正在朝着正确的方向前进。
我们希望您能尝试一下(下载 VS Code 的 NativeScript 扩展),并告诉我们在 NativeScript Slack 频道上您对此的看法。
好吧,我本可以从本段开始。但我真的很想先记录一下我们构建 VS Code 扩展的经验。也就是说,如果你能读到这里,你可能对 NativeScript 是什么感兴趣。
NativeScript 允许您构建跨平台的原生 iOS 和 Android 应用,而无需使用 web 视图。使用 Angular、TypeScript 或现代 JavaScript 来获得真正的原生 UI 和性能,同时与 web 共享技能和代码。通过 JavaScript 获得 100% 的原生 API 访问权限,并重用来自 NPM、CocoaPods 和 Gradle 的软件包。开源,由 Telerik 支持。