vue识别设备类型并跳转路由

如果你的网站不是响应式布局(即根据窗口大小调整布局),或者你的网站针对PC端和手机、平板端有不同的网站。这时候就要增加一个判断,根据设备类型来分发路由。

首先你需要一个函数,用来从 UserAgent 里读取设备类型并判断

async function getTerminalType(){
    if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
        return  'mobile';
    } else if (/(Android)/i.test(navigator.userAgent)) {
        return  'mobile';
    } else {
        return 'pc';
    }
}

这里,我把苹果系的设备标记为 mobile,安卓系的也标记为 mobile,其余的设备标记为pc,如有特定需求,再区分苹果和安卓。

那么相应的,你会根据这两类设备配置两个不同的路由。

const routes = [
    {
        path: '/',
        name: 'root',
        redirect: '/pc/'  // 默认是pc端
    },
    {
        path: '/pc',
        name: 'pc',
        component: () => import('../views/pc/index'),
        children: [
        	...
        ],
    },
    {
        path: '/mobile',
        name: 'mobile',
        component: () => import('../views/mobile/index'),
        children: [
        	...
        ],
    }
]

如何在每次路由跳转时都进行判断?我们可以使用路由守卫实现

const router = createRouter({
    history: createWebHashHistory(),
    routes // 上个代码框里写了
})

router.beforeEach(async (to, from, next)=>{
    let terminalType = await getTerminalType();
    if (terminalType === 'mobile' && to.fullPath.indexOf('/pc')!==-1) {
        await next({path: '/mobile'})
    } else if (terminalType === 'pc' && to.fullPath.indexOf('/mobile')!==-1) {
        await next({path: '/pc'})
    } else {
        await next()
    }
});

这样就大功告成了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue中,可以通过Vue Router来实现页面之间的跳转路由。下面是一个简单的示例: 首先,确保你已经安装了Vue Router。如果还没有安装,可以通过以下命令进行安装: ``` npm install vue-router ``` 接下来,在你的Vue项目中创建一个新的router文件,例如`router.js`,然后在这个文件中定义路由: ```javascript import Vue from 'vue' import VueRouter from 'vue-router' // 导入需要跳转的页面组件 import Page1 from './components/Page1.vue' import Page2 from './components/Page2.vue' Vue.use(VueRouter) const routes = [ { path: '/page1', component: Page1 }, { path: '/page2', component: Page2 } ] const router = new VueRouter({ routes }) export default router ``` 在上面的代码中,我们导入了需要跳转的页面组件,并将其与对应的路由路径进行关联。 接下来,在你的Vue实例中使用路由: ```javascript import Vue from 'vue' import App from './App.vue' import router from './router' new Vue({ router, render: h => h(App) }).$mount('#app') ``` 在上面的代码中,我们将之前定义的路由对象注册到Vue实例中。 然后,在你的组件中使用`<router-link>`和`<router-view>`来进行页面跳转和显示: ```html <template> <div> <router-link to="/page1">跳转到Page1</router-link> <router-link to="/page2">跳转到Page2</router-link> <router-view></router-view> </div> </template> ``` 上面的代码中,`<router-link>`用于生成页面跳转的链接,`<router-view>`用于显示对应的组件。 这样,你就可以通过点击链接来在页面之间进行来回跳转了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

okfang616

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值