页面从哪里加载
窗口或面板打开时,组件要决定加载哪个页面。了解这个顺序,就能明白为什么窗口显示的是旧主题、内置测试页,或是 “Frontend not found” 页面。
模板
模板是 profile 资源根目录 <profile>\webview-ui\ 下带 index.html 的文件夹。一个主题可以有多个页面、脚本和资源文件,必需的只有 index.html。
text
<profile>/
└── webview-ui/ 资源根目录
├── default/ 没选过模板时使用的模板
│ └── index.html
└── my-theme/ 其他任意模板
├── index.html
└── assets/全局活动模板是在 File → Preferences → Display → WebView2 UI 页选中的那个;从没选过时为 default。在那里新建模板只会写入一个占位的 index.html,不带 SDK、脚本或其他文件。
本地页面经 https://foo-ui-webview2.local/ 提供,这个地址映射到模板文件夹,所以 /index.html 就是模板的 index.html,/assets/app.js 这类以根开头的路径也在文件夹内解析。
查找顺序
主窗口、后台窗口和每个面板都按下面的顺序取第一个适用的:
- 开发服务器。 打开了
使用开发服务器(HMR 热重载)且填了 URL 时,所有窗口和面板都加载这个 URL。连不上时从第 2 步继续。 - 面板的 URL 覆盖。 面板配置里填了 URL 时加载它。
- 面板自己的模板,指定了且该文件夹里有
index.html时。 - 全局活动模板,其文件夹里有
index.html时。 - 组件文件夹里的
foo_ui_webview2_resources\dist,里面有index.html时。旧版本曾把内置主题装在这里,现在的版本不再提供;组件包建出的空文件夹会被跳过。 <profile>\webview-ui\default\,里面有index.html时。- 内置页面。主窗口与后台窗口显示一个测试页,上面的按钮可以试用各个 API;面板显示 “Frontend not found. Please install a template.”。
页面打开的弹出窗口另有规则:它们从同一个模板(或开发服务器)加载 <页面>.html,查询参数里带窗口 ID。连不上开发服务器时,弹出窗口改从模板加载同一个页面;没有哪个模板文件夹有 index.html 时显示 “Frontend not found” 页面。
什么时候重新加载
- 在偏好设置页换了模板后按
应用,主窗口和跟随全局模板的面板重新加载;指定了自己模板或 URL 的面板保持原页面。 - 改了开发服务器设置后按
应用,重新加载的也是这些窗口。 - 两种
应用都不会重新加载弹出窗口:已打开的弹出窗口保持原页面,之后新开的按新设置加载。 - 开发服务器开着时,换模板不会让任何页面重新加载:页面仍从开发服务器来。
- 在面板的配置对话框里改模板或 URL,会让该面板重新加载。