vue開發(fā)單頁面應(yīng)用時(shí)演闭,如何實(shí)現(xiàn)博客文章的偽靜態(tài)盾鳞,讓每一篇文章都相當(dāng)于是一個(gè)html頁面意系,方便百度引擎收入呢父叙?
經(jīng)過查詢資料發(fā)現(xiàn)可以利用vue-router的params屬性來實(shí)現(xiàn)。
vue-router有兩種傳參方式迅办,一種是query屬性配合著path屬性宅静,一種是params屬性配合著name屬性,詳細(xì)用法可去官網(wǎng)上看站欺。query的傳參會(huì)跟在請求的網(wǎng)址后面姨夹,到新的頁面中刷新傳參也還在。而用params傳參不會(huì)跟在請求的后面矾策,到新的頁面刷新后參數(shù)會(huì)消失磷账。其實(shí),params還有一種用法贾虽,可以讓參數(shù)跟在請求的后面逃糟,刷新頁面參數(shù)也不會(huì)消失。(那為什么不利用query實(shí)現(xiàn)偽靜態(tài)呢蓬豁,可能因?yàn)閝uery默認(rèn)跟參數(shù)绰咽,參數(shù)和請求之間會(huì)有個(gè)問號隔開的原因吧)
在路由中這樣配置:
{
path:"/detail/:detailId",
name:"Detail",
component:Detail
}
然后在點(diǎn)擊事件跳轉(zhuǎn)的時(shí)候這樣傳參
let detailId=id+".html"
this.$router.push(name:"Detail",params:{detailId:detailId})
假如點(diǎn)擊的那篇文章的id是123,那么跳轉(zhuǎn)之后的詳情路由就是/detail/123.html,可以用this.$route.params.detaiId來獲取參數(shù)地粪,然后通過字符串操作去掉.html得到真正的id剃诅,然后就可以愉快的通過這個(gè)id去數(shù)據(jù)庫里面獲取這篇文章的所有信息來展示了。
值得注意的是驶忌,這樣帶參數(shù)的請求在將這個(gè)id傳到后端的時(shí)候,后端請求里面的req.body是個(gè)空對象笑跛,里面沒有傳過去的值付魔,但是可以在req.query里面取到傳參。