Nuxt.js中PC與移動(dòng)端間自動(dòng)識(shí)別跳轉(zhuǎn)
了解
官網(wǎng)類網(wǎng)站,需要考慮seo,使用了
nuxt.js的ssr開(kāi)發(fā)。pc端和移動(dòng)端分離了,相當(dāng)于兩個(gè)獨(dú)立的項(xiàng)目,部署在同一個(gè)服務(wù)器上,綁定不同域名。
問(wèn)題
需要判斷當(dāng)前設(shè)備,在兩個(gè)端之前相互跳轉(zhuǎn)。
解決
根據(jù)瀏覽器ua判斷當(dāng)前是否為移動(dòng)設(shè)備:
let isMobile = (ua) => {
return !!ua.match(/AppleWebKit.*Mobile.*/)
}因?yàn)榻佑|Nuxt.js時(shí)間不長(zhǎng),也算不上深入。按直覺(jué)來(lái)吧:
第一版:在
default.vue里面mounted里面直接操作。
mounted(){
if(process.browser){
let ua = navigator.userAgent
let isMobile = isMobile(ua)
...
window.location.href = ...
}
}當(dāng)然,這樣跳轉(zhuǎn)是可以了,但是問(wèn)題也是一堆堆:
- 跳轉(zhuǎn)時(shí)間比較長(zhǎng)(在
mounted前數(shù)據(jù)已經(jīng)請(qǐng)求了,頁(yè)面也渲染了,所以時(shí)間比較長(zhǎng)) - 有時(shí)會(huì)沒(méi)作用(不了解什么原因)
第二版:把這個(gè)操作移到
default.vue的updated里面操作,但貌似沒(méi)什么作用。
第三版:使用
middleware
對(duì)于middleware,官網(wǎng)的簡(jiǎn)介:
中間件允許您定義一個(gè)自定義函數(shù)運(yùn)行在一個(gè)頁(yè)面或一組頁(yè)面渲染之前。
中間件執(zhí)行流程順序:
- nuxt.config.js
- 匹配布局
- 匹配頁(yè)面
很好,在 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加上對(duì)應(yīng)配置:
router: {
middleware: 'midd'
},這樣的話在每個(gè)頁(yè)面渲染前都會(huì)調(diào)用midd.js,如果不需要每個(gè)頁(yè)面都判斷的話可以在需要判斷跳轉(zhuǎn)的頁(yè)面里面寫(xiě),然后把nuxt.config.js里面的去掉。
測(cè)試了一下,效果還不錯(cuò)。響應(yīng)速度很快。
還有一種想法沒(méi)有嘗試:把這個(gè)判斷、跳轉(zhuǎn)寫(xiě)成plugin,在 nuxt.config.js里面掛載。( ps:寫(xiě)的過(guò)程中想到的)
到此這篇關(guān)于Nuxt.js中PC與移動(dòng)端間自動(dòng)識(shí)別跳轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Nuxt.js PC與移動(dòng)端自動(dòng)跳轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Nuxt.js踩坑總結(jié)分享
- Vue在 Nuxt.js 中重定向 404 頁(yè)面的方法
- Nuxt.js的路由跳轉(zhuǎn)操作(頁(yè)面跳轉(zhuǎn)nuxt-link)
- nuxt.js 在middleware(中間件)中實(shí)現(xiàn)路由鑒權(quán)操作
- Nuxt.js之自動(dòng)路由原理的實(shí)現(xiàn)方法
- Nuxt.js開(kāi)啟SSR渲染的教程詳解
- nuxt.js中間件實(shí)現(xiàn)攔截權(quán)限判斷的方法
- 詳解Nuxt.js中使用Element-UI填坑
- Nuxt.js實(shí)現(xiàn)校驗(yàn)訪問(wèn)瀏覽器類型的中間件
相關(guān)文章
JavaScript實(shí)現(xiàn)SHA-1加密算法的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)SHA-1加密算法的方法,實(shí)例分析了使用javascript實(shí)現(xiàn)SHA-1加密算法的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
原型方法的不同寫(xiě)法居然會(huì)影響調(diào)試的解決方法
原型方法的不同寫(xiě)法居然會(huì)影響調(diào)試的解決方法...2007-03-03
javascript模擬鼠標(biāo)點(diǎn)擊事件原理和實(shí)現(xiàn)方法
本文詳細(xì)介紹了JS模擬鼠標(biāo)點(diǎn)擊事件的原理以及應(yīng)用場(chǎng)景,并提供了模擬鼠標(biāo)左鍵點(diǎn)擊事件、右鍵點(diǎn)擊事件、滾輪事件和移動(dòng)事件的代碼實(shí)現(xiàn),了解JS模擬鼠標(biāo)點(diǎn)擊事件的原理和實(shí)現(xiàn)方法對(duì)于開(kāi)發(fā)人員非常重要,這對(duì)于許多面向用戶的web應(yīng)用程序的開(kāi)發(fā)和測(cè)試都具有很重要的意義2023-09-09
JavaScript 用cloneNode方法克隆節(jié)點(diǎn)的代碼
很多時(shí)候我們需要通過(guò)HTML DOM 的方式,用JavaScript 動(dòng)態(tài)生成很多相同的節(jié)點(diǎn),包括其子節(jié)點(diǎn)2012-10-10
利用原生JS實(shí)現(xiàn)歡樂(lè)水果機(jī)小游戲
這篇文章主要介紹了利用原生JS實(shí)現(xiàn)歡樂(lè)水果機(jī)小游戲,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04

