我正在构建一个Visual Studio代码扩展。该扩展名有TextDocumentContentProvider
,与vscode.previewHtml
命令一起显示。TextDocumentContentProvider HTML/JScontent可以与扩展的代码对话吗?
我想让这个提供者显示我的编译代码的结果。这似乎微不足道。但是,因为我的扩展也有一个调试器;我希望扩展上下文(或更好的是,调试器上下文)能够与该预览选项卡的代码进行交谈。这样,调试器可以更新选项卡(向其发送重新编译的数据),也可以获取一些数据以获取状态。
有没有办法做到这一点没有某种服务器?我想我可以在扩展上下文(因为它是Node)和预览HTML中的某种客户端运行一个网络服务器,该预览HTML通过预览选项卡模式uri指定的端口连接到服务器,但看起来有点麻烦。
我通常通过在GitHub上搜索具有类似功能的扩展来找到VSC扩展开发问题(和参考/示例)的答案,但是我找不到任何扩展(包括微软的two TextDocumentContentProvider
samples)。
那么,有没有人知道一个简单的方法来做到这一点,或者如果有可能呢? (或者任何可以进行调查的扩展)。 (编辑)我倾向于使用Node WebSocket服务器(在扩展级别)和WebSocket客户端(在预览HTML级别),这是LaTeX preview扩展为实时预览更新所做的工作。看起来很可能并且可能对我来说已经足够了,但是有点解决方法,因为我必须建立我自己的序列化操作协议。如果可能的话,具有与VSCode命令(不仅仅是命令链接)通信能力的类似JS上下文会更好。
该方法的问题在于'update'方法在TextDocumentContentProvider上下文中;我正在尝试使用预览HTML的页面上下文。同样,我不能只重新触发'provideTextDocumentContent';那只会创造新的内容,不是吗?我想要的是让HTML内容与扩展和交换信息对话,并更新其中的一些基于JS的交互式元素。 – zeh