7

利用 PWA 或者说 Service Worker 有没有可能做到完全离线的体验?

 3 years ago
source link: https://www.v2ex.com/t/788406
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  PWA

利用 PWA 或者说 Service Worker 有没有可能做到完全离线的体验?

  nijjba · 6 小时 29 分钟前 · 291 次点击
据我所知 Google Docs 这种可以做到网络断开时, 所有的操作都保存在本地, 网络恢复后再将变动更新到服务器

那么像那些每次操作都依赖网络请求的系统, 如大部分业务系统、表格表单类的管理系统, 能否做到类似 Google Docs 的离线体验呢?
3 条回复    2021-07-09 02:50:50 +08:00

3dwelcome

3dwelcome   6 小时 19 分钟前

我没用楼主提到的技术,但用了类似的理念。

比如同一段表单提交认证代码,服务器上放一套,本地浏览器也放一套一样的,由路由来控制走哪个流程,服务器数据或者本地数据,二选一。理论上可以把用户体验优化到极致。

这个大前提,是服务器和客户端用的语言是一致的,一套代码库。现在有了 wasm 后,世界上所有语言在我眼里看起来,长得都像 JS 。

crclz

crclz   2 小时 58 分钟前

谷歌能这么做是因为 Angular 强大的工程化能力允许它这么做,不是因为用了什么黑科技。
不存在什么黑科技。离线的用户体验都是用业务逻辑代码写出来的。不存在哪一种技术可以减轻业务逻辑的负担。

至于具体的业务逻辑,应该是和 git 一样的流程:本地 commit,然后再异步 push 到云端。如果发生冲突,则覆盖,或者强制用户保存到一个新的文档。我没用过 Google Docs,但是 Google Colab 就是这样设计的。

“那么像那些每次操作都依赖网络请求的系统, 如大部分业务系统、表格表单类的管理系统, 能否做到类似 Google Docs 的离线体验呢?”

回答:可以这么做,但是不推荐。如果你按照一般方法进行开发,那么 UI 就是给 api 套一层壳。如果按照能够离线使用的标准进行设计,那么还涉及到 push 的逻辑、并发修改问题、解决冲突的逻辑。既然网络不成问题,那么合并给自己额外的开发任务呢?

test3207

test3207   2 小时 45 分钟前 via Android

楼上说的对,手写两套逻辑+维护冲突,成本本来就很高了。另外 sw 现在在不同平台和浏览器的实现也略有不同,一不小心就会踩坑,兼容性成本更高了。非技术驱动的团队还是谨慎点考虑……

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK