uni-app 路由封装(简易版)
在实践运用中,经常需要在路由跳转时判断是否需要登录权限,页面跳转时,添加加在if判断。
插件市场也有一些这种插件,配置也稍微复制,大部分朝向vue-router。
注:本次路由封装,只是单纯的判断是否需要登录权限,其余的暂无考虑。
项目地址:https://gitee.com/jielov/uni-app-tabbar
1.创建js
先在跟目录下的 utils文件夹下创建 routeBlocker.js

routeBlocker.js代码内容

// xuex 数据
import store from '@/store/index.js' export default function openPage(args) {
//判断跳转方式是否正确
if (!['navigateTo', 'switchTab', 'reLaunch', 'redirectTo'].includes(args.type)) {
console.log("type必须是以下的值[navigateTo,switchTab,reLaunch,redirectTo]");
return;
} //路由参数
let url = args.url, //页面路径
type = args.type, // 跳转方式
ifLogin = args.login || false; // 是否需要判断登录 //是否需要判断登录
if (ifLogin) {
//根据vuex 判断是否登录
if (!store.state.hasLodin) {
uni.showToast({
title: '请先登录',
duration: 2000
});
setTimeout(() => {
//登录页面-路径
url = '/pages/login/login'
//跳转方法
// type = 'redirectTo'
//执行跳转
startRoute(type, url)
}, 500)
return;
}
}
//执行跳转
startRoute(type, url)
} //开始跳转
function startRoute(type, url) {
return new Promise((resolve, reject) => {
uni[type]({
url: url,
success(res) {},
fail(err) {}
})
})
}
2.使用方式
main.js中导入
//导入 路由封装
import routr from './utils/routeBlocker.js'
//vue2导入
Vue.prototype.$routr = routr
//vue3 导入
//app.config.globalProperties.$routr = routr;
页面使用
路由传参的话,还是以拼接传过去 ,接收方法不变
vue2 方法
this.$routr({
url: '/pages/my/my', //页面路径 添加参数 '/pages/my/my?id=1&name=uniapp'
type: 'navigateTo', //跳转方式 navigateTo,switchTab,reLaunch,redirectTo
login: true // 是否需要判断登录
})
vue3方法

<template>
<view class="content" @click="click">
路由跳转
</view>
</template> <script>
import {
getCurrentInstance
} from 'vue';
export default {
setup() {
//获取上下文实例
const {
proxy
} = getCurrentInstance();
//开始跳转
function click(e) {
proxy.$routr({
url: '/pages/my/my', //页面路径 添加参数 '/pages/my/my?id=1&name=uniapp'
type: 'navigateTo', //跳转方式 navigateTo,switchTab,reLaunch,redirectTo
login: true // 是否需要判断登录
})
}
return {
click
}
}
}
</script>
<style>
</style>
uni-app 路由封装(简易版)的更多相关文章
- Android借助Application重写App的Crash(简易版)
MainActivity如下: package cn.testcrash; import android.app.Activity; import android.os.Bundle; /** * D ...
- .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...
- Android学习之路——简易版微信为例(三)
最近好久没有更新博文,一则是因为公司最近比较忙,另外自己在Android学习过程和简易版微信的开发过程中碰到了一些绊脚石,所以最近一直在学习充电中.下面来列举一下自己所走过的弯路: (1)本来打算前端 ...
- Android学习之路——简易版微信为例(二)
1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样, ...
- Android学习之路——简易版微信为例(一)
这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个 ...
- django框架简介及自定义简易版框架
web应用与web框架本质 概念 什么是web应用程序呢? Web应用程序就一种可以通过互联网来访问资源的应用程序, 用户可以只需要用一个浏览器而不需要安装其他程序就可以访问自己需要的资源. 应用软件 ...
- Vue源码分析之实现一个简易版的Vue
目标 参考 https://cn.vuejs.org/v2/guide/reactivity.html 使用 Typescript 编写简易版的 vue 实现数据的响应式和基本的视图渲染,以及双向绑定 ...
- 手写简易版RPC框架基于Socket
什么是RPC框架? RPC就是远程调用过程,实现各个服务间的通信,像调用本地服务一样. RPC有什么优点? - 提高服务的拓展性,解耦.- 开发人员可以针对模块开发,互不影响.- 提升系统的可维护性及 ...
- 简易版自定义BaseServlet
这几天在学Java Web,一直在思考Servlet重用的问题,就用java的反射机制实现自定义的简易版BaseServlet; 该方式有点像struts2 利用映射获取前端的参数.有兴趣的同学可以自 ...
- MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
随机推荐
- NXP i.MX 6ULL工业核心板硬件说明书( ARM Cortex-A7,主频792MHz)
1 硬件资源 创龙科技SOM-TLIMX6U是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的低成本工业级核心板,主频792MHz,通过邮票孔连 ...
- DVT:华为提出动态级联Vision Transformer,性能杠杠的 | NeurIPS 2021
论文主要处理Vision Transformer中的性能问题,采用推理速度不同的级联模型进行速度优化,搭配层级间的特征复用和自注意力关系复用来提升准确率.从实验结果来看,性能提升不错 来源:晓飞的算法 ...
- RPC和心跳机制
hadoop在节点间的内部通讯使用的是RPC,RPC协议把消息翻译成二进制字节流发送到远程节点,远程节点再通过反序列化把二进制流转成原始的信息. namenode与datanode之间的通信,jobt ...
- vscode 使用 python 进行 UG 二次开发 实现代码提示功能
vscode 使用 python 进行 UG 二次开发的 实现代码提示功能 用 VSCODE 进行 UG 二次开发的时候, 想要用代码提示的时候,可以用 pydev 插件, 但是,pydev 只有一个 ...
- 理解Node.js 的重要概念
Node.js是什么 Node.js是JavaScript的运行时(runtime),终于脱离了浏览器也能运行JavasScript了.同时,Node.js又暴露fs,http等对象给JS,使JS能够 ...
- 开源免费又好用的中式数据报表:UReport2是一款高性能的架构在Spring之上纯Java报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。
北润乾.南帆软,数加发力在云端. uReport 身何安?中式报表真开源. 报表江湖之中,uReport安身立命的产品品类定位是什么? 说来很简单,uReport的价值在于填补了这样一个市场空白:开源 ...
- oeasy教您玩转vim - 59 - # 编辑总结
[Github地址] (https://github.com/overmind1980/oeasyvim) [Gitee地址] (overmind1980/oeasyvim) [蓝桥实验楼 邀请码 ...
- 音频文件降噪及python示例
操作系统 :Windows 10_x64 Python版本:3.9.2 noisereduce版本:3.0.2 从事音频相关工作,大概率会碰到降噪问题,今天整理下之前学习音频文件降噪的笔记,并提供Au ...
- 自写ApiTools工具,功能参考Postman和ApiPost
近日在使用ApiPost的时候,发现新版本8和7不兼容,也就是说8不支持离线操作,而7可以. 我想说,我就是因为不想登录使用才从Postman换到ApiPost的. 众所周知,postman时国外软件 ...
- 微服务:nacos服务注册与发现
服务治理的三个角色: 服务提供者:订阅服务 服务消费者:注册服务 注册中心:记录与监控服务状态,推送服务变更信息.提供者定时发送心跳检测,心跳检测失败,就会向消费者推送变更 提供者通过负载均衡的算法选 ...