前端渲染CSR和SSR的结合使用思路详解

 更新时间:2022年12月22日 13:08:16   作者:白忆宇  
以往的 SSR 方式有很多,都是人想出来的嘛,基本思路是让服务器提前渲染好然后等请求来的时候加渲染好的页面直接发给客户端浏览器,这篇文章主要介绍了前端渲染CSR和SSR的结合使用分析,需要的朋友可以参考下

小聊: 我们都知道,以往的CSR(客户端浏览器渲染)多多少少会有一点点 SEO 问题,不只是 SPA(单页面应用程序),只不过 SPASEO 问题比较严重,一般的前端项目有很多个页面,渲染的压力是分散的,所以页面渲染速度很快,基本够爬虫抓到很多内容,但 SPA 只有一个页面。而我们的 SSR (服务器渲染)可以弥补像 SPA 项目的 SEO(搜索引擎优化) 不友好问题。但是它本身对比 CSR 也是有不足的。所以,为什么不可以结合它们两个的优点去进行使用呢?

1. 思路

以往的 SSR 方式有很多,都是人想出来的嘛,基本思路是让服务器提前渲染好然后等请求来的时候加渲染好的页面直接发给客户端浏览器,有人就会想,诶,这不就像 jsp 这样的前后端不分离嘛。但 SSR 是在前后端分离的基础上借用了这一思想。

现在已经有了一下成熟的框架可以帮助 SPA 项目完美的使用 SSRSEO 进行提升,从而提高网站搜索排名。比如 Nuxt ,我这里会以 Nuxt 为例,对 CSRSSR 的结合使用做出分析,这样会有利与我们网站渲染的设计。当然,不了解 Nuxt 也没关系,我不会讲它的使用,也不需要,我要聊的是思考后的可行性和结论。

Nuxt 有通用渲染和混合渲染的概念,简单解释就是提供 CSRSSR 的结合使用的方案,默认是 SSR ,你可以根据需求改成 CSR。它有 路由和 js/ts 文件可选的方案,就是说我们可以选择哪些页面或者文件使用 CSR

2. 以将文件设置成CSR为例

Nuxt 会按照约定,带有 .client 后缀的文件,会被设置成在客户端渲染。
比如 elment-plus.tselement-plus.client.ts

基于我们知道客户端渲染(CSR)和服务端渲染(SSR)的区别,明知道 Nuxt 就是服务端渲染来进行 SEO 的,那为什么又要提供可设置成客户端渲染呢?那就要说到 CSRSSR 的优点与缺点了,挑重点说一下。

  • CSR
  • 优点:完全由浏览器下载并解析 JavaScript 代码后生成 HTML 元素,不用服务器分担渲染压力,同时也减少了网络传输。
  • 缺点:首屏加载慢,搜索引擎爬虫在第一次尝试索引页面时不会等待界面完全呈现,不利于 SEO
  • SSR
  • 优点:首屏渲染快,有利于 SEO,因为浏览器前端初次发请求时,服务端就会把已经渲染加载好的页面数据发过来,节约很多时间。爬虫也可以在没有等待的情况下对其进行索引。
  • 缺点:服务器和浏览器环境不提供相同的 API,双方需要保证衔接,而且会增加服务器压力,提高它的成本。

从他们的优缺点上看,我们可以综合他们的优缺点,既要 SEO 做好,又要尽量减轻服务器的压力,把握住设置 js/ts 的渲染时机,可以让一些部分文件在浏览器端渲染。这也就是——混合渲染。

那么下一个问题,应该让哪一些 js/ts 加上 .client 的限制呢?

3. 哪些文件使用CSR

