vue2 自己写一个路由替代 vue-router 难度多大 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
murmur
V2EX    Javascript

vue2 自己写一个路由替代 vue-router 难度多大

  •  
  •   murmur 2017-08-07 12:56:49 +08:00 4414 次点击
    这是一个创建于 3043 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就是把 route-view 换掉 需求里加了一条很恶心的就是转场手势,要求侧滑可以返回,同时侧滑的时候还能显示上一个 route 的一部分 vue 的 route 一次只有一个 view 是 active 的,其余的要么被 unmount 了要么被缓存 deactive 了 不把所有 route 都放那 display:none 想了一下基本上做不出这个效果来 因为侧滑可以滑一半再回去

    只实现 hashchange 部分就可以 routeParams 基本没用到 唯独这个路由嵌套有点虚哦 我已经魔改了 vue 的一部分 让 in 和 out 的动画同时播放,但是这个还算简单就改一部分,这个大改底层。。

    8 条回复    2017-08-18 13:16:28 +08:00
    airyland
        1
    airyland  
       2017-08-07 14:35:57 +08:00   1
    完美解决方案:改需求。
    razor1895
        2
    razor1895  
       2017-08-07 14:59:52 +08:00
    其实这个需求可以不用改 vue-router.... 不过实现起来也很麻烦,比如你有个当前页面 a, 上一个页面 b, 下一个页面 c,分别左右滑切换页面。那么你可以把这三个页面放在自己封装的 scrollview 里面,这个 scrollview 里面自己写一个事件监听判断是否切换了页面,在这个事件回调里再掉 vue-router 页面跳转到对应路由,改路由页面的结构也是类似的。不过缺点就是切换路由的时候页面会闪一下。。。
    murmur
        3
    murmur  
    OP
       2017-08-07 15:26:03 +08:00
    @razor1895 预载这个我想过 滑的时候就加载上一个页面连起来 现在的性能这点开销不是问题了

    问题是。。滑了还可以滑回去,vue 可没有终止转场或者撤销转场的设计
    Durandal01
        4
    Durandal01  
       2017-08-07 17:12:06 +08:00
    @murmur 要手势转场就别用 SPA 了,我上半年基本搭在这玩意上(和你的需求一模一样)。
    Durandal01
        5
    Durandal01  
       2017-08-07 17:18:15 +08:00
    @murmur 司的解决方案是不用 vue-router,每个页面一个 vue 实例……剩下的用 webview 来做方案有很多……

    但是这个思路太邪道了……还是改需求比较好。
    murmur
        6
    murmur  
    OP
       2017-08-07 20:19:01 +08:00
    @Durandal01 这样的话岂不是过场动画只能 native 实现
    Durandal01
        7
    Durandal01  
       2017-08-08 09:29:21 +08:00
    @murmur 是的,我们用的是 turbolinks-ios

    但真的太邪道了……慎重慎重
    wdhwg001
        8
    wdhwg001  
       2017-08-18 13:16:28 +08:00
    我一直觉得 Vue 全家桶里除了 Vue 本体都是累赘,Vuex 大幅降低开发效率,VueRouter 每次都需要重新写…
    所以,自己写吧,撸个简单可用的 VueRouter 也就一下午左右,比较推荐的方案是用 JS 和 Transition 里的 cancelled,手指碰上去开始,划回去了就 cancel,划过去就 done,具体的细节可能还需要推敲,比如 iOS 内置的就包含了速度测定和滑动时长测定…
    但这个需求会遇到的最大的问题其实是怎么取消 Safari 默认的侧滑…(
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2750 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:46 PVG 15:46 LAX 23:46 JFK 02:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86