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

创建好项目,勾选路由插件,会自动生成 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. SpringBoot+mail 轻松实现各类邮件自动推送

    一.简介 在实际的项目开发过程中,经常需要用到邮件通知功能.例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多. 早期的时候,为了能实现邮件的自动发送功能,通常会使用 Java ...

  2. 树莓派安装OpenCv

    树莓派安装OpenCv 更换树莓派软件源 我们选择将树莓派的软件源切换到清华大学镜像站,据笔者亲测,通过此站可以顺利安装openCV. 切换软件源需要修改两个软件源配置文件的内容. 第一个需要修改是「 ...

  3. 基于Java“镜头人生”约拍网站系统设计实现(源码+lw+部署文档+讲解等)

    \n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件 ...

  4. 寒假训练——vj题解

    B - B M 算日期 M 是一位数学高手,今天他迎来了 Kita 的挑战.Kita 想让 BM 算出这几年内有多少个闰年. BM 觉得这问题实在太简单了,于是 Kita 加大了难度. 他先给出第一个 ...

  5. Pandas库学习笔记(1)

    参考:菜鸟教程 pandas库使用了NumPy的大多数功能.建议您先阅读有关NumPy的教程,然后再继续本教程. Pandas 适用于处理以下类型的数据: 与 SQL 或 Excel 表类似的,含异构 ...

  6. 硬件开发笔记(二十八):TPS54331电源设计(一):5V电源供电原理图设计

    前言   电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来.  本篇描述设计常用的12V转5V电路3A.   TPS54331(DC-DC稳压器) 概述    ...

  7. ssh 转发 和 切换图形化

    适用环境 宿主机连接到一台服务器是,服务器系统里面的浏览器点击http网页卡顿,那么这时可以通过ssh将端口转发到宿主机 使用宿主机的浏览器点击,则不会很卡顿. [root@foundation1 ~ ...

  8. Jmeter函数助手4-RandomDate

    RandomDate函数用于生成一段时间范围内的随机日期(年月日). Format string for DateTimeFormatter (optional) (default yyyy-MM-d ...

  9. 用了组合式 (Composition) API 后代码变得更乱了,怎么办?

    前言 组合式 (Composition) API 的一大特点是"非常灵活",但也因为非常灵活,每个开发都有自己的想法.加上项目的持续迭代导致我们的代码变得愈发混乱,最终到达无法维护 ...

  10. 【Java】Generic 泛型

    Generic 泛型 为什么需要泛型? 集合容器再设计阶段/声明阶段不能确定这个容器实际存储的是什么类型的对象 JDK5 以前只能把元素设计为Object基类 在JDK5之后用泛型来约束对象类型 除了 ...