uniapp 实现全局拦截路由

7 篇文章 2 订阅
4 篇文章 0 订阅

 vue2支持,vue3不行:

package.json

{
  "name": "uniapp",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {},
  "dependencies": {
    "uni-read-pages": "^1.0.5",
    "uni-simple-router": "^2.0.2"
  }
}

 pages.json:

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationBarTitleText": "uni-app"
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	}
}

 vue.config.js

const TransformPages = require('uni-read-pages')
const {
	webpack
} = new TransformPages()
let pluginsDev = new webpack.DefinePlugin({
	ROUTES: webpack.DefinePlugin.runtimeValue(() => {
		const tfPages = new TransformPages({
			includes: ['path', 'name', 'aliasPath']
		});
		return JSON.stringify(tfPages.routes)
	}, true)
})
console.log(ROUTES,'---ROUTES---')
module.exports = {
	configureWebpack: {
		
	},
	chainWebpack: (config) => {
		config.plugins.push(pluginsDev)
		// 发行或运行时启用了压缩时会生效  
		config.optimization.minimizer('terser').tap((args) => {
			const compress = args[0].terserOptions.compress
			// 非 App 平台移除 console 代码(包含所有 console 方法,如 log,debug,info...)  
			compress.drop_console = true
			compress.pure_funcs = [
				'__f__', // App 平台 vue 移除日志代码  
				// 'console.debug' // 可移除指定的 console 方法  
			]
			return args
		})
	}
}

根目录创建: router-》index.js:

// router.js
import {
	RouterMount,
	createRouter
} from 'uni-simple-router';
// 创建路由表
const router = createRouter({
	// vue-cli创建项目的相关环境变量文件里面的变量,可能是区分平台使用,不是太重要。
	platform: process.env.VUE_APP_PLATFORM,
	// 路由信息
	routes: [...ROUTES]
});
//全局路由前置守卫
router.beforeEach((to, from, next) => {
	console.log(to, from,'--to, from, next---')
	next()
	// next({
	// 	path: '',
	// 	NAVTYPE: 'push'
	// });
});
// 全局路由后置守卫
router.afterEach((to, from) => {
	console.log('跳转结束')
})

export {
	router,
	RouterMount
}

 mian.js:

import App from './App'
// 路由
import {
	router,
	RouterMount
} from './router/index.js';


import Vue from 'vue'
// 路由
Vue.use(router)
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
    ...App
})
// #ifdef H5
RouterMount(app, '#app');
// #endif
app.$mount()

uni-read-pages(uniapp插件)

 uni-read-pages

runtime-values-via-runtimevalue

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值