Я хочу разработать расширение запуска модульных тестов для VSCode. Расширение должно отображать обнаруженные тесты, сгруппированные в расширяемую иерархию, аннотировать статус выполнения, отображать выходные данные и ошибки для каждого теста, предоставлять команды запуска/отладки на разных уровнях и, конечно же, красную/зеленую полосу.
Грубо разделяя это на «модель» и «представление», я планирую реализовать модель в процессе расширения, и я планирую реализовать представление как предварительный просмотр HTML на основе файла TextDocumentContentProvider
. (Есть ли лучший подход?)
Теперь модель и представление должны взаимодействовать друг с другом. Я хочу реализовать представление как одностраничное приложение. Представление будет отправлять команды модели, а модель будет отправлять события представлению (или представление будет опрашивать модель на наличие событий). Представление будет обновляться в соответствии с полученными событиями.
Мой вопрос в том, какую технику общения я должен использовать? Может ли HTML-страница в предварительном просмотре HTML получить доступ к VSCode/Atom/Electron/Node API? Могу ли я совместно использовать экземпляры объектов или выполнять легкие IPC? Пока не разобрался.
Я обнаружил, что могу вызывать команды VSCode или обновлять всю страницу, когда пользователь щелкает ссылку с href
, настроенной на определенную схему (command://
или ту, которую я зарегистрировал для своего TextDocumentContentProvider
).
Мне удалось открыть прослушиватель HTTP (http.createServer
) в процессе расширения и общаться через XMLHttpRequest
на стороне предварительного просмотра HTML. Но мне кажется, что это сильное излишество.
Интересно, есть ли более подходящие способы сделать это?
TextDocumentContentProvider
webviews, используя командные ссылки. См. старый предварительный просмотр уценки для примера этого Однако новый API веб-просмотра значительно упрощает эту задачу. - person Matt Bierner   schedule 26.02.2018