单页应用之预渲染(prerendering)
如果你调研 服务器端渲染 (SSR) 只是用来改善少数营销页面(例如 /, /about, /contact 等)的 SEO,那么你可能需要 预渲染。无需使用 web 服务器实时动态编译 HTML,而是使用预渲染方式,在构建时 (build time) 简单地生成针对特定路由的静态 HTML 文件。优点是设置预渲染更简单,并可以将你的前端作为一个完全静态的站点。
我们可以使用 webpack
的插件 prerender-spa-plugin
来轻松地添加预渲染。它已经被 Vue 应用程序广泛测试,并且它的作者是 Vue 核心团队的成员。
这篇文章会基于 @vue/cli-3.x
说明 预渲染
如何配置。
安装
首先使用 npm
安装最新版的 prerender-spa-plugin
插件。
1 | $ npm install prerender-spa-plugin --save-dev |
由于 prerender-spa-plugin
新的 3.x 版本依赖于 puppeteer
库,并且 puppeteer
是很大的,大约有200多M,所以对于网速很慢的同学,经常会在下载这个库的时候超时失败。鉴于这样的情况,推荐使用nrm
工具将下载源设置为淘宝源,然后再安装 prerender-spa-plugin
。
1 | $ npm i nrm -g |
vue.config.js 配置
安装完毕后,我们在 vue.config.js
文件中添加如下配置。
1 | // vue.config.js |
main.js
接下来,main.js
文件中,在构造 Vue
实例配置的 mounted
钩子中添加 预渲染 的事件发布。
1 | // main.js |
路由模式
最后,我们需要将路由模式修改为 mode: history
模式。
构建
1 | $ npm run build |
执行构建命令后,我们可以看到多出了 about
文件夹。在使用 /about
访问关于页面时,展示的就是 about
文件夹下的 index.html
页面了。
配置说明
更多的详细配置信息请参考 prerender-spa-plugin 。