1.在项目中安装
npm install prerender-spa-plugin --save
1
2.在vue.config.js中写入以下代码
注意修改routes数组的值
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({
//网页包的路径将应用程序输出到prerender
staticDir: path.join(__dirname,'dist'),
//Routes to render 对应自己router
routes: ['/', '/home','/blog','/aboutMe','/message'],
renderer: new Renderer({
inject: {
foo: 'bar'
},
//渲染时显示浏览器窗口。对调试有用。
headless: false,
// // 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。
renderAfterDocumentEvent: 'render-event'
})
}),
],
};
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
3.在main.js中添加如下内容
new Vue({
router,
store,
render: h => h(App),
//这里与vue.config.js中的事件名相对应
mounted () {
document.dispatchEvent(new Event('render-event'))
}
}).$mount('#app')
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
4.注意项目的router必须是history模式
mode:"history"
1
亲测有效!!!