预编译解决vue-cli 4.0项目的seo问题

预编译解决vue-cli 4.0项目的seo问题#

vue项目上线之后要求解决一下seo问题,现在总结一下 希望能帮到各位
ps:其实网上已经有很多的解释了 我这边就不多做介绍
贴一下vue-cli和依赖的版本

预编译解决vue-cli 4.0项目的seo问题_第1张图片
预编译解决vue-cli 4.0项目的seo问题_第2张图片

1,需要用到我们的prerender-spa-pluginvue-meta-info

//这是预编译的
npm i prerender-spa-plugin --save
//这是生成meta
npm i vue-meta-info --save

2,安装好就需要配置我们的vue.config.js 在我们的项目中找到vue.config.js

(没有就需要自己创建 对的没错自己创建就行 因为项目的vue.config.js(package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载)

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;
  return {
   plugins: [
    new PrerenderSPAPlugin({
    //staticDir: path.join(__dirname, process.env.VUE_APP_OUTPUT_DIR),如果直接用path 可能会报错 不要问为什么我要特意备注一下 
     staticDir: path.join(__dirname,'dist'),
     routes: ['/First', '/Abutton','/last','/tahoe','/home','/NewsDetail'],
     renderer: new Renderer({
      inject: {
       foo: 'bar'
      },
      headless: false,
      // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。
      renderAfterDocumentEvent: 'render-event'
     })
    }),
   ],
  };
 }
}

3,在我们的mian.js文件中就可以进行配置

new Vue({
  router,
  store,
  render: h => h(App),
  methods: {
  },
  //这个是重点 其他不用 
  mounted () {
    document.dispatchEvent(new Event('render-event')) // 预渲染
}
}).$mount('#app')

**

4,然后打包就可以

**(打包的名对应的就是我们的 routes: [’/First’, ‘/Abutton’,’/last’,’/tahoe’,’/home’,’/NewsDetail’])
预编译解决vue-cli 4.0项目的seo问题_第3张图片

5,下面就可以在我们的页面(就是vue页面)中写上我们的meta就可以

//这是生成meta的  
//main.js文件
import MetaInfo from 'vue-meta-info'
Vue.use(MetaInfo)

6,下面就可以直接在我们的vue页面script中加进来

  // 配置title和meta数据
  metaInfo: {
    title: 'xxxxx',
    meta: [
      {
        name: 'keywords',
        content: 'xxxx'
      },
      {
        name: 'description',
        content: 'xxxxx'
      },
      {
      //这个只是我项目中用到 具体要不要看你们自己的项目
        name: 'baidu-site-verification',
        content: 'xxxx'
      }
    ]
  },

7,应该是没了 如果还有什么其他的问题欢迎各位留言讨论

你可能感兴趣的:(问题,vue,vue.js)