vue 通過prerender-spa-plugin預(yù)渲染,vue-meta-info徽惋,處理seo優(yōu)化

vue 2.X使用步驟

一.安裝

cnpm i prerender-spa-plugin --save -dev (建議通過淘寶鏡像)
npm i vue-meta-info

二.修改配置文件

1.router/index.js
export default new Router({
  linkActiveClass:"on",
  mode:'history',     //必須為history模式
  base:'/base/',       //添加base
  routes: [...]
2.build/utils.js (注釋publicPath,解決打包后圖片路徑失效)
//publicPath:'../../'  
3.config/index.js
assetsPublicPath: '/',
4.build/webpack.prod.conf.js (引入下載的模塊)
const path = require('path')
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer

在plugins中增加

// 配置PrerenderSPAPlugin
    new PrerenderSPAPlugin({
      // 生成文件的路徑,也可以與webpakc打包的一致座韵。
      staticDir: path.join(__dirname, '../dist'),

      // 對(duì)應(yīng)自己的路由文件险绘,比如index有參數(shù),就需要寫成 /index/param1誉碴。
      routes: [
        '/',
        '/community',
        '/about'
        '/news'
      ],

      // 這個(gè)很重要宦棺,如果沒有配置這段,也不會(huì)進(jìn)行預(yù)編譯
      renderer: new Renderer({
        inject: {
          foo: 'bar'
        },
        headless: false,
        // 在 main.js 中 document.dispatchEvent(new Event('render-event'))黔帕,兩者的事件名稱要對(duì)應(yīng)上代咸。
        renderAfterDocumentEvent: 'render-event'
      })
    })
5.main.js
import MetaInfo from "vue-meta-info";     //引入vue-meta-info
Vue.use(MetaInfo)

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
//這個(gè)不要忘記!成黄!
  mounted(){
    document.dispatchEvent(new Event('render-event'))
  }
});
6. 開始配置vue-meta-info呐芥,在路由跳轉(zhuǎn)的xxx.vue頁面當(dāng)中添加配置
export default {
    name: "home",
    metaInfo:{
      meta:[
        {
          name:'keywords',
          content:'.....'
        },
        {
          name:'discription',
          content:'.....'
        }
      ]
    }
  }
7.最后白华,執(zhí)行npm run build進(jìn)行打包,打包完成后的文件夾下贩耐,每個(gè)頁面都被分成了一個(gè)文件夾弧腥,文件夾下放了一個(gè)index.html文件。(此時(shí)打開其中任意index.html文件潮太,頁面所帶的js管搪,css都報(bào)錯(cuò)沒有生效,但是部署到服務(wù)器是沒問題的铡买。)更鲁,頁面頭部也被添加了每個(gè)頁面配置的meta信息。

vue 3.X使用步驟

1.上述安裝步驟一樣
2.vue-config.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;
        return {
            plugins: [
                new PrerenderSPAPlugin({
                    // 生成文件的路徑奇钞,也可以與webpakc打包的一致澡为。
                    // 下面這句話非常重要!>鞍!媒至!
                    // 這個(gè)目錄只能有一級(jí),如果目錄層次大于一級(jí)谷徙,在生成的時(shí)候不會(huì)有任何錯(cuò)誤提示拒啰,在預(yù)渲染的時(shí)候只會(huì)卡著不動(dòng)。
                    staticDir: path.join(__dirname,'dist'),
                    // 對(duì)應(yīng)自己的路由文件完慧,比如a有參數(shù)谋旦,就需要寫成 /a/param1。
                    routes: ['/', '/product','/about'],
                    // 這個(gè)很重要屈尼,如果沒有配置這段册着,也不會(huì)進(jìn)行預(yù)編譯
                    renderer: new Renderer({
                        inject: {
                            foo: 'bar'
                        },
                        headless: false,
                        // 在 main.js 中 document.dispatchEvent(new Event('render-event')),兩者的事件名稱要對(duì)應(yīng)上脾歧。
                        renderAfterDocumentEvent: 'render-event'
                    })
                }),
            ],
        };
    }
}
3.main.js
new Vue({
  router,
  store,
  render: h => h(App),
  mounted () {
    document.dispatchEvent(new Event('render-event'))
  }
}).$mount('#app')

4.router.js 中設(shè)置mode: “history”

5.最后npm run build 進(jìn)行打包甲捏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市涨椒,隨后出現(xiàn)的幾起案子摊鸡,更是在濱河造成了極大的恐慌,老刑警劉巖蚕冬,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件免猾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡囤热,警方通過查閱死者的電腦和手機(jī)猎提,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旁蔼,“玉大人锨苏,你說我怎么就攤上這事疙教。” “怎么了伞租?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵贞谓,是天一觀的道長。 經(jīng)常有香客問我葵诈,道長裸弦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任作喘,我火速辦了婚禮理疙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泞坦。我一直安慰自己窖贤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布贰锁。 她就那樣靜靜地躺著赃梧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪李根。 梳的紋絲不亂的頭發(fā)上槽奕,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音房轿,去河邊找鬼。 笑死所森,一個(gè)胖子當(dāng)著我的面吹牛囱持,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焕济,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纷妆,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了晴弃?” 一聲冷哼從身側(cè)響起掩幢,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎上鞠,沒想到半個(gè)月后际邻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芍阎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年世曾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谴咸。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轮听,死狀恐怖骗露,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情血巍,我是刑警寧澤萧锉,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站述寡,受9級(jí)特大地震影響驹暑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辨赐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一优俘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掀序,春花似錦帆焕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至换吧,卻和暖如春折晦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背沾瓦。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工满着, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贯莺。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓风喇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缕探。 傳聞我的和親對(duì)象是個(gè)殘疾皇子魂莫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355