单页面的SEO优化:在vue中使用prerender-spa-plugin

之前上线了一个使用vue做的单页面应用。google倒是可以爬取js运行的数据了,很快就收录了我的站点,但是百度还不行,很多天了百度依旧没有收录我的网站,只好针对该网站做做SEO处理。顺便给我的这个小站打个广告:https://www.pkgif.net (给GIF自由添加字幕生成表情包的小工具)

单页面应用主要有两种SEO的方式

  1. 服务端渲染

这是比较常见的模式,比如vue和react等都提供了服务端渲染的方式,还能使用nuxt和next这样将服务端渲染集成得更简单的框架。或者将vue集成于express、koa、egg等nodejs的web框架进行服务端渲染也是可行的,也有现成的方案。

  1. 预渲染

如果你调研服务器端渲染(SSR)只是用来改善少数营销页面(例如 /, /about, /contact 等)的 SEO,那么你可能需要预渲染。无需使用 web 服务器实时动态编译 HTML,而是使用预渲染方式,在构建时(build time)简单地生成针对特定路由的静态 HTML 文件。优点是设置预渲染更简单,并可以将你的前端作为一个完全静态的站点。

这是vue官方文档中的一段话。如果只是少量页面需要进行SEO优化且这些页面的数据不复杂不需要很高的实时性,是不大必要使用服务端渲染的。可以将这些页面在webpack打包的时候利用浏览器环境来执行js生成一个静态的html。
由于我的小站只有一个页面,且这个页面的内容都是死的,预渲染是我当下较好的解决方案。这里我选用了vue官方推荐的webpack插件——prerender-spa-plugin,该插件也可以进行react等其他应用的预渲染

安装

$ npm i prerender-spa-plugin

该插件依赖puppeteer,这是一个调用chrome API的库。在安装的过程中,puppeteer会下载chromium(提供浏览器环境),这时候国内的网络会报错,因为你懂的。
报错信息
提示告诉我们设置这个环境变量“PUPPETEER_SKIP_CHROMIUM_DOWNLOAD”以跳过下载,进行手动下载。另外一种解决办法是将chromium下载源设置为淘宝,具体做法是

npm config set PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.com.cnpmjs.org

这样我们就可以成功安装prerender-spa-plugin

在linux上,npm安装的时候可能会出现没有权限mkdir,使用sudo安装即可

使用

注意:首先需要将vue-router设置为history模式,否则预渲染无效。

我们在生产构建的时候才需要该插件进行预渲染,所以需要在prod相关的配置里添加该插件

// webpack.prod.js
'use strict';
const webpack = require('webpack');
const helpers = require('./helpers');
const PrerenderSPAPlugin = require('prerender-spa-plugin');
const path = require('path');

module.exports =  {
  plugins: [
    ...
    new PrerenderSPAPlugin({
      staticDir: helpers.root('webapp'),
      outputDir: helpers.root('webapp-prerender'),
      routes: [ '/' ],
      minify: {
        collapseBooleanAttributes: true,
        collapseWhitespace: true,
        decodeEntities: true,
        keepClosingSlash: true,
        sortAttributes: true,
      },
    }),
  ],
});

这是我的代码片段,helpers.root是工程根目录的路径,

  • staticDir:原本build的静态资源目录。入口html一定要为index.html,如果不是还需要另外配置一个参数indexPath指明入口html
  • outputDir:预渲染生成的html的目录,如果不设置的话和staticDir一致
  • routes:需要预渲染的路由
  • minify:一些html压缩的配置

构建之后,就会产生两个新的文件夹,一个是webapp,一个是webapp-prerender。

注意:在centos 7.x上,即使prerender-spa-plugin安装成功,在构建的时候也会报错,缺少一些文件,这时候需要手动安装一些依赖的文件

#依赖库
yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 -y
#字体
yum install ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y

nginx配置

location / {
	index index.html;
	expires max;
	root ${staticDir};
	try_files $uri $uri/ /index.html;
	if ( $http_user_agent ~* (baidu|360|google|bing|sogou|soso|youdao|jike|yahoo|msn)){
		root ${outputDir};
	}
}

静态资源是托管在nginx上的,这里通过userAgent将搜索引擎判断,读取webapp-prerender文件夹下的,而普通用户使用还是在webapp下的SPA静态资源

采用postman进行简单的测试

  1. 普通用户的访问
    测试1
    2.百度搜索引擎的访问
    测试2
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue预渲染是指在构建Vue应用程序时,将页面提前渲染成静态HTML文件,以便在服务器端优化SEO和提升加载速度。引用介绍了一种使用vue-cli-plugin-prerender-spa的方法来实现这个功能。 要使用vue-cli-plugin-prerender-spa,您可以按照以下步骤操作: 1. 首先,确保您的Vue应用程序使用vue-cli。如果没有,请先安装vue-cli,并创建一个新的Vue项目。 2. 安装vue-cli-plugin-prerender-spa插件,可以通过运行以下命令来完成: ``` vue add prerender-spa ``` 3. 安装完成后,您可以在Vue项目的根目录下找到一个新的文件夹,名为prerender,其包含了预渲染的配置文件prerender.config.js。您可以在这个文件配置需要预渲染的路由和其他相关设置。 4. 根据您的需求,编辑prerender.config.js文件,指定需要预渲染的路由,并进行其他必要的配置。 5. 运行以下命令来构建预渲染的静态HTML文件: ``` npm run build ``` 6. 构建完成后,您将在dist文件夹找到预渲染的静态HTML文件,可以将这些文件部署到服务器上,或者使用它们来进行SEO优化。 引用的内容可以给您提供更详细的vue-cli-plugin-prerender-spa使用说明和配置示例。希望这些信息能对您有所帮助。 : https://github.com/chrisvfritz/prerender-spa-plugin : https://www.npmjs.com/package/vue-cli-plugin-prerender-spa : https://github.com/ml4a/ml4a-guides/blob/master/notebooks/simple_image_classification_with_pytorch.md<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue-cli页面预渲染seo-prerender-spa-plugin操作](https://download.csdn.net/download/weixin_38627234/12924216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue-cli-plugin-prerender-spa:通过预渲染Vue应用程序来增强SEO。 由prerender-spa-plugin提供支持](https://download.csdn.net/download/weixin_42134094/18687118)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [毕设项目:基于SpringBoot+Vue前后端分离 实现的宿舍管理系统](https://download.csdn.net/download/qq_35831906/88227375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值