预渲染就是在构建阶段(npm run build)生成特定路由的html静态页面,利用webpack的prerender-spa-plugin 插件。
参考:https://www.npmjs.com/package/prerender-spa-plugin
- 安装 prerender-spa-plugin
npm install prerender-spa-plugin --save-dev - 配置 vue.config.js
headless设置为false的话,构建的时候会弹出浏览器窗口,仅在调试时使用,在生成环境中不需要设置为false。
server中指定的port是预渲染时的端口。
预渲染的时候,首先webpack会启动一个本地环境,然后prerender-spa-plugin插件会依赖puppeteer,也就是谷歌的无头浏览器插件。
依次爬取routes中设置的页面,将爬取获取的内容生成指定的html。
- 使用vue-meta-info组件设置meta和title。
注意静态和动态路由设置的方式略有差别。
参考:https://www.npmjs.com/package/vue-meta-info
那么经过上面这3步之后,在本地构建时预渲染的页面就可以正常生成。
接下来就是服务器部署。
在linux上支持prerender-spa-plugin 预渲染,是需要额外手动配置的。
- linux服务器编译报错
参考官方解决方案,安装依赖包。Centos和其他的还不一样,docker环境也不一样。