详解在不使用ssr的情况下解决Vue单页面SEO问题

yizhihongxing

下面是"详解在不使用ssr的情况下解决Vue单页面SEO问题"的完整攻略。

为什么需要在不使用ssr的情况下解决Vue单页面SEO问题

Vue单页面应用(SPA)在开发过程中非常方便,但是它并不适用于搜索引擎优化(SEO)。因为SPA是运行在浏览器中的,它在服务器端只返回一个HTML文件,而网页内容都是通过ajax动态加载的。这种方式使得搜索引擎很难获取到页面内容,导致的结果就是搜索引擎很难对该页面进行标准的SEO操作。因此我们需要寻找解决方案。

解决方案

1.使用预渲染技术

预渲染技术通过模拟浏览器的行为,将网页完整的静态内容生成到一个HTML文件中。这样即使在未加载任何JavaScript脚本的情况下,浏览器也能够正常渲染该页面。预渲染技术能解决SPA网页被搜索引擎无法抓取的问题。

# 安装prerender-spa-plugin
npm install prerender-spa-plugin --save-dev

1.在vue.config.js中添加配置项

const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer

module.exports = {
  configureWebpack: {
    plugins: [
      new PrerenderSPAPlugin({
        staticDir: path.join(__dirname, 'dist'),
        routes: ['/'], // 所有要预渲染的路径
        renderAfterDocumentEvent: 'render-event',
        // renderer配置
        renderer: new Renderer({
          renderAfterTime: 5000
        })
      })
    ]
  }
}

2.为模板添加标识

预渲染时puppeteer会先访问你的 SPA ,然后去渲染我们预设的路由,将渲染好的内容生成为 HTML 文件。如果你在 head 部分添加了很多 script 标签,puppeteer 会在获取到这些标签后停止渲染,而直接将没有渲染完的 html 输出成预渲染的 html文件,
这时我们该如何处理呢?我们可以通过在组件模板中添加一个标记来钩取预渲染过程,如下:

<div>
    <noscript id="app">
      <div v-if="$route.path === '/'">
        <HelloWorld/>
      </div>
      <div v-else>
        <router-view/>
      </div>
    </noscript>
    <div v-else id="app"></div>
  </div>

2.服务端渲染(Server Side Rendering, SSR)

Server Side Rendering (SSR)并不是 Vue.js 独有的概念,它其实是一种前后端分离的解决方案,即前端工程师负责构建前端页面并将数据请求发送给后端,后端负责对数据进行处理并生成对应的HTML页面,返回给前端进行渲染。SSR 是一种常用的 SEO 解决方案。

总结

SSR可以极大的提高SEO效果,但是实现成本较高,适用于比较大型的项目。而预渲染比较适合中小型项目,实现比较简单。具体解决方案需要根据实际情况而定。

参考文章:

Vue.js应用SEO优化之预渲染(基于prerender-spa-plugin)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解在不使用ssr的情况下解决Vue单页面SEO问题 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • node.js中get和post接口教程

    Node.js中Get和Post接口教程 在Node.js中,我们可以使用HTTP模块来创建接口并处理HTTP请求和响应。本教程将演示如何使用Node.js创建Get和Post请求的接口。 Get请求 Get请求通常用于获取数据。在Node.js中,您可以使用req.query获取查询字符串中的参数,并使用res.send方法将数据作为响应发送回客户端。 以…

    node js 2023年6月8日
    00
  • 详解本地Node.js服务器作为api服务器的解决办法

    下面是“详解本地Node.js服务器作为API服务器的解决办法”的攻略。 初步准备 首先,你需要安装Node.js。如果你的系统上没有安装Node.js,可以在官方网站(https://nodejs.org/)上下载对应的版本并安装。安装完成后,你可以打开终端或命令行工具并输入以下命令来验证Node.js是否成功安装: node -v 如果输出了Node.j…

    node js 2023年6月8日
    00
  • 在windows上用nodejs搭建静态文件服务器的简单方法

    下面我来给您详细讲解“在windows上用nodejs搭建静态文件服务器的简单方法”。 简介 在开发web项目中,我们需要经常调试本地的静态资源文件,这时候搭建一个本地的静态文件服务器非常必要。Nodejs是一个事件驱动,异步I/O的JavaScript运行环境,通过nodejs可以轻松地搭建一个静态文件服务器。 安装Node.js 首先需要在电脑上安装No…

    node js 2023年6月8日
    00
  • node.js入门教程之querystring模块的使用方法

    下面是“node.js入门教程之querystring模块的使用方法”的完整攻略。 一、querystring模块的基本介绍 querystring 模块是 Node.js 中内置的一个提供了一些实用工具的模块,可以用来进行 URL 查询字符串的解析和序列化,常用于处理 HTTP 请求和响应中的参数。 二、querystring模块常用方法 1. query…

    node js 2023年6月8日
    00
  • nodejs实现截取上传视频中一帧作为预览图片

    首先,需要说明的是,实现截取上传视频中一帧作为预览图片需要使用到nodejs和第三方库ffmpeg。下面是完整的实现步骤。 步骤一:安装ffmpeg 在命令行输入以下命令: sudo apt-get install ffmpeg 如果你使用的是Windows系统,可以到ffmpeg官网下载相应的安装包。 步骤二:安装相关库 在nodejs项目中,需要使用到以…

    node js 2023年6月8日
    00
  • JavaScript中Map与Object应用场景

    在JavaScript中,Map与Object都可以用于存储键/值对,但是它们在应用场景上的区别较大。 Map 什么是Map Map是一种新的数据结构,它于ES6(ECMAScript 2015)中被引入,主要用于存储键/值对,并且键和值可以是任意类型。它提供了以下主要方法: set(key, value) :向Map对象中添加或更新一个键值对。 get(k…

    node js 2023年6月8日
    00
  • js+html5实现复制文字按钮

    下面是js+html5实现复制文字按钮的完整攻略。 1. 确定需求和目标 本次任务旨在实现在网页中添加“复制”按钮,用户点击按钮后可以复制指定的文字到剪贴板中。需要使用的技术为HTML5和JavaScript,目标是让用户在使用网站时能够更方便地复制需要的文字。 2. 准备文本内容和按钮元素 首先,在HTML代码中准备好需要复制的文本内容,并在页面中添加一个…

    node js 2023年6月8日
    00
  • 关于访问node express中的static静态文件方法

    访问node express中的static静态文件是一件非常常见的事情,下面是关于如何进行访问的完整攻略: 1. 在express中设置静态文件夹 要在Express应用程序中提供静态文件,我们需要使用express中的内置中间件express.static。该中间件可以将静态文件服务于公共目录,我们可以通过以下方式将其设置: const express …

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部