关于uniapp的vue2.x版本的路由守卫拦截方案

使用uni-read-pages和uni-simple-router实现,方案思路如下

首先在packge.json把下面两个依赖npm install 一下,我目前是这两个版本,别的版本号没有测试过

复制代码
"dependencies": {
	  "uni-read-pages": "^1.0.5",
	  "uni-simple-router": "^2.0.5"
  }

然后再再根目录下面创建一个vue.config.js

代码如下

javascript 复制代码
//vue.config.js
const TransformPages = require('uni-read-pages')
const {webpack} = new TransformPages()
module.exports = {
	configureWebpack: {
		plugins: [
			new webpack.DefinePlugin({
				ROUTES: webpack.DefinePlugin.runtimeValue(() => {
					const tfPages = new TransformPages({
						includes: ['path', 'name', 'aliasPath','meta']
					});
					return JSON.stringify(tfPages.routes)
				}, true )
			})
		]
	}
}

然后根目录创建一个index.js(这里应该也可以创建目录router/index.js,我没有试过,感兴趣的自己可以试一下)

javascript 复制代码
// router.js
import {RouterMount,createRouter} from 'uni-simple-router';

const scrollInfo={};

const router = createRouter({
	platform: process.env.VUE_APP_PLATFORM,  
	routes: [...ROUTES],
	h5:{
		scrollBehavior:(to, from, savedPosition)=>{
			const XY=scrollInfo[to.path];
			if(XY){
				return XY;
			}
			return savedPosition;
		}
	}
});
//全局路由前置守卫
router.beforeEach((to, from, next) => {
	
	console.log("跳转前");
	next();
});
// 全局路由后置守卫
router.afterEach((to, from) => {
    console.log('跳转结束')
})

export {
	router,
	RouterMount
}

然后main.js里面加入如下代码

javascript 复制代码
import Vue from 'vue'
import App from './App'
import {router,RouterMount} from './router.js'  //路径换成自己的
Vue.use(router)




Vue.config.productionTip = false
App.mpType = 'app'

const app = new Vue({
    ...App,
})

//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式-----这一步很重要,
// #ifdef H5
	RouterMount(app,router,'#app')
// #endif
app.$mount()

其他的不用做任何改动,然后控制台就可以打印出来啦

相关推荐
IT枫斗者1 小时前
IntelliJ IDEA 2025.3史诗级更新:统一发行版+Spring Boot 4支持,这更新太香了!
java·开发语言·前端·javascript·spring boot·后端·intellij-idea
N***p3652 小时前
Spring Boot项目接收前端参数的11种方式
前端·spring boot·后端
享誉霸王3 小时前
15、告别混乱!Vue3复杂项目的规范搭建与基础库封装实战
前端·javascript·vue.js·前端框架·json·firefox·html5
a1117763 小时前
飞机躲避炸弹 网页游戏
前端·开源·html·threejs
夏乌_Wx3 小时前
mybash:简易 Shell 实现的设计思路与核心模块解析
linux·服务器·前端
滕青山4 小时前
URL编码/解码 核心JS实现
前端·javascript·vue.js
菜鸟小芯5 小时前
【GLM-5 陪练式前端新手入门】第五篇:响应式适配 —— 让个人主页 “见机行事”
前端·人工智能
无名之逆6 小时前
你可能不需要WebSocket-服务器发送事件的简单力量
java·开发语言·前端·后端·计算机·rust·编程
加农炮手Jinx6 小时前
Flutter for OpenHarmony:web_socket_channel 全平台 WebSocket 通信标准库,从原理到鸿蒙实战(3000字深度解析)
android·前端·网络·websocket·flutter·华为·harmonyos
王码码20356 小时前
Flutter for OpenHarmony:web_socket 纯 Dart 标准 WebSocket 客户端(跨平台兼容性之王) 深度解析与鸿蒙
android·前端·websocket·网络协议·flutter·华为·harmonyos