VUE预渲染 webpack prerender-spa-plugin

本文介绍了如何在Vue.js项目中使用webpack的prerender-spa-plugin进行预渲染,以提升SEO。详细讨论了安装配置过程,包括设置headless参数、预渲染端口与本地环境的配合。此外,针对预渲染中遇到的meta信息重复和页面闪屏问题,提出了解决方案,包括创建额外的模板文件和使用loading效果。最后,提到了根据请求端口判断预渲染请求并相应地添加loading层,以优化用户体验。
摘要由CSDN通过智能技术生成

预渲染就是在构建阶段(npm run build)生成特定路由的html静态页面,利用webpack的prerender-spa-plugin 插件。
参考:https://www.npmjs.com/package/prerender-spa-plugin

  1. 安装 prerender-spa-plugin
    npm install prerender-spa-plugin --save-dev
  2. 配置 vue.config.js
    headless设置为false的话,构建的时候会弹出浏览器窗口,仅在调试时使用,在生成环境中不需要设置为false。
    server中指定的port是预渲染时的端口。
    预渲染的时候,首先webpack会启动一个本地环境,然后prerender-spa-plugin插件会依赖puppeteer,也就是谷歌的无头浏览器插件。
    依次爬取routes中设置的页面,将爬取获取的内容生成指定的html。
    在这里插入图片描述
  3. 使用vue-meta-info组件设置meta和title。
    注意静态和动态路由设置的方式略有差别。
    参考:https://www.npmjs.com/package/vue-meta-info

那么经过上面这3步之后,在本地构建时预渲染的页面就可以正常生成。

接下来就是服务器部署。
在linux上支持prerender-spa-plugin 预渲染,是需要额外手动配置的。

  1. linux服务器编译报错
    参考官方解决方案,安装依赖包。Centos和其他的还不一样,docker环境也不一样。
要将Vue项目改为使用prerender-spa-plugin,需要进行以下步骤: 1. 安装prerender-spa-plugin插件: ``` npm install prerender-spa-plugin --save-dev ``` 2. 在webpack配置文件中引入插件: ``` const PrerenderSPAPlugin = require('prerender-spa-plugin'); ``` 3. 在plugins数组中添加插件配置: ``` plugins: [ new PrerenderSPAPlugin({ staticDir: path.join(__dirname, 'dist'), routes: ['/', '/about', '/contact'], // 可选项,生成的文件存储的路径,默认为 `./prerendered` outputDir: path.join(__dirname, 'prerendered'), // 可选项,生成文件的后缀名,默认为 `.html` postProcess (renderedRoute) { // 对渲染后的路由文件进行额外处理 } }) ] ``` 4. 在`package.json`文件中添加一个脚本: ``` "scripts": { "prerender": "npm run build && node prerender.js" } ``` 5. 创建一个名为`prerender.js`的文件,并添加以下代码: ``` const path = require('path'); const PrerenderSPAPlugin = require('prerender-spa-plugin'); const rendererPath = path.join(__dirname, 'dist', 'server', 'bundle.js'); const renderer = require(rendererPath); const options = { staticDir: path.join(__dirname, 'dist'), routes: ['/'], renderer: new PrerenderSPAPlugin.PuppeteerRenderer({ renderAfterDocumentEvent: 'render-event', headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox'], }), }; const prerenderer = new PrerenderSPAPlugin(options); prerenderer .initialize() .then(() => { return prerenderer.renderRoutes(['/']); }) .then((renderedRoutes) => { console.log('Prerendering successful!'); console.log(renderedRoutes); }) .catch((error) => { console.error('Prerendering failed:'); console.error(error); }); ``` 6. 运行`npm run prerender`命令,生成渲染文件。 以上就是将Vue项目改为使用prerender-spa-plugin的步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值