返回上一页的功能应该如何设计?

2018-02-22 17:57:31 +08:00
 hoythan

在开发基于 nodejs 的 app 项目时,需要使用返回上一页的功能。 这个功能应当如何设计,在有 History 信息的情况下。

经常会遇到这样一个问题,有的页面允许返回,有的页面不允许返回。

Q1: 从 A 页面跳转到 B 页面后,B 页面不允许再返回到 A 页面,这个的控制权限应该交给 A 还是 B ?

例: 默认情况下全部不允许返回,B 页面控制我是否显示返回按钮。但是也有需求是 A 页面说我允许返回才可以返回否则禁止返回?所以这个权限应该给 B 还是给 A,还是两个都给,如果两个都给,应该谁权限更大一些?

Q2: History 自带的返回和前进功能过于简单,难以解决复杂的跳转页面问题

例: 一个多页的表单,用户从 A => B => C ,这时候在 C 页面用户希望返回,程序设计上只允许用户返回到 A 页面,而如果用户在 B 页面,则允许直接从 B 页面返回到 A 页面,这时候的逻辑就比较复杂了。。。单纯的 前进和返回已经无法实现。

Q3: 有没有合适的 js、nodejs 插件或方法用于管理这种我认为比较复杂的跳转问题。

3112 次点击
所在节点    程序员
8 条回复
whypool
2018-02-22 18:16:08 +08:00
传统多页面权限跳转,由后端控制,比如当前用户已经填写了表单,返回到表单页面的时候,直接 redirect 出去

单页方式,跳转可以不 pushState 状态,前端单页的框架都带路由,这个可以解决
hoythan
2018-02-22 18:18:53 +08:00
@whypool 全部都用 redirect 的话会导致 back 功能无效了,因为没有了上一页的记录,如果只有部分用的话,又回到了第一个问题,谁控制权限比较合适
hoythan
2018-02-22 18:24:52 +08:00
不管是不是 nodejs 项目,我觉得所有的应用程序开发不应该都有这样的问题嘛,他们是怎么解决的呀。
whypool
2018-02-22 18:28:38 +08:00
@hoythan 产品设计尽量规避这个,毕竟浏览器才是大佬,处理太多返回问题可能需要打死产品或者上 spa 管理路由
vuuv
2018-02-22 22:37:43 +08:00
中间的临时页面不进入 history ?这样就不会跳转到了。
Building
2018-02-23 08:44:59 +08:00
写一个 navigation 控制器,前进和后退就是出栈和入栈的操作,页面只绑定属性,具体操作交给 navigation 控制器。
zhuishe
2018-02-23 09:05:12 +08:00
我一般都用 History
simple11
2018-02-23 10:41:41 +08:00
navigation 控制器

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431712

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX