当我们有一个原生/混合移动应用程序时,它通常归结为通过移动应用程序 UI 改变应用程序状态的用户操作。
但是现在,当我们有一个渐进式 Web 应用程序(可能还不是全屏 UI,因为用户尚未将其添加到主屏幕等)时,我们继承了一些额外的用户操作,我们必须将其视为事实来源:
- 用户可以更改/输入新的 URL
- 用户可以后退/前进
- 用户可以点击刷新
因此,让我们假设以下上下文:
- 我们有一个带有一些延迟加载页面的 PWA:主页、aboutpage、userpage。
- 此示例没有登录身份验证等
- 当用户导航到 www.ourprogressivewebapp.com 他们登陆主页:https://ourprogressivewebapp.com/#/home.page
- 我们 PWA 的导航堆栈现在有 rootPage = homepage
给出上述“状态”的问题:
当用户此时点击刷新时会发生什么?用户第一次输入原始网址(www.ourprogressivewebapp.com)和点击“刷新”(现在地址字段显示https://ourprogressivewebapp.com/#/主页)
现在,如果用户在应用程序的 ui 中单击“转到关于页面”,该页面延迟加载并被推送到导航堆栈(用户看到: https ://ourprogressivewebapp.com/#/about.page,rootpage 是主页,但我们也有关于现在堆栈中的页面)。如果用户现在点击刷新会发生什么?应用程序会“跳过”加载主页吗?
最后一个,现在用户点击了用户页面,它也被“推”到了导航堆栈(https://ourprogressivewebapp.com/#/user.page)。如果这个用户开始在他们的浏览器中按“返回”会发生什么?这将被解释为 pop() 方法并且这些页面将“脱离堆栈”或者从应用程序的状态角度来看在这种情况下真正发生了什么?
我正在寻找直接答案或帮助指出详细介绍此行为的文章。