首页 > 其他分享 >uni-app 使用uni-simple-router进行路由守卫

uni-app 使用uni-simple-router进行路由守卫

时间:2023-01-10 15:55:15浏览次数:36  
标签:const simple app js meta router uni

// 1. 安装依赖
// uni-read-pages 适用于读取page.json 文件中的路由信息
npm i [email protected] uni-read-pages

// 2. 配置与初始化
// 2.1 根目录新建 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)
      })
    ]
  }
}

// 新建 router 配置文件
import { RouterMount, createRouter } from 'uni-simple-router';
import store from "@/store/index.js"

const router = createRouter({
  platform: process.env.VUE_APP_PLATFORM,
  routerErrorEach: ({ type, msg }) => {
    console.log(type, msg);
    switch (type) {
      // APP退出应用
      case 3:
        // #ifdef APP-PLUS
        router.$lockStatus = false;
        uni.showModal({
          title: '提示',
          content: '您确定要退出应用吗?',
          success: function (res) {
            if (res.confirm) {
              plus.runtime.quit();
            }
          }
        });
        // #endif
        break;
      case 2:
      case 0:
        router.$lockStatus = false;
        break;
      default:
        break;
    }
  },
  routes: [...ROUTES]   // ROUTES 这个名称是webpack 中配置的名称
});

//全局路由前置守卫
router.beforeEach((to, from, next) => {
  if (to.meta && to.meta.currentNav) {
    store.commit('updateCurrentNav', to.meta.currentNav);
  }
  next()
});

export { router, RouterMount }

// 3 main.js导入router.js并挂载
import {router,RouterMount} from './router/index';

// #ifdef H5
	RouterMount(app,router,'#app')
// #endif

// #ifndef H5
	app.$mount(); //为了兼容小程序及app端必须这样写才有效果
// #endif

标签:const,simple,app,js,meta,router,uni
From: https://www.cnblogs.com/rzl795/p/17040538.html

相关文章

  • AppCan VS PhoneGap - 对比两大移动开发平台
    ​   要说hybridapp框架的典范,Phonegap和AppCan无疑是最受大家关注的。先说明,本人是App的开发者,对手机上的webapp也研究一段时间。本文以技术角度去阐述一个事实:为......
  • Unity+Pico 手柄按键控制
    一、定义手柄按键API1、InputDevices.GetDeviceAtXRNode,通过XRNode获取对应的设备;2、XRNode是一个枚举类型,包含LeftEye、RightEye、CenterEye、Head、LeftHand、RightHa......
  • Unity+Pico 响应射线事件
    1、添加组件为了让场景内的物体能够响应射线的操作,需要在该物体上添加“XRSimpleInteractable”组件,并对射线的交互事件编写脚本看,最常用的是“Hover”和“Select”事件......
  • app直播源码,java自定义注解
    app直播源码,java自定义注解word注解代码@Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic@interface......
  • error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(...
    错误发生的场景#include<memory>#include<iostream>//用于测试错误的类classTestClass{public:intvalue_=0;};//用来测试传入unique_ptr的函数voidtes......
  • android 原生打包到混合开发框架uniapp 和cordova (2)解决Execution failed for task ‘
    android原生打包到混合开发框架uniapp和cordova(1) 在使用gradle自动打包的时候出现了Executionfailedfortask':app:lintVitalRelease'.>Lintfoundfatalerror......
  • 行车记录仪app开发需要有什么功能
    驾车出行非常重要的是安全,在自身保障安全驾驶的前提下,也需要预防他人的碰瓷行为。为此安装相应的行车记录仪是很有必要的,也是很关键的。但是传统行车记录仪会占用后视镜的......
  • 线上采购app开发有什么功能呢?
    工业用品并不像是生活用品,所以在日常生活中并不常见,对于工业用品的采购量也相对较少,而这也为什么采购业难以发展的根本原因。而开通线上渠道的主要目的就是为了帮助有需要......
  • 社区养老App开发及功能
    一、社区养老app可以带来什么帮助呢?1、更加方便的“监控”服务:作为子女对于父母的一举一动都是非常关心的,尤其是出门在外的子女更是如此。通过app能够更好的监控父母的......
  • 兴趣社交app开发及功能介绍
    随着兴趣社交app的出现,又成功了刮起了新的社交热潮,通过兴趣社交app能够更好的切入用户的社交市场,吸引广大用户的注意。一、兴趣社交app开发需要注意什么?1、挖掘用户需......