V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hoythan
V2EX  ›  程序员

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

  •  
  •   hoythan · 2018-02-22 17:57:31 +08:00 · 2923 次点击
    这是一个创建于 2246 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在开发基于 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 插件或方法用于管理这种我认为比较复杂的跳转问题。

    8 条回复    2018-02-23 10:41:41 +08:00
    whypool
        1
    whypool  
       2018-02-22 18:16:08 +08:00   ❤️ 1
    传统多页面权限跳转,由后端控制,比如当前用户已经填写了表单,返回到表单页面的时候,直接 redirect 出去

    单页方式,跳转可以不 pushState 状态,前端单页的框架都带路由,这个可以解决
    hoythan
        2
    hoythan  
    OP
       2018-02-22 18:18:53 +08:00
    @whypool 全部都用 redirect 的话会导致 back 功能无效了,因为没有了上一页的记录,如果只有部分用的话,又回到了第一个问题,谁控制权限比较合适
    hoythan
        3
    hoythan  
    OP
       2018-02-22 18:24:52 +08:00
    不管是不是 nodejs 项目,我觉得所有的应用程序开发不应该都有这样的问题嘛,他们是怎么解决的呀。
    whypool
        4
    whypool  
       2018-02-22 18:28:38 +08:00
    @hoythan 产品设计尽量规避这个,毕竟浏览器才是大佬,处理太多返回问题可能需要打死产品或者上 spa 管理路由
    vuuv
        5
    vuuv  
       2018-02-22 22:37:43 +08:00 via Android
    中间的临时页面不进入 history ?这样就不会跳转到了。
    Building
        6
    Building  
       2018-02-23 08:44:59 +08:00 via iPhone
    写一个 navigation 控制器,前进和后退就是出栈和入栈的操作,页面只绑定属性,具体操作交给 navigation 控制器。
    zhuishe
        7
    zhuishe  
       2018-02-23 09:05:12 +08:00
    我一般都用 History
    simple11
        8
    simple11  
       2018-02-23 10:41:41 +08:00
    navigation 控制器
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5502 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 05:58 · PVG 13:58 · LAX 22:58 · JFK 01:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.