想要网站每个页面的描述更加准确,让搜索引擎更好的进行seo,网站更好的被收录。需要对每个页面设置单独的标题,关键词和描述文字。在vue单页面项目中,我们可以通过在路由表中的路由对象中添加属性,并通过router.aftereach()或者router.beforeeach()钩子函数来实现路由变化的监听,每次路由变化后,将新的title,description和keywords更新到当前的页面。
step1
在index.html的head中添加两个meta标签。
1 2
| <meta data-n-head="1" data-hid="description" name="description" content=""> <meta data-n-head="1" data-hid="keywords" name="keywords" content="">
|
step2
在router里面的路由index.js文件中,添加每个页面的meta内容。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| routes: [ { path: '/', name: 'index', component: index, meta: { title: '首页title内容', content:{ keywords:'这里是keywords,用逗号间隔', description:'这里是description', }, } }
|
step3
在main.js文件中,使用钩子函数来监听路由变化,将数据更新。
1 2 3 4 5 6 7 8 9 10 11 12 13
| router.afterEach((to,from)=>{ if (to.meta.title) { document.title = to.meta.title } if(to.meta.content){ let head = document.getElementsByTagName('head'); let meta = document.createElement('meta'); document.querySelector('meta[name="keywords"]').setAttribute('content', to.meta.content.keywords) document.querySelector('meta[name="description"]').setAttribute('content', to.meta.content.description) meta.content = to.meta.content; head[0].appendChild(meta) } })
|
可以通过浏览器中的开发者工具里面的查看器之类的工具,来查看页面的html是否包含这些数据。