如何 SEO

908 阅读6分钟

需求:界面需要实现 SEO

SEO(Search Engine Optimization),即搜索引擎优化,是指通过对网站的内容、结构、代码等进行优化,从而提高网站在搜索引擎中的排名和曝光度,进而吸引更多的流量和用户。

要素

SEO有几个要素:

  1. 多页面
  2. title、描述、关键字

缘故

单页面应用通常使用JavaScript和AJAX技术来动态加载内容,因此搜索引擎爬虫难以抓取和索引页面的内容。这意味着搜索引擎可能无法正确地理解和评估网站的内容,从而导致排名下降。

相比之下,多页面应用通常具有独立的URL和HTML文件,每个页面都有自己的标题、描述和关键词。这使得搜索引擎易于理解和索引网站的内容,并能够更好地评估网站的质量和相关性。

另外,多页面应用还可以提供更好的用户体验,因为它们可以快速加载每个页面,而不需要在每次更改时重新渲染整个页面。这可以提高网站的速度和性能,从而提高用户满意度和留存率。

所以,虽然单页面应用也可以实现SEO,但多页面应用更为友好,因为它们可以更好地满足搜索引擎的需求,并提供更好的用户体验。

补充

这里爬虫抓取的页面不是控制台的dom结构哈

image.png

是点击右键->查看网站源码

这个是nuxtJs官网的源码,你会发现这个dom结构会显示,内容就会被爬虫抓取到

image.png

这个是vue.js官网的,你看这就是SPA显示的源码,能抓到的内容不多

image.png

解决方式

第一种(SPA实现预渲染)

image.png

使用插件实现打包多页面

prerender-spa-plugin

1、vue项目中安装prerender-spa-plugin

npm install prerender-spa-plugin -s

2、vue.config.js配置 在vue.config.js文件中,导入prerender-spa-plugin插件:

const PrerenderSPAPlugin = require('prerender-spa-plugin');

配置插件:在module.exports中添加插件的配置:

module.exports = {
  // ...其他配置项

  configureWebpack: {
    plugins: [
      new PrerenderSPAPlugin({
        // 配置项
      })
    ]
  }
};

配置插件选项:在PrerenderSPAPlugin的构造函数中,可以配置一些选项来指定预渲染的路由、输出目录等。以下是一个示例配置:

new PrerenderSPAPlugin({
  staticDir: path.join(__dirname, 'dist'),
  routes: ['/', '/about', '/contact'], // 需要预渲染的路由(就是打包的多页面)
  renderer: new Renderer({
    // renderer 配置项
  })
})

使用插件实现修改title、关键字、描述

  1. 安装 npm install vue-meta-info -s
  2. 到页面组件中配置
metaInfo:{ 
    title:"努力" 
    meta:[{
        name:'关键字,前端'content:'描述'
    }]
}

解决问题

  1. 打包多页面
  2. 每个页面单独的title、关键字
  3. 接口数据在html生成之前就放在页面上,爬虫可以爬到数据

存在问题

  1. 预渲染无法配置动态路由
  2. 如果title、关键字是接口数据(动态数据)配置到页面组件metaInfo中,会报错

总结

适合做一个项目中只有几个页面需要做SEO项目

第二种 (服务端渲染SSR)

以NuxtJs示例 image.png

具体流程如下:

  1. 用户通过浏览器或其他客户端设备访问网站。
  2. 客户端发送HTTP请求到服务端服务器。
  3. 服务端服务器接收到请求后,将请求转发给Node服务。
  4. Node服务接收到请求后,根据请求的URL和路由配置,调用相应的Nuxt.js页面组件来处理请求。
  5. Nuxt.js页面组件执行相关的数据获取、异步操作等,并生成对应的HTML响应。
  6. Node服务将生成的HTML响应返回给服务端服务器。
  7. 服务端服务器将HTML响应返回给客户端。
  8. 客户端接收到HTML响应后,渲染页面内容,并展示给用户。

方式差异

前端预渲染(Prerendering)和服务器端渲染(Server-Side Rendering,简称SSR)是两种常见的前端渲染方式,它们有一些区别和适用场景。

  1. 预渲染(Prerendering): 预渲染是指在构建时生成静态HTML文件,这些文件包含了页面的内容。当用户请求该页面时,服务器直接返回预先生成的静态HTML文件,而不需要在客户端进行额外的数据获取和渲染操作。预渲染通常使用静态网站生成器(如Gatsby、Next.js等)或构建工具(如Webpack)来实现。

    优点:

    • SEO友好:搜索引擎可以直接抓取并索引预渲染的静态HTML文件,有利于页面的搜索排名。
    • 首屏加载快:由于预渲染的静态HTML文件已经包含了页面内容,用户打开页面时能够立即看到内容,提供更好的用户体验。
    • 简化服务器压力:预渲染将渲染工作提前到构建阶段完成,减轻了服务器的负担。

    缺点:

    • 不适用于动态内容:预渲染生成的静态HTML文件无法包含动态内容,对于需要频繁更新或依赖用户交互的页面,预渲染可能不太适合。
  2. 服务器端渲染(Server-Side Rendering,简称SSR): 服务器端渲染是指在服务器端将页面的内容渲染成HTML,并将完整的HTML响应发送给客户端。客户端收到HTML响应后,可以直接展示页面内容,然后再加载和执行前端代码来增强交互性。服务器端渲染通常使用框架(如React、Vue等)的服务器端渲染模式或专门的服务器端渲染框架(如Next.js、Nuxt.js等)来实现。

    优点:

    • 动态内容支持:由于服务器端渲染是在每次请求时生成HTML,因此可以包含动态内容,如从数据库获取数据、根据用户权限生成不同的内容等。
    • 更好的可访问性和SEO:由于服务器端渲染生成的HTML包含了完整的页面内容,搜索引擎能够更好地理解和索引页面,同时也有利于屏幕阅读器等辅助技术的使用。

    缺点:

    • 首屏加载慢:由于服务器端渲染需要在每次请求时生成HTML,相比预渲染,首屏加载时间可能会稍慢一些。
    • 对服务器压力较大:服务器端渲染需要在每次请求时进行渲染,对服务器的负载要求较高。

所以,预渲染适用于静态内容较多、不需要频繁更新的页面,可以提供更快的首屏加载和更好的SEO效果;而服务器端渲染适用于动态内容较多、需要根据用户请求生成不同内容的页面,可以提供更好的可访问性和动态交互。选择哪种方式取决于具体的项目需求和优化目标。

总结

菜鸟的学习日记,滴水之积成海,点滴之聚成川