vue seo 優化


預渲染prerender-spa-plugin

如果你只是用來改善少數營銷頁面(例如 /, /about, /contact 等)的 SEO,那么你可能需要預渲染。無需使用 web 服務器實時動態編譯 HTML,而是使用預渲染方式,在構建時 (build time) 簡單地生成針對特定路由的靜態 HTML 文件。優點是設置預渲染更簡單,並可以將你的前端作為一個完全靜態的站點。

優勢:

  • 改動小,引入個插件就完事;

不足:

  • 無法使用動態路由;
  • 只適用少量頁面的項目,頁面多達幾百個的情況下,打包會很很很慢;

解決方案如下:

1.首先需要安裝prerender-spa-plugin和vue-meta-info,prerender-spa-plugin解決打包多個頁面,vue-meta-info解決SEO的問題

npm install --save prerender-spa-plugin
npm install --save vue-meta-info

2.在項目中找到webpack.prod.conf.js,有可能這個文件名不同,這個時候你需要根據你的命令行來找到相關文件

 

 在此文件中添加如下代碼

 

 

 貼上相關代碼

復制代碼
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
new PrerenderSPAPlugin({
      // Required - The path to the webpack-outputted app to prerender.
      staticDir: path.join(__dirname, '../dist'),
      // Required - Routes to render.
      routes: [ '/', '/cart', '/list'],
      renderer: new Renderer({
        inject: {
          foo: 'bar'
        },
        headless: false,
        // 在 main.js 中 document.dispatchEvent(new Event('render-event')),兩者的事件名稱要對應上。
        renderAfterDocumentEvent: 'render-event'
      })
}),
復制代碼

3.在VUE項目中添加相關代碼

 

貼上相關代碼,

復制代碼
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App),
  mounted () {
    // You'll need this for renderAfterDocumentEvent.
    
    document.dispatchEvent(new Event('render-event'))
    }
}).$mount('#app')
復制代碼

4.到這里就完成打包成多個頁面,執行打包命令

npm run build

5.打包完成會出現相關文件夾,每個文件都有相關的index,html說明打包成功

 

 5接下去就是解決SEO的問題,導入vue-meta-info,然后使用

 

 6然后在需要的組件中添加如下代碼

 

 貼上相關代碼

復制代碼
metaInfo: {
    title: '我是hello頭', // set a title
    meta: [{             // set meta
      name: 'keyWords',
      content: '我是hello關鍵字'
    },
    {
      name: 'description',
      content: '我是hello描述'
    }]
 }
復制代碼

7.再執行打包程序,這時候你再相關頁面中查找相關meta

 

 

靜態化靜態化是Nuxt.js打包的另一種方式,算是 Nuxt.js 的一個創新點,頁面加載速度很快。

在 Nuxt.js 執行 generate 靜態化打包時,動態路由會被忽略。

優勢:

  • 純靜態文件,訪問速度超快;
  • 對比SSR,不涉及到服務器負載方面問題;
  • 靜態網頁不宜遭到黑客攻擊,安全性更高。

不足:

  • 如果動態路由參數多的話不適用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM