同一个项目,有pc和h5两端。
需求: 用pc打开h5端的页面,需要跳转到对应的pc页面。
同样,用h5打开pc端页面,需要跳转到对应的h5页面。
nuxt利用路由导航守卫,实现pc和h5端网页相互跳转
下面为实现方案:
方式一:插件方式
- 在
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()
})
}
- 在
nuxt.config.js
文件中配置,新增一项。
plugins:
[
{src: '~/plugins/route.js', ssr: false}
],
因为navigator.userAgent
是运行在浏览器端的,所以上面的ssr:false
.