我正在構建一個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