该封装主要以分类形式,实现对路由的简易区分。便于项目管理。

创建好项目,勾选路由插件,会自动生成 router文件夹与index.ts 。

index.ts 初始内容

创建项目 自动生成的router --- index.ts

根据所需创建 分类路由

分别 创建移动端路由 与pc端路由 分类

pc端 路由

/*
* @description: pc端 路由
* @Author: Jay
* @Date: 2022-06-13 10:45:21
* @LastEditors: Jay
* @LastEditTime: 2022-06-13 11:54:00
*/
import { RouteRecordRaw } from 'vue-router'
export const pcRouter: Array<RouteRecordRaw> = [
{
path: '/p-Home',
name: 'pHome',
component: () => import("../views/pc/pc-home/pc-home.vue"),
meta: {
//路由为pc端
type: 'pc',
//页面标题
title: "pc首页"
}
},
{
path: '/p-Login',
name: 'pLogin',
component: () => import("../views/pc/pc-login/pc-login.vue"),
meta: {
type: 'pc',
title: "登录"
}
},
]

pc端 路由

移动端路由

/*
* @description: 移动端路由
* @Author: Jay
* @Date: 2022-06-13 10:45:38
* @LastEditors: Jay
* @LastEditTime: 2022-06-13 14:18:20
*/
import { RouteRecordRaw } from 'vue-router' export const mobileRouter: Array<RouteRecordRaw> = [
{
path: '/m-Home',
name: 'mHome',
component: () => import('../views/moblie/m-home/m-home.vue'),
meta: {
//路由为移动端
type: 'mobile',
//页面标题
title: "移动端首页"
}
},
{
path: '/m-login',
name: 'mLogin',
component: () => import('../views/moblie/m-login/m-login.vue'),
meta: {
type: 'mobile',
title: "登录"
}
}
]

移动端路由

修改index.ts

/*
* @description: 路由
* @Author: Jay
* @Date: 2022-06-13 10:27:19
* @LastEditors: Jay
* @LastEditTime: 2022-06-13 13:49:48
*/
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router' // 导入 移动 pc 路由
import { mobileRouter } from "./mobile-index";
import { pcRouter } from "./pc-index"; //判断设备
const Device = /phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone/i;
const redirectPath: string = Device.test(navigator.userAgent) ? "/m-home" : "/p-home"; const routes: Array<RouteRecordRaw> = [
// 跟目录
{
path: "/",
redirect: redirectPath,
}
] const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
//整合路由
routes: [...routes, ...mobileRouter, ...pcRouter],
}) /*
前置 路由守卫
*/
router.beforeEach((to, from, next) => {
// 当移动端试图访问pc端界面时
if (Device.test(navigator.userAgent) && to.meta.type !== "mobile") {
const routers = router.options.routes.filter((v) => v.name?.toString().startsWith("m"));
const path = routers?.filter((v) =>
v.name?.toString().split("-")[1] === to.name?.toString().split("-")[1]
)[0];
if (path) {
next(path.path);
} else {
next("/");
}
} // 当pc端页面试图访问移动端页面时
if (!Device.test(navigator.userAgent) && to.meta.type !== "pc") {
const routers = router.options.routes;
const path = routers.filter((v) =>
v.name?.toString().split("-")[1] === to.name?.toString().split("-")[1]
)[0].path;
if (path) {
next(path);
} else {
next("/");
}
} next();
}) /*
后置 路由守卫
*/
router.afterEach((to: any, from) => {
//更改每个页面的标题
document.title = to.meta.title;
}) export default router

index.ts

