之前也没有实际写过微信小程序,最近由于需要要写小程序,思前想后决定用uniapp,刚好也能练练我的uniapp查找API的能力。 废话不多说,开始弄。
由于小程序并没有像 vue-router 那样子的路由拦截,我在网上找到了这样的一个库,很好用。网址贴在这里。
具体安装使用开文档。
安装完成之后,开始在pages 里面配置路由,重点一定要配置每个路由的name,如上图红框标记。因为uni-simple-router是根据 路由的name去跳转的.
uni-simple-router 页面跳转示例。
因为使用了# uni-simple-router, 就可以像vue-router一样,有了路由前置守卫等等路由特性。 所以我们可以在路由的前置拦截里面 判断当前将要进去的页面是不是需要登录验证的,如果需要则验证,如果不需要则放行,具体和vue-router的使用方法是一毛一样的。
当前上面的这种方法只能拦截普通的页面 并不能拦截小程序的tabbar页面,所以我自己重写了一下 tabbar。 重新之后把tabbar组件引入底部的对应的底部导航页面即可。因为是自己封装的tabbar页面,所以我们可以通过点击事件,获取到当前点击的是那一个底部导航。然后根据底部导航跳转到对应的页面即可。
还有一个点就是 底部导航有高亮选中的效果。所以需要根据选中的哪一个底部导航,然后传入对应的变量到tabbar 组件。进行class判断,显示高亮。 以下是我的代码
底部page页面
tabbar 组件
tabbar 组件切换方法
我最后使用的 跳转组件的方法是 uni-simple-router 中的 replaceAll(), 这个方法没有页面切换从右到左的动画,比如push 会有页面切换的动画,具体根据实际需要。
uni-simple-router是我在微信小程序中使用的。其它端没测试。
如果大家有用的上的,后面自己优化一下。我把代码贴到最下面。 如果哪里我理解的有问题,或者说的不对的地方,请指正,及时更正。