亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

nuxt.js寫項(xiàng)目時(shí)增加錯(cuò)誤提示頁面操作

 更新時(shí)間:2020年11月05日 11:14:26   作者:sunny327  
這篇文章主要介紹了nuxt.js寫項(xiàng)目時(shí)增加錯(cuò)誤提示頁面操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

為項(xiàng)目增加錯(cuò)誤提示頁面,比如后端接口沒有數(shù)據(jù)或接口報(bào)錯(cuò)的時(shí)候,如果不增加錯(cuò)誤提示頁面的話,那接口報(bào)錯(cuò)的信息就會(huì)在頁面中顯示,這顯然不利于用戶體驗(yàn)。

實(shí)際操作過程中,可能因?yàn)楦鞣N原因無法顯示正確的返回頁面,比如本身這篇文章的id不存在,或者網(wǎng)絡(luò)請(qǐng)求問題,這時(shí)候就需要一個(gè)錯(cuò)誤展示頁用來提示用戶;

nuxt.js官方也有錯(cuò)誤提示頁面的寫法:傳送門-> 官方錯(cuò)誤提示頁面的寫法

此項(xiàng)目中的錯(cuò)誤提示頁面是放在layouts目錄中:

layouts中的error.vue頁面內(nèi)容為:

<template>
<div class="err_wrap">
<h1 class="error" v-if="error.statusCode === 404">頁面不存在或沒有數(shù)據(jù)</h1>
<h1 class="error" v-else>應(yīng)用發(fā)生錯(cuò)誤異常</h1>
<nuxt-link class="to_home" to="/">返回首頁</nuxt-link>
</div>
</template>
<script>
export default {
props: ['error'],
layout: 'detail',
data() {
return {
msg: '未找到相應(yīng)頁面或沒有數(shù)據(jù)'
}
}
}
</script>
<style scoped>
.err_wrap {
padding: 0.2rem 0.4rem;
text-align: center;
}
.error {
font-size: 0.32rem;
text-align: center;
padding-top: 55%;
color: #582c1a;
padding-bottom: 0.4rem;
}
.to_home {
font-size: 0.3rem;
color: #582c1a;
display: inline-block;
padding-bottom: 3.9rem;
}
</style>

在頁面組件中是在asyncData的catch中寫的,當(dāng)接口調(diào)用出錯(cuò)或無數(shù)據(jù)時(shí)就會(huì)跳轉(zhuǎn)到錯(cuò)誤提示頁面:

async asyncData(context, callback) {
 try {
  // console.log("_id的id:====", context.params.id)
 
  let paramsWorksList = {
  id: context.params.id
  }
  let WorksDetail = await context.$axios.post(`/anchor/worksList`, paramsWorksList)
  // console.log("WorksDetail:=====", WorksDetail.data.data[0])
 
  return {
  WorksDetail: WorksDetail.data.data[0]
  }
 } catch (err) {
  console.log("errConsole========:", err)
  callback({ statusCode: 404, message: '頁面未找到或沒有數(shù)據(jù)!' }) //當(dāng)接口無數(shù)據(jù)或接口出錯(cuò)時(shí)會(huì)執(zhí)行這句代碼跳轉(zhuǎn)到錯(cuò)誤提示頁面
 }
 },

這里有一個(gè)坑,asyncData的callback在nuxt.js的2.3.X版本給廢棄了,運(yùn)行項(xiàng)目總是提示:

Callback-based asyncData, fetch or middleware calls are deprecated. Please switch to promises or async/await syntax

經(jīng)過google發(fā)現(xiàn)的,nuxt.js的作者覺得callback沒什么用,給去掉了。

github issue鏈接:https://github.com/nuxt/nuxt.js/issues/4158

所以經(jīng)過查看文檔,error的屬性在context這個(gè)參數(shù)中,頁面組件中的代碼如下:

