31

我有一个manifest.json,它有一个start_url属性,我想指向我的单页应用程序的第一个文件。

这是index.html,它是站点的根目录。我希望这是 . start_url,但从不要求该文件作为 URL。

如何指向start_url站点的相对根目录?

例如,假设站点位于https://example.com,那么 in 的值应该start_urlhttps://example.com/manifest.json多少?我希望 PWAhttps://example.com从而不是 https://example.com/index.html. PWA 可能放在不同的域中,因此start_url需要是相对的,而不是绝对的。

4

5 回答 5

37

例如,如果您在站点的根目录中运行,https://example.com/manifest.json或者https://test.example.com/manifest.json您可以使用"start_url": "/".

但是,这也将映射https://example.com/test/manifest.jsonhttps://example.com/,这会失败,因为它位于清单范围之外的文件夹中。

相反,如果您使用的是子目录,则需要同时设置 ascopestart_url

"start_url": "./"
"scope": "."

这将导致按预期https://example.com/test/manifest.json映射。https://example.com/test/

于 2019-05-14T10:32:43.400 回答
9

您的 start_url 应在清单文件中设置为以下内容。

"start_url": "/"

来源:https ://developers.google.com/web/fundamentals/integration/webapks

于 2018-08-31T22:46:03.877 回答
0

了解页面相对于服务器的位置很重要。本地主机或您从 node.js 服务器开始访问网站的位置。

例如,如果我想从 manifest.json 运行我的网站作为根网站,这就是我要写的。在此基础上,文件的根页面为 index.html。

{
"start_url": "/index.html"
}

记得添加一个连接到 index.html 页面的 service-worker.js。

您可以参考文档以获取更多信息:

参考:

  1. Web App Manifest 食谱书:https ://developers.google.com/web/fundamentals/web-app-manifest

  2. Service-Worker.js 简介https://developers.google.com/web/ilt/pwa/lab-scripting-the-service-worker

  3. Service-Worker.js 教程。https://developers.google.com/web/ilt/pwa/lab-scripting-the-service-worker
于 2019-10-11T09:32:45.910 回答
0

除了改变你start_url

"start_url": "/"

或子目录(有关详细信息,请参阅基思的答案

"start_url": "./"
"scope": "."

对于在 Android 中测试Chrome 浏览器start_url更改的manifest人员,这些更改可能不会立即反映给您的 PWA 用户。根据文档

Chrome 会定期将本地安装的清单与从网络获取的清单副本进行比较。如果将 PWA 添加到主屏幕所需的清单中的任何属性在网络副本中发生了更改,Chrome 将请求更新的 WebAPK,以反映这些新值。

对于 Chrome 的新版本(76 及更高版本),此时间间隔为 1 天。对于 Chrome 75 及更早版本,此期间以 3 天为间隔。这就是我所经历的以及我为强制 Chrome 获取新清单(用于测试和验证目的)所做的事情是(1)卸载 PWA,(2)清除 Chrome 数据,以及(3)重新安装PWA

于 2020-07-30T01:36:44.053 回答
-2

我什至可以从DevTools > Application > Manifest > start_url链接转到页面,在网络面板中切换到脱机并重新加载页面并从服务人员那里获取完整页面。

于 2018-07-12T13:44:34.450 回答