2016-11-22 12 views
3

VSCode用の単体テストランナー拡張を開発したいと考えています。エクステンションは、発見されたテストを展開可能な階層にグループ分けして表示し、実行状態に注釈を付け、各テストの出力とエラーを表示し、異なるレベルで実行/デバッグコマンドを提供します。VSCode拡張IPC(HTMLプレビュー内UI)

これを「モデル」と「ビュー」に大まかに示して、モデルを拡張プロセスで実装する予定です。このビューをTextDocumentContentProviderに基づくHTMLプレビューとして実装する予定です。 (良い方法はありますか?)

ここで、モデルとビューは互いに通信する必要があります。私は単一ページアプリケーションとしてビューを実装したいと思います。ビューはモデルにコマンドを送信し、モデルはビューにイベントを送信します(または、ビューによってイベントのモデルがポーリングされます)。ビューは受信したイベントに従って更新されます。

私の質問は、どの通信技術を使用すべきですか? HTMLプレビュー内のHTMLページはVSCode/Atom/Electron/Node APIにアクセスできますか?オブジェクトインスタンスを共有したり、軽量IPCを実行できますか?これまでに私は把握していませんでした。

ユーザーが特定のスキーム(command://または私は私のTextDocumentContentProviderに登録さ1)にhrefセットとのリンクをクリックしたときに、私はVSCodeコマンドを呼び出すか、ページ全体を更新することができ、私を見つけました。

拡張プロセスでHTTPリスナー(http.createServer)を開き、HTMLプレビュー側のXMLHttpRequestを介して通信するのに成功しました。しかし、それは私には重い残酷なもののように見えます。

もっと適切な方法があるのだろうか?

+0

を構築し、最新のVSコードのインサイダーであなたの拡張機能を実行しますか? –

+0

誰かがこの問題を抱えている場合、答えは「いいえ、通信する方法はありません」と思われますが、通信にsocket.ioを使用するのは簡単で軽量です。 –

+0

コマンドリンクを使用して 'TextDocumentContentProvider'ウェブビューと通信できます。 [これの例については古いマークダウンのプレビューを参照](https://github.com/Microsoft/vscode/blob/f88bbf9137d24d36d968ea6b2911786bfe103002/extensions/markdown/media/main.js#L37)新しいwebview APIを使用すると、 –

答えて

0

VSCodeには、これを簡単にするための新しいAPIがあります。あなたのpackage.json

  • 手動に真:

    1. "enableProposedApi" を追加します。

      https://github.com/Microsoft/vscode/issues/43713

      あなたは、新しいAPIを試すために、新しいAPI here

      を見つけることができますvscode.proposed.d.tsをダウンロードしてプロジェクトに追加してください:https://raw.githubusercontent.com/Microsoft/vscode/master/src/vs/vscode.proposed.d.ts

    2. は、あなたがこの質問への答えを見つけるか
  • 関連する問題