async asyncData(context) {
 try {
  // console.log("_id的id:====", context.params.id)
 
  let paramsWorksList = {
  id: context.params.id
  }
  let WorksDetail = await context.$axios.post(`/anchor/worksList`, paramsWorksList)
  // console.log("WorksDetail:=====", WorksDetail.data.data[0])
 
  return {
  WorksDetail: WorksDetail.data.data[0]
  }
 } catch (error) {
  console.log("errConsole========:", context.error({ statusCode: 404, message: '頁面未找到或無數(shù)據(jù)' }))
  context.error({ statusCode: 404, message: '頁面未找到或無數(shù)據(jù)' }) //修改成這樣就可以跳到錯(cuò)誤提示頁面
 }
 },

在 asyncData 請(qǐng)求時(shí)添加參數(shù) callback,如果請(qǐng)求正確,則 callback 的第一個(gè)參數(shù)為 null,第二個(gè)參數(shù)為賦值對(duì)象;

如果請(qǐng)求錯(cuò)誤,則直接將對(duì)象為參數(shù),包括 statusCode 錯(cuò)誤代碼以及 message 錯(cuò)誤信息,以便處理不同的錯(cuò)誤信息展示;

最終效果如下:

補(bǔ)充知識(shí):Nuxt的錯(cuò)誤頁面和個(gè)性meta設(shè)置

當(dāng)用戶輸入路由錯(cuò)誤的時(shí)候,我們需要給他一個(gè)明確的指引,所以說在 應(yīng)用程序開發(fā)中404頁面時(shí)必不可少的。Nuxt.js支持直接再默認(rèn)布局文件夾里建立錯(cuò)誤頁面。

建立錯(cuò)誤頁面

在根目錄下的layouts文件夾下建立一個(gè)error.vue文件,它相當(dāng)于一個(gè)顯示應(yīng)用錯(cuò)誤的組件。

<template>
 <div class="error">
  <h2 v-if="error.statusCode == 404">404 - 頁面不存在</h2>
  <h2 v-else>500 - 服務(wù)器錯(cuò)誤</h2> 
  <ul> 
   <!-- 這里用來提示返回到主頁 -->
   <li><nuxt-link to="/">HOME</nuxt-link></li> 
  </ul>
 </div>
</template>
<script>
export default {
 props: ['error']
}
</script>

代碼用v-if進(jìn)行判斷錯(cuò)誤類型,需要注意的是這個(gè)錯(cuò)誤時(shí)你需要在<script>里進(jìn)行聲明的。

個(gè)性meta設(shè)置

頁面的Meta對(duì)于SEO的設(shè)置非常重要,比如你現(xiàn)在要做個(gè)新聞頁面,那為了搜索搜索引擎對(duì)新聞的收錄,需要每個(gè)頁面對(duì)新聞都有不同的title和meta設(shè)置。直接使用head方法來設(shè)置當(dāng)前頁面的頭部信息就可以了。

我們現(xiàn)在要把New-1這個(gè)頁面設(shè)置成個(gè)性的meta和title。

1.我們先把pages/news/index.vue頁面的鏈接進(jìn)行修改一下,傳入一個(gè)title,目的是為了在新聞具體頁面進(jìn)行接收title,形成文章的標(biāo)題。

/pages/news/index.vue

<template>
 <div>
  <h2>News Index page</h2>
  <p>NewID:{{$route.params.newsId}}</p>
  <ul>
   <li><nuxt-link :to="{name:'index'}">Home</nuxt-link></li>
   <li><nuxt-link :to="{name:'news-id',params:{id:123,title:'我是新聞標(biāo)題'}}">News-1</nuxt-link></li>
  </ul>
 </div>
</template>
 
<script>
export default {
 
}
</script>

第一步完成后,我們修改/pages/news/_id.vue,讓它根據(jù)傳遞值變成獨(dú)特的meta和title標(biāo)簽。

<template>
 <div>
  <h2>News-Content [{{$route.params.id}}]</h2>
  <ul>
  <li><a href="/" rel="external nofollow" >Home</a></li>
  </ul>
 </div>
