1.安装
npm install --save-dev prerender-spa-plugin
安装过程中,会下载puppeteer
2.配置build/webpack.prod.conf.js
基本
const path = require('path') const PrerenderSPAPlugin = require('prerender-spa-plugin') module.exports = { plugins: [ ... new PrerenderSPAPlugin({ // Required - The path to the webpack-outputted app to prerender. staticDir: path.join(__dirname, '../dist'), // Required - Routes to render. routes: [ '/', '/about' ], }) ] }
高级
const PrerenderSPAPlugin = require('prerender-spa-plugin') const Renderer = PrerenderSPAPlugin.PuppeteerRenderer module.exports = { plugins: [ ... new PrerenderSPAPlugin({ staticDir: path.join(__dirname, '../dist'), routes: [ '/', '/about' ], renderer: new Renderer({ inject: { foo: 'bar' }, headless: false, // renderAfterDocumentEvent: 'render-event', renderAfterTime: 5000 }) }) ] }
如果设置renderAfterDocumentEvent需要修改main.js
文件
new Vue({ el: '#app', store, router, components: { App }, template: '<App/>', render: h => h(App), mounted () { // You'll need this for renderAfterDocumentEvent. document.dispatchEvent(new Event('render-event')) } })
1.打包后console报错Uncaught ReferenceError: webpackJsonp is not defined
处理:头部js文件async=""
修改为defer=""
相关链接:https://github.com/chrisvfritz/prerender-spa-plugin