个人理解,从以下几点分析:

  • 我们在 js/ts 里的代码是做什么的?1、内容请求渲染到 HTML 或信息交换;2、页面交互和动画效果。做 SEO 爬虫过来要的是什么?它要的是文字数据,比如链接、标题、标签、导航关键词等等CSRSSR 都可以。我们要利用浏览器的“免费劳力”和服务端渲染的 SEO 友好度。
  • 可以得出结论:一个前后端项目,这些爬虫需要的文字内容需要使用 js 逻辑动态地从后台获取,那么绝对要在服务端渲染准备好等请求的时候发过来;
  • 如果是一些好看的 js 交互的样式效果,爬虫还没看到就会走掉也没关系,它不会管你页面有多炫酷好看的,所以这样的 js 完全可以让浏览器解析加载,就比如 element-plusjs 配置文件,这样有关它的渲染配置会在客户端生效。

其实 Nuxt 也还提供了路由选择是 CSR 还是 SSR 的方式,也很容易理解,一个路由页面要里面静态内容更多的话,js 请求也比较少,那么它更适合浏览器渲染。

Nuxt SEO这方面做得很好,当然也不止 SEO,它不只是为了 SEO 才设计的,里面有很多方便开发、性能优化的有趣功能。

如果对 Nuxt 感兴趣的话,不妨了解它,它是基于 vue.js 的,完全支持 vue.js 语法,未来可期~。Nuxt3官网 https://v3.nuxtjs.org/

到此这篇关于前端渲染CSR和SSR的结合使用分析的文章就介绍到这了,更多相关前端渲染CSR和SSR使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript中对象介绍

    JavaScript中对象介绍

    这篇文章主要介绍了JavaScript中对象介绍,本文直接用实例讲解对象的创建、删除等操作,并总结了Object属性、Property属性,需要的朋友可以参考下
    2014-12-12
  • javascript数组去重方法终极总结

    javascript数组去重方法终极总结

    这篇文章主要介绍了javascript数组去重终极总结,本文列举了3种javascript数组去重方法,并分别分析了它们的优缺点,需要的朋友可以参考下
    2014-06-06
  • 微信小程序仿淘宝热搜词在搜索框中轮播功能

    微信小程序仿淘宝热搜词在搜索框中轮播功能

    这篇文章主要介绍了微信小程序—仿淘宝热搜词在搜索框中轮播功能的相关资料,需要的朋友可以参考下
    2020-01-01
  • 利用ES6的Promise.all实现至少请求多长时间的实例

    利用ES6的Promise.all实现至少请求多长时间的实例

    下面小编就为大家带来一篇利用ES6的Promise.all实现至少请求多长时间的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • javascript解决小数的加减乘除精度丢失的方案

    javascript解决小数的加减乘除精度丢失的方案

    这篇文章主要介绍了javascript解决小数的加减乘除精度丢失的方案的相关资料以及JavaScript中关于丢失数字精度的问题的探讨,非常的详细,需要的朋友可以参考下
    2016-05-05
  • javascript的字符串按引用复制和传递,按值来比较介绍与应用

    javascript的字符串按引用复制和传递,按值来比较介绍与应用

    字符串是按引用复制和传递的,但是是按值来比较的;当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中,需要的朋友可以参考下
    2012-12-12
  • 基于three.js实现的3D粒子动效实例代码

    基于three.js实现的3D粒子动效实例代码

    这篇文章主要给大家介绍了关于如何基于three.js实现的3D粒子动效的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • JavaScript通过setTimeout实时显示当前时间的方法

    JavaScript通过setTimeout实时显示当前时间的方法

    这篇文章主要介绍了JavaScript通过setTimeout实时显示当前时间的方法,涉及javascript操作时间显示的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • JS中type=

    JS中type="button"和type="submit"的区别

    Submit是专门用于提交表单的Button,与Button的区别主要有两点:type=button 就单纯是按钮功能,type=submit 是发送表单 。下面通过本文给大家分享JS中type="button"和type="submit"的区别,感兴趣的的朋友一起看看吧
    2017-07-07
  • JS实现跟随鼠标的链接文字提示框效果

    JS实现跟随鼠标的链接文字提示框效果

    这篇文章主要介绍了JS实现跟随鼠标的链接文字提示框效果,涉及javascript鼠标事件及页面元素样式操作的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-08-08

最新评论