vue-meta-info(动态更改title、meta等信息)
动态更改title、meta等信息,利于SEO优化
vue-meta-info官网
安装
npm install vue-meta-info --save
main.js
import MetaInfo from 'vue-meta-info';
Vue.use(MetaInfo);
App.vue
<script>
export default {
metaInfo() {
return {
meta: this.metaData
}
},
data() {
return {
metaData: []
}
},
watch: {
$route(to, from) {
if (!to.meta) {
return false
}
document.title = to.meta.title ? to.meta.title : '快贴宝'
this.metaData = []
if (to.meta.keywords) {
this.metaData.push({
name: 'keywords',
content: to.meta.keywords
})
} else {
this.metaData.push({
name: 'keywords',
content: ''
})
}
if (to.meta.description) {
this.metaData.push({
name: 'description',
content: to.meta.description
})
} else {
this.metaData.push({
name: 'description',
content: ''
})
}
},
},
}
</script>
vue-cli prerender-spa-plugin 模板预渲染
prerender-spa-plugin:https://github.com/chrisvfritz/prerender-spa-plugin
vue-cli@3参考:https://blog.csdn.net/lv5751394/article/details/98616605
vue-cli@2参考:https://blog.csdn.net/bbsyi/article/details/77897291
部署打包报错:https://blog.csdn.net/jiezaizone/article/details/105815593
要求
router.js 中设置mode: ‘history’
安装
npm install prerender-spa-plugin --save
vue-config.js(vue-cli2是配置build/webpack.prod.conf.js)
const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
const path = require('path');
module.exports = {
configureWebpack: config => {
if (process.env.NODE_ENV !== 'production') return;
// todo 预渲染
return {
plugins: [
new PrerenderSPAPlugin({
// 生成文件的路径,也可以与webpakc打包的一致。
// 下面这句话非常重要!!!
// 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
staticDir: path.join(__dirname, './dist'),
// 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。
routes: ['/', '/tradingHall'],
// 这个很重要,如果没有配置这段,也不会进行预编译
renderer: new Renderer({
inject: {
foo: 'bar'
},
// headless: false,
// 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。
renderAfterDocumentEvent: 'render-event'
})
}),
],
};
}
}
main.js
new Vue({
router,
store,
render: h => h(App),
mounted () {
document.dispatchEvent(new Event('render-event'))
}
}).$mount('#app')
打包
运行 npm run build
,看一下生成的 dist 的目录里是不是有每个路由名称对应的文件夹。然后找个 目录里 的 index.html
打开,看文件内容里是否有该文件应该有的内容。有的话,就设置成功了