在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ nuxt.js是先加載asyncdata后切換頁面,有辦法優(yōu)化嗎?

nuxt.js是先加載asyncdata后切換頁面,有辦法優(yōu)化嗎?

使用nuxt.js開發(fā)項目,頁面切換的時候,前端渲染,會等待asyncdata執(zhí)行完了頁面才會加載
我希望可以先加載頁面,再渲染,不然會有明顯卡頓的感覺,不知道有沒有辦法優(yōu)化?

回答
編輯回答
晚風(fēng)眠

asyncData的文檔里提到:

asyncData is called every time before loading the component (only for page components). It can be called from the server-side or before navigating to the corresponding route.

asyncData會在組件加載前獲取,可以在服務(wù)端或者在路由跳轉(zhuǎn)時執(zhí)行。
所以頁面跳轉(zhuǎn)就會這樣... asyncData應(yīng)該是用于影響SEO的內(nèi)容,也就是需要讓爬蟲讀取的內(nèi)容,否則直接讓瀏覽器發(fā)ajax請求即可.
如果想要瀏覽器先顯示沒有數(shù)據(jù)的頁面在發(fā)請求,你可以讓SSR的時候請求asyncData,瀏覽器跳轉(zhuǎn)的時候發(fā)ajax請求。
具體做法是:

// 根據(jù)process.server判斷是否是SSR,如果是就asyncData獲取
 asyncData (context) {
    if(process.server){
    // 發(fā)請求,獲取{userInfo:{name:"fake",age:10"}
    }
  }

然后在mounted中根據(jù)有無獲取某個值來決定是否發(fā)起請求

mounted(){
if(!this.userInfo){
// data里沒有這個字段,那么就是路由跳轉(zhuǎn),手動發(fā)請求
}
}

這樣看起來比較累贅,不過我想不到別的辦法了。 個人理解,如果數(shù)據(jù)需要用于SEO,或者沒有某個數(shù)據(jù)影響渲染才使用asyncData,否則讓瀏覽器發(fā)ajax請求即可。 你感到卡頓說明這個請求可能需要一定時間,那么在服務(wù)端渲染時nodejs也需要等待那么久的時間,用戶也會覺得你的頁面加載的很慢。 所以盡量不使用asyncData..個人建議
官方的example是為了要獲取列表,如果不在asynData里獲取搜索引擎就看不到內(nèi)容...

2018年6月18日 23:40