nuxt实现pc和h5端网页相互跳转

693 阅读1分钟

同一个项目,有pc和h5两端。

需求: 用pc打开h5端的页面,需要跳转到对应的pc页面。

同样,用h5打开pc端页面,需要跳转到对应的h5页面。

nuxt利用路由导航守卫,实现pc和h5端网页相互跳转

下面为实现方案:

方式一:插件方式

  1. plugins目录下增加route.js文件,利用路由导航守卫 router.beforeEach,在路由跳转前判断设备,做拦截处理 ,文件内的代码如下:
// pc 打开 h5
export default function ({ app }) {
  // console.log('env',process.env.NODE_ENV)
  let ua = navigator.userAgent;
  let isMobile = /iphone|Android|Mobile|ipad/i.test(ua);
  app.router.beforeEach((to, from, next) => {
    if (!isMobile) {
      // pc 打开 h5 的 ‘/’和'/article'和‘about’这几个路由的时候,则跳转到h5对应的pc端的路由
      if (to.fullPath === '/' || to.fullPath.search(/\/article|\/about/i) > -1) {
        // 可优化:localhost:3000 可用环境变量替换。
        location.href = 'http://localhost:3000'+to.fullPath;
      }
    }
    next()
  })
}
  1. nuxt.config.js文件中配置,新增一项。
plugins: 
[
  {src: '~/plugins/route.js', ssr: false}
],

因为navigator.userAgent是运行在浏览器端的,所以上面的ssr:false.