前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SPA 开发的一点思考

SPA 开发的一点思考

作者头像
zgq354
发布2021-05-06 10:36:43
6960
发布2021-05-06 10:36:43
举报
文章被收录于专栏:0x0001

回想最近独立负责开发的一个需求:App 中的一个子模块,客户端提供的 WebView 加载网页,实现的一个单页应用(SPA)。其中将功能拆分到多个不同的子页面分别实现,各个子页面实质上只是这一 WebView 页面中的一个模块,通过 React Router 去分发路由和渲染它们。

从交互同学手上拿到的 Interaction Flow 流程图,大致描述了各个子页面的元素和用户的跳转关系。而流程图背后,并未体现出页面的堆叠关系、哪一块内容需要生成滚动、层级如何安排等更立体的结构等信息。

对于 Web 前端开发这一角色而言,一开始我很自然而然便以一种「切图仔」的思维,直接开始对着视觉稿开撸;在做的时候遇到矛盾、才会一点点去反推交互视觉同学去对齐和明确各个细节,甚至有时候他们也并未想清楚这个问题,导致视觉和交互变更带来的额外工作量(论俺上个月的加班来源)。

对齐细节时也发现一些当下无法调和的矛盾,主要与页面栈管理有关。页面栈主要是移动 App 开发的概念,描述了页面的堆叠和切换的模式,和浏览器的前进后退历史记录相似。这里问题在于,浏览器(WebView)最初的设计是以网页浏览为中心做的,每一次前进或后退操作,会导致整个页面的刷新,状态无法像移动端 App 那样有很直接的堆叠的模式。也未实现类似 Android / iOS 原生 App 那样平滑的过渡动画效果,切换效果也比较生硬。

其中比较严重的问题是,基于 WebView 的 SPA 子页,在数据埋点与上报的场景有着诸多不便,也容易因为多次曝光导致数据分析出现偏差。

从一个较为抽象的视角去观察,这里核心矛盾在于当下 Web 的形态正在从 “文档” 到 “应用” 的方向去转变;而我们基于文档展示的逻辑去承载整个应用的逻辑,导致体验不是太好。现有的 Web GUI 框架(React / Vue / Angular)等本质上也是在调和这两者的矛盾,但它们仅仅只是解决了基于文档模型实现 GUI 渲染这一层面的问题。更深一层次的移动端的交互细节并未覆盖得很好,比如刚想到的页面切换场景的各种细节。在桌面端对交互的诉求不是很高,只要实现了基本的界面渲染和多窗口就满足需求,所以问题并不太明显。

显然, Web 在移动端的交互场景还是缺失了很多东西。类似微信小程序这样的杂交方案,也正是针对这样的缺憾做了许多工作,小程序框架层面提供了页面栈的功能,同时补齐许多客户端才有的 API。当它融合 Web 的低门槛、分发效率优势与原生  App 的交互体验优势,也开始大肆占领市场。

抛开小程序不谈,在基于纯 WebView 的应用开发,这方面似乎还有不少发挥的空间;无论是 SPA 还是 PWA 也好,在移动端的交互需求下,大致都有着类似按页面拆分功能的场景。或许可以基于 React / Vue / Angular 等 GUI 框架之上,设计一套轻量且完善的页面栈管理方案,这样的 SPA 或 PWA ,在使用感受上也可以很接近原生 App 的体验了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档