2016-11-22 75 views
3

我希望爲VSCode開發一個單元測試運行器擴展。該擴展應顯示發現的測試,分組爲可擴展的層次結構,註釋運行狀態,顯示每個測試的輸出和錯誤,提供不同級別的運行/調試命令,當然還有紅色/綠色欄。VSCode擴展IPC在HTML預覽中使用UI

大致將此分解爲「模型」和「視圖」,我計劃在擴展過程中實現該模型,並計劃基於TextDocumentContentProvider實現視圖爲HTML預覽。 (有沒有更好的方法?)

現在,模型和視圖應該相互溝通。我想將該視圖實現爲單頁面應用程序。視圖將向模型發送命令,模型將向視圖發送事件(或視圖將輪詢模型中的事件)。該視圖將根據收到的事件進行更新。

我的問題是,我應該使用什麼通信技術? HTML預覽中的HTML頁面是否可以訪問VSCode/Atom/Electron/Node API?我可以共享對象實例,還是做一些輕量級的IPC?到目前爲止,我沒有弄清楚。

我發現我可以調用VSCode命令或刷新整個頁面,當用戶點擊與href一套具體的方案(command://或我註冊了我的TextDocumentContentProvider之一)的鏈接。

我確實成功地在擴展過程中打開HTTP偵聽器(http.createServer),並在HTML預覽端通過XMLHttpRequest進行通信。但它看起來像一個沉重的矯枉過正。

我不知道是否有更合適的方法來做到這一點?

+0

你有沒有發現任何回答這個問題嗎? –

+0

如果有人遇到這種情況:答案看起來像是「不,沒有內置的溝通方式」,但使用socket.io進行通信感覺足夠輕鬆和輕鬆。 –

+0

您可以使用命令鏈接與「TextDocumentContentProvider」網頁瀏覽進行通信。請參閱[舊式Markdown預覽的示例](https://github.com/Microsoft/vscode/blob/f88bbf9137d24d36d968ea6b2911786bfe103002/extensions/markdown/media/main.js#L37)新的webview API使這一點變得更加簡單 –

回答