【问题标题】:TreeView instead of WebView?TreeView 而不是 WebView?
【发布时间】:2018-09-13 01:31:10
【问题描述】:

一旦 createTreeView() 创建了 TreeView 实例,reveal() 就会获取 TreeItem 的派生实现。 Reveal() 不像 WebView[Panel] 那样采用 ViewColumn。 vscode 扩展 API 可以指定 ViewColumn 的唯一方法是实现 TextEditor 接口的 ExtHostTestEditor 和 WebView。那么是不是所有的自定义编辑器都必须用 WebView 来实现呢? TreeView(s) 是否仅适用于活动栏侧视图?

这似乎很奇怪,因为有警告不要使用 WebView,因为它们太重了。此外,还需要付出额外的努力来使 WebView 的外观与编辑器相匹配。 vscode-json-editor 使用 WebView,我还没有找到任何不使用 WebView 的自定义编辑器。验证 WebView 方法将有助于避免陷入一大堆兔子洞。谢谢。

【问题讨论】:

    标签: visual-studio-code treeview vscode-extensions


    【解决方案1】:

    这些类型的视图有不同的用例。以下是每个 VS Code 1.28 的快速概览:

    树视图

    TreeViews 可以显示在侧栏中,例如资源管理器或源代码控制部分。树视图使用数据驱动程序 api,其中 VS Code 控制表示。这意味着您可以免费获得很多东西,但您无法完全自定义树视图的行为。

    如果您想添加额外的数据视图,请使用树状视图。树视图的一个很好的例子是自定义文件浏览器,显示编辑器的轮廓,或显示资源列表。

    网络视图

    Webviews 可以在编辑器中显示。它们可以包含任何类型的 html 内容,但您对该内容的用户体验负全部责任。

    如果您需要自定义用户体验或需要呈现完全自定义的数据视图,请使用网络视图。

    【讨论】:

    • 感谢您的确认。如果 API 和 UI 在不使用 WebView 方法的情况下对扩展更加开放,那就太好了。 CSS 是否公开和可导入到 WebView?如果我的 WebView 包含文本,取决于 CSS 的编写方式,WebView HTML 可以引用相同的 CSS 选择器。
    • 不,你不能将 VS Code 的 css 导入 webview。它是孤立的,就像一个沙盒 iframe
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    相关资源
    最近更新 更多