Nuxt.js中PC與移動端間自動識別跳轉(zhuǎn)
了解
官網(wǎng)類網(wǎng)站,需要考慮seo,使用了
nuxt.js
的ssr
開發(fā)。pc端和移動端分離了,相當(dāng)于兩個獨立的項目,部署在同一個服務(wù)器上,綁定不同域名。
問題
需要判斷當(dāng)前設(shè)備,在兩個端之前相互跳轉(zhuǎn)。
解決
根據(jù)瀏覽器ua判斷當(dāng)前是否為移動設(shè)備:
let isMobile = (ua) => { return !!ua.match(/AppleWebKit.*Mobile.*/) }
因為接觸Nuxt.js時間不長,也算不上深入。按直覺來吧:
第一版:在
default.vue
里面mounted
里面直接操作。
mounted(){ if(process.browser){ let ua = navigator.userAgent let isMobile = isMobile(ua) ... window.location.href = ... } }
當(dāng)然,這樣跳轉(zhuǎn)是可以了,但是問題也是一堆堆:
- 跳轉(zhuǎn)時間比較長(在
mounted
前數(shù)據(jù)已經(jīng)請求了,頁面也渲染了,所以時間比較長) - 有時會沒作用(不了解什么原因)
第二版:把這個操作移到
default.vue
的updated
里面操作,但貌似沒什么作用。
第三版:使用
middleware
對于middleware,官網(wǎng)的簡介:
中間件允許您定義一個自定義函數(shù)運行在一個頁面或一組頁面渲染之前。
中間件執(zhí)行流程順序:
- 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
加上對應(yīng)配置:
router: { middleware: 'midd' },
這樣的話在每個頁面渲染前都會調(diào)用midd.js
,如果不需要每個頁面都判斷的話可以在需要判斷跳轉(zhuǎn)的頁面里面寫,然后把nuxt.config.js
里面的去掉。
測試了一下,效果還不錯。響應(yīng)速度很快。
還有一種想法沒有嘗試:把這個判斷、跳轉(zhuǎn)寫成plugin
,在 nuxt.config.js
里面掛載。( ps:寫的過程中想到的)
到此這篇關(guān)于Nuxt.js中PC與移動端間自動識別跳轉(zhuǎn)的文章就介紹到這了,更多相關(guān)Nuxt.js PC與移動端自動跳轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于HTML5上使用iScroll實現(xiàn)下拉刷新,上拉加載更多
本文主要介紹在HTML5中使用iScroll實現(xiàn)下拉刷新,上拉加載更多數(shù)據(jù)的方法,主要就是寫了兩個自定義函數(shù)pullDownAction和pullUpAction,分別在下拉和上拉的事件中調(diào)用他們。2016-05-05JS高級拖動技術(shù) setCapture,releaseCapture
setCapture 的意思就是設(shè)置一個對象的方法被觸發(fā)的范圍,或者作用域。2011-07-07使用JavaScript實現(xiàn)頁面局部更新的方法總結(jié)
在JavaScript中,Ajax(Asynchronous JavaScript and XML)是一種用于在后臺與服務(wù)器進行異步通信的技術(shù),本文給大家介紹了使用JavaScript實現(xiàn)頁面局部更新的三種方法,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12JavaScript原型繼承_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JavaScript原型繼承的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06