pc 移动端 双端切换-路由判断的更多相关文章

  1. 在thinkPHP3.2.3框架下实现手机和PC端浏览器的切换

    查看thinkphp版本号方法 打开文件“根目录\ThinkPHP\ThinkPHP.php”下的文件ThinkPHP.php,在22--23行可以看到版本信息THINK_VERSION,如下图: 说 ...

  2. 在PC上测试移动端网站和模拟手机浏览器的5大方法

    在PC上测试移动端网站和模拟手机浏览器的5大方法 来源:互联网 作者:佚名 时间:03-19 10:14:54 [大 中 小]                最近公司要开发网站的移动版,让我准备准备知 ...

  3. 10天学会phpWeChat——第七天:创建一个自适应PC网站+H5移动端的模块

    本教程基于phpWeChat核心框架1.1.0+版本.下载地址:http://s.phpwechat.com/app_38026ed22fc1a91d92b5d2ef93540f20 通过前面六讲的系 ...

  4. STL---deque(双端队列)

    Deque是一种优化了的.对序列两端元素进行添加和删除操作的基本序列容器.它允许较为快速地随机访问,但它不像vector 把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结 ...

  5. 双端队列(单调队列)poj2823 区间最小值(RMQ也可以)

    Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 41844   Accepted: 12384 ...

  6. c++ deque 双端队列

    双端队列: 函数 描述 c.assign(beg,end)c.assign(n,elem)  将[beg; end)区间中的数据赋值给c.将n个elem的拷贝赋值给c. c.at(idx)  传回索引 ...

  7. 《算法实战策略》-chaper19-队列、栈和双端队列

    对于计算机专业的学生来说,他们一定会很熟悉一句话:程序设计 = 算法 + 数据结构.而根据笔者的理解,所谓程序设计其实就是为了编程解决实际问题,所谓算法是一种解决问题某种思维的方法,但是思维需要得到编 ...

  8. C++ STL 双端队列deque详解

    一.解释 Deque(双端队列)是一种具有队列和栈的性质的数据结构.双端队列的元素可以从两端弹出,其限定插入和删除操作在表的两端进行. 二.常用操作: 1.头文件 #include <deque ...

  9. Python 实现双端队列 Deque

    操作 Deque() 创建一个空的双端队列 add_front(item) 从队头加入一个item元素 add_rear(item) 从队尾加入一个item元素 remove_front() 从队头删 ...

  10. 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 二九║ Nuxt实战:异步实现数据双端渲染

    回顾 哈喽大家好!又是元气满满的周~~~二哈哈,不知道大家中秋节过的如何,马上又是国庆节了,博主我将通过三天的时间,给大家把项目二的数据添上(这里强调下,填充数据不是最重要的,最重要的是要配合着让大家 ...

随机推荐

  1. 基于Bootstrap Blazor开源的.NET通用后台权限管理系统

    前言 今天大姚给大家分享一个基于Bootstrap Blazor开源的.NET通用后台权限管理系统,后台管理页面兼容所有主流浏览器,完全响应式布局(支持电脑.平板.手机等所有主流设备),可切换至 Bl ...

  2. C# NPOI 读取Excel数据,附案例源码

    项目结构 注意:需要引入NPOI类库 C#代码 Form1.cs using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System; u ...

  3. 基于Redis在定时任务里判断其他定时任务是否已经正常执行完的方案

    执行的定时任务是基于其他定时任务计算得到的结果基础上做操作的,那么如何来确定其他存在数据依赖的定时任务已经执行完成呢? 在分布式环境里,可通过集群的redis来解决这个问题: 即,在跑批任务开始时,将 ...

  4. 【算法】用c#实现自定义字符串编码及围栏解码方法

    编写一个函数/方法,它接受2个参数.一个字符串和轨道数,并返回ENCODED字符串. 编写第二个函数/方法,它接受2个参数.一个编码字符串和轨道数,并返回DECODED字符串. 然后使用围栏密码对其进 ...

  5. oeasy教您玩转vim - 3 - # 打开文件

    打开文件 回忆上节课内容 什么不会,就 :help 什么 命令有完整和简写两种模式 :help 和 :h :quit 和 :q 注意:是左右手小拇指配合输入的 vim 有 6 种基本模式 但是我们还没 ...

  6. CF1934B Yet Another Coin Problem 题解

    CF1934B Yet Another Coin Problem 题解 题意 目前有 \(5\) 种硬币,面值分别为 \(1,3,6,10,15\).给你一个数字 \(n\),求出可以凑出 \(n\) ...

  7. centos7 扩展硬盘

    新增硬盘后 fdisk -l fdisk /dev/sdb (以后再加改成c) 阿里云叫vdb fdisk -l 注意,最好跟第一块硬盘一样! df -T 查看硬盘分区格式 注意,文件夹不能已存在的! ...

  8. holiday week3

    本周开始进行小学期实验报告B 上周LOL打的rank分又掉了回去 星际争霸打到了铂金段位 JAVA预备在小学期完成之后开始正式学习 现已了解雏形 本周发布了一个视频https://www.bilibi ...

  9. 释放资源的方式try-with-resources

    1.try-catch-finally 2.try-with-resources 使用方法 try(//这里定义你要使用的资源){} catch(){} 注意:try()里只能存放流对象(资源对象), ...

  10. 【Hibernate】01 概述

    什么是Hibernate? - Hibernate是我们JavaEE开发中的DAO层框架 - DAO[Data Access Object] 数据访问对象层 - 在DAO层,访问数据库,进行CRUD操 ...