以下のようなルートパスがあります
パス: '/ board /:type(\ d {2}):subtype(\ d {2}):id(\ d +)'
だからこれはこのようなものです
http:// localhost:3000/board/1122333333
上記の場合、
11はtypeの動的な値です(最大2桁)
22はサブタイプの動的な値です(最大2桁)
33333333は、idの動的な値です。
このフォルダ構造を作成する方法を教えてください。不可能な場合、このケースを処理するための最良のアイデアは何ですか?
あなたの質問の詳細に従って、
あなたのURLは_http://localhost:3000/board/112233333333
_です
ルートの最後のパラメータは、合計12桁(任意のランダムな12桁)である必要があります
112233333333-12桁
以下のページ構造を使用して、最終結果を取得します
__id.vue
_のvalidate()
を使用して、このルートが有効なルートであるかどうかを確認します。
1 .validate()
メソッドはtrueまたはfalseのいずれかを返す必要があります
_export default {
validate ({ params }) {
return /^([0-9]{12,12})$/.test(params.id)
}
}
_
2 ._params.id
_ in validate()
メソッドはid(value in url param)を保持します。あなたの場合は_112233333333
_です。
3 ./^([0-9]{12,12})$/.test(params.id)
はid(url paramの値)が12桁の場合はtrue
を返し、それ以外の場合はfalse
を返します
true
-ルートは正常にロードされます
false
-エラーページが表示されます(404ページが見つかりません-ルートが認識されなかったため)
validateメソッドによってtrueが返された場合、これはページのロードが許可されていることを意味します。次に進むには、vuejsライフサイクルフックを利用する必要があります。
1. created()
ライフサイクルフックで、_this.$route.params.id
_を使用してURLから値を抽出します
2.正規表現を使用して値_this.$route.params.id
_を分割します。 matchメソッドを使用して、必要な形式にグループ化します。あなたの場合、あなたはそれを2、2、8桁に分割しました。以下のスニペットの正規表現はまさにそれを行います
_created(){
var _id = this.$route.params.id;
var regex = /^([0-9]{2,2})([0-9]{2,2})([0-9]{8,8})$/;
var contents = _id.match(regex);
this.type = contents[1];
this.subtype = contents[2];
this.id = contents[3];
}
_
これで、適切な検証後に必要なすべての値が得られました。 _contents[0]
_の値は無視してかまいません。
以下は、私がここで説明したアプローチをテストするためのコードです。
コードを__id.vue
_ファイルに配置し、結果を確認します。
_/* template code */
<template>
<section>
<h3>in board _id</h3>
<div>
<div>type = {{type}}</div>
<div>subtype = {{subtype}}</div>
<div>id = {{id}}</div>
<div>urlParam = {{$route.params}}</div>
</div>
</section>
</template>
/* script */
<script>
export default {
/* variables */
data(){
return{
type : null,
subtype : null,
id : null
}
},
/* route validation */
validate ({ params }) {
return /^([0-9]{12,12})$/.test(params.id)
},
/* extracting url params */
created(){
var _id = this.$route.params.id;
var regex = /^([0-9]{2,2})([0-9]{2,2})([0-9]{8,8})$/;
var contents = _id.match(regex);
this.type = contents[1];
this.subtype = contents[2];
this.id = contents[3];
}
}
</script>
_