Nuxt.js中PC与移动端间自动识别跳转
目录
- 了解
- 问题
- 解决
了解
官网类网站,需要考虑seo,使用了nuxt.js
的ssr
开发。pc端和移动端分离了,相当于两个独立的项目,部署在同一个服务器上,绑定不同域名。
问题
需要判断当前设备,在两个端之前相互跳转。
解决 根据浏览器ua判断当前是否为移动设备:
let isMobile = (ua) => {return !!ua.match(/AppleWebKit.*Mobile.*/)}
因为接触Nuxt.js时间不长,也算不上深入。按直觉来吧:
第一版:在default.vue
里面mounted
里面直接操作。
mounted(){if(process.browser){let ua = navigator.userAgentlet isMobile = isMobile(ua)...window.location.href = https://www.it610.com/article/...}}
当然,这样跳转是可以了,但是问题也是一堆堆:
- 跳转时间比较长(在
mounted
前数据已经请求了,页面也渲染了,所以时间比较长) - 有时会没作用(不了解什么原因)
第二版:把这个操作移到default.vue
的updated
里面操作,但貌似没什么作用。
第三版:使用对于middleware,官网的简介:middleware
中间件允许您定义一个自定义函数运行在一个页面或一组页面渲染之前。中间件执行流程顺序:
- nuxt.config.js
- 匹配布局
- 匹配页面
middleware
下新建 midd.js
:export default function ({ isServer, req, redirect, route }) {let pcOrigin = 'http://localhost:3003'let mobileOrigin = 'http://localhost:3004'let isMobile = (ua) => {return !!ua.match(/AppleWebKit.*Mobile.*/)}let userAgent = req ? req.headers['user-agent'] : navigator.userAgent || ''return isMobile(userAgent) ? '' : redirect(pcOrigin + route.fullPath)// 使用redirect 重定向到外链需要加上前缀:http / https}
然后在
nuxt.config.js
加上对应配置:router: {middleware: 'midd'},
这样的话在每个页面渲染前都会调用
midd.js
,如果不需要每个页面都判断的话可以在需要判断跳转的页面里面写,然后把nuxt.config.js
里面的去掉。测试了一下,效果还不错。响应速度很快。
还有一种想法没有尝试:把这个判断、跳转写成
plugin
,在 nuxt.config.js
里面挂载。( ps:写的过程中想到的)【Nuxt.js中PC与移动端间自动识别跳转】到此这篇关于Nuxt.js中PC与移动端间自动识别跳转的文章就介绍到这了,更多相关Nuxt.js PC与移动端自动跳转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- React|React 组件中的state和setState()你知道多少
- ASP.NET|ASP.NET MVC中两个配置文件的作用详解
- ASP.NET|ASP.NET MVC中Controller控制器向View视图传值的几种方式
- 网络安全|【Kali】中密码暴力破解工具hydra的使用
- spring|springboot文件上传与下载
- SSH|909422229_SSH暴力破解与防御
- BurpSuite暴力破解与防御实战
- Python内置数据类型中的集合详解
- 好评不断的文化纪录片《中国》,背后的“剪刀手”竟是它()
- vue|vue5 if与show