</template>
<script>
export default {
 validate ({ params }) {
 // Must be a number
 return /^\d+$/.test(params.id)
 },
 data(){
 return{
  title:this.$route.params.title,
 }
 },
//獨(dú)立設(shè)置head信息
 head(){
  return{
  title:this.title,
  meta:[
   {hid:'description',name:'news',content:'This is news page'}
  ]
  }
 }
}
</script>

注意:為了避免組件中的meta標(biāo)簽不能正確覆蓋父組件中相同的標(biāo)簽而產(chǎn)生重復(fù)的現(xiàn)象,建議利用hid鍵為meta標(biāo)簽配一個(gè)唯一的標(biāo)識(shí)編號(hào)。

以上這篇nuxt.js寫項(xiàng)目時(shí)增加錯(cuò)誤提示頁面操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue CLI3.0中使用jQuery和Bootstrap的方法

    Vue CLI3.0中使用jQuery和Bootstrap的方法

    這篇文章主要介紹了Vue CLI3.0中使用jQuery和Bootstrap的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 關(guān)于vue-property-decorator的基礎(chǔ)使用實(shí)踐

    關(guān)于vue-property-decorator的基礎(chǔ)使用實(shí)踐

    這篇文章主要介紹了關(guān)于vue-property-decorator的基礎(chǔ)使用實(shí)踐,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解Vue自定義指令如何實(shí)現(xiàn)處理圖片加載失敗的碎圖

    詳解Vue自定義指令如何實(shí)現(xiàn)處理圖片加載失敗的碎圖

    這篇文章主要介紹了詳解Vue自定義指令如何實(shí)現(xiàn)處理圖片加載失敗的碎圖,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • vue實(shí)現(xiàn)購物車的小練習(xí)

    vue實(shí)現(xiàn)購物車的小練習(xí)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)購物車的小練習(xí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Vue如何實(shí)現(xiàn)pptx在線預(yù)覽

    Vue如何實(shí)現(xiàn)pptx在線預(yù)覽

    通過PPTXjs插件,實(shí)現(xiàn)PPTX文件在線預(yù)覽,需下載PPTXjs,將其引入HTML頁面,并編寫相應(yīng)的HTML和JS代碼,如果是移動(dòng)端還需調(diào)整div大小,這是一種便捷的前端PPTX轉(zhuǎn)HTML技術(shù),適合網(wǎng)頁展示使用
    2024-09-09
  • 實(shí)例詳解vue中的$root和$parent

    實(shí)例詳解vue中的$root和$parent

    這篇文章主要介紹了vue中的$root和$parent ,本文通過文字實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • VUE前端導(dǎo)出文件之file-saver插件安裝使用教程

    VUE前端導(dǎo)出文件之file-saver插件安裝使用教程

    這篇文章主要給大家介紹了關(guān)于VUE前端導(dǎo)出文件之file-saver插件安裝使用的相關(guān)資料,file-saver是一個(gè)用于保存文件的JavaScript庫,它提供了一種簡單的方式來生成和保存文件,支持各種文件類型,例如文本文件、圖片、PDF等,需要的朋友可以參考下
    2024-05-05
  • vue.js el-tooltip根據(jù)文字長度控制是否提示toolTip問題

    vue.js el-tooltip根據(jù)文字長度控制是否提示toolTip問題

    這篇文章主要介紹了vue.js el-tooltip根據(jù)文字長度控制是否提示toolTip問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • vue中使用帶隱藏文本信息的圖片、圖片水印的方法

    vue中使用帶隱藏文本信息的圖片、圖片水印的方法

    這篇文章主要介紹了vue中使用帶隱藏文本信息的圖片、圖片水印的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 在vue項(xiàng)目中使用Jquery-contextmenu插件的步驟講解

    在vue項(xiàng)目中使用Jquery-contextmenu插件的步驟講解

    今天小編就為大家分享一篇關(guān)于在vue項(xiàng)目中使用Jquery-contextmenu插件的步驟講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評(píng)論