nuxt.jsプロジェクトを書く時、エラーメッセージページの操作を追加します。
プロジェクトのためにエラーメッセージページを追加します。バックエンドインターフェースにデータやインターフェースのエラーがない場合、エラーメッセージページを追加しないと、インターフェースのエラーメッセージがページに表示されます。これは明らかにユーザー体験に不利です。
実際の操作過程では、様々な原因で正確な戻りページが表示できないかもしれません。例えば、自分のこの文章のIDが存在しないか、あるいはネット上の要求問題がある場合、エラー表示ページが必要です。
nuxt.js公式ページにもエラーメッセージがあります。
このプロジェクトのエラーメッセージページはラyoutsディレクトリにあります。
layoutsのerror.vueページの内容は以下の通りです。
Callback-based asyncdata,fetch or middleware cals are deprecated.Please switch to promises or async/await sntax
googleで発見されたnuxt.jsの作者はcalbackが何の役にも立たないと感じて、削除しました。
github issueリンク:公式エラーメッセージページの書き方
したがって、ドキュメントを見ると、errorの属性はcontextというパラメータの中にあります。ページコンポーネントのコードは以下の通りです。
エラーが要求された場合は、直接に対象をパラメータとし、status Codeエラーコード及びmessageエラー情報を含んで、異なるエラー情報の展示を処理する。
最終効果は以下の通りです。
追加知識:Nuxtのエラーページと個性meta設定
ユーザーがルートの誤りを入力する時、私達は彼に明確なガイドを与える必要がありますので、アプリケーション開発には404ページが必要です。Nuxt.jsは直接再デフォルトレイアウトフォルダにエラーページを作成することをサポートします。
エラーページの作成
ルートディレクトリの下のlayoutsフォルダの下に、アプリケーションエラーを表示するコンポーネントに相当するerror.vueファイルを作成します。
コードはv-ifで誤ったタイプを判断します。注意しなければならないのはこのエラーの時に「script」で声明しなければなりません。
個性的なメタ設定
ページのMetaはSEOの設定にとって非常に重要です。例えば、今はニュースページを作りたいです。検索エンジンはニュースの収録に対して、各ページはニュースに対して異なるtitleとmetaの設定が必要です。ヘッド情報はヘッドメソッドで直接設定すればいいです。
私たちは今、New-1というページを個性的なmetaとtitleに設定します。
1.まずpages/news/index.vueページのリンクを修正して、titleに伝えます。目的はニュースの具体的なページでtitleを受信し、文章のタイトルを形成するためです。
//pages/news/index.vue
以上のnuxt.jsはプロジェクトを書く時誤りを増加してページの操作にヒントを与えます。つまり、小編集は皆さんに全部の内容を共有します。
実際の操作過程では、様々な原因で正確な戻りページが表示できないかもしれません。例えば、自分のこの文章のIDが存在しないか、あるいはネット上の要求問題がある場合、エラー表示ページが必要です。
nuxt.js公式ページにもエラーメッセージがあります。
このプロジェクトのエラーメッセージページはラyoutsディレクトリにあります。
layoutsのerror.vueページの内容は以下の通りです。
<template>
<div class="err_wrap">
<h1 class="error" v-if="error.statusCode === 404"> </h1>
<h1 class="error" v-else> </h1>
<nuxt-link class="to_home" to="/"> </nuxt-link>
</div>
</template>
<script>
export default {
props: ['error'],
layout: 'detail',
data() {
return {
msg: ' '
}
}
}
</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に書いてありますが、インターフェースの呼び出しエラーやデータがない場合はエラーメッセージページにジャンプします。
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: ' !' }) //
}
},
ここにはピットがあります。asyncDataのcalbackはnuxt.jsの2.3.3 Xバージョンで廃棄されました。運行項目はいつも提示されています。Callback-based asyncdata,fetch or middleware cals are deprecated.Please switch to promises or async/await sntax
googleで発見されたnuxt.jsの作者はcalbackが何の役にも立たないと感じて、削除しました。
github issueリンク:公式エラーメッセージページの書き方
したがって、ドキュメントを見ると、errorの属性はcontextというパラメータの中にあります。ページコンポーネントのコードは以下の通りです。
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: ' ' }))
context.error({ statusCode: 404, message: ' ' }) //
}
},
asyncData要求時にパラメータcalbackを追加します。正しい要求があれば、calbackの最初のパラメータはnullで、二つ目のパラメータは賦対象です。エラーが要求された場合は、直接に対象をパラメータとし、status Codeエラーコード及びmessageエラー情報を含んで、異なるエラー情報の展示を処理する。
最終効果は以下の通りです。
追加知識:Nuxtのエラーページと個性meta設定
ユーザーがルートの誤りを入力する時、私達は彼に明確なガイドを与える必要がありますので、アプリケーション開発には404ページが必要です。Nuxt.jsは直接再デフォルトレイアウトフォルダにエラーページを作成することをサポートします。
エラーページの作成
ルートディレクトリの下のlayoutsフォルダの下に、アプリケーションエラーを表示するコンポーネントに相当するerror.vueファイルを作成します。
<template>
<div class="error">
<h2 v-if="error.statusCode == 404">404 - </h2>
<h2 v-else>500 - </h2>
<ul>
<!-- -->
<li><nuxt-link to="/">HOME</nuxt-link></li>
</ul>
</div>
</template>
<script>
export default {
props: ['error']
}
</script>
コードはv-ifで誤ったタイプを判断します。注意しなければならないのはこのエラーの時に「script」で声明しなければなりません。
個性的なメタ設定
ページのMetaはSEOの設定にとって非常に重要です。例えば、今はニュースページを作りたいです。検索エンジンはニュースの収録に対して、各ページはニュースに対して異なるtitleとmetaの設定が必要です。ヘッド情報はヘッドメソッドで直接設定すればいいです。
私たちは今、New-1というページを個性的なmetaとtitleに設定します。
1.まずpages/news/index.vueページのリンクを修正して、titleに伝えます。目的はニュースの具体的なページでtitleを受信し、文章のタイトルを形成するためです。
//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:' '}}">News-1</nuxt-link></li>
</ul>
</div>
</template>
<script>
export default {
}
</script>
第一歩が完成したら、修正します。/pages/news/uid.vueは、伝達値によって独特のmetaとtitleタグに変化させます。
<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,
}
},
// head
head(){
return{
title:this.title,
meta:[
{hid:'description',name:'news',content:'This is news page'}
]
}
}
}
</script>
注意:コンポーネントの中のメタタグが親コンポーネントの同じラベルを正しくカバーできないように重複する現象を避けるために、hidキーを使ってmetaタグに一意の識別番号を付けることを提案します。以上のnuxt.jsはプロジェクトを書く時誤りを増加してページの操作にヒントを与えます。つまり、小編集は皆さんに全部の内容を共有します。