对比分析–浅析SSR(服务端渲染)和SPA(客户端渲染)

一、前言

C端项目重构成首屏服务端渲染(SSR:serve side render),对于重构成SSR,redux不是必须的。本文以vue为栗子的项目。

二、什么是服务端渲染

将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记”混合”为客户端上完全交互的应用程序。

我以weekly周报的登陆页面为例

对比分析--浅析SSR(服务端渲染)和SPA(客户端渲染)

登陆页没有使用服务端渲染,请求到login页面,返回的body为空,之后执行js将html结构注入到body中,结合css显示出来

我的另外一个vue的nuxt写的ssr渲染的songEagle,首页返回的body是带有html的。

对比分析--浅析SSR(服务端渲染)和SPA(客户端渲染)

三、SSR渲染和客户端渲染的区别

1、SSR渲染的优势:

(1)更利于SEO;

(2)更利于首屏渲染(特别是对于缓慢的网络情况或运行缓慢的设备,内容更快到达)

2、SSR渲染的缺点:

(1)服务器压力大,考虑服务器端负载。

(2)开发条件受限,只会执行到ComponentMount之前的生命周期钩子,引用第三方库不可用其他生命周期钩子,引用库选择产生很大的限制。

(3)学习成本增大,需要学习构建设置和部署的更多要求。

四、耗时比较

1、数据请求

由服务端请求首屏数据,而不是客户端请求首屏数据,这是”快”的一个主要原因。服务端在内网进行请求,数据响应速度快。客户端在不同网络环境进行数据请求,且外网http请求开销大,导致时间差。

对比分析--浅析SSR(服务端渲染)和SPA(客户端渲染)

对比分析--浅析SSR(服务端渲染)和SPA(客户端渲染)

2、HTML渲染

服务端渲染是先向后端服务器请求数据,然后生成完整首屏html返回给浏览器;

客户端渲染是等js代码下载、加载、解析完成后再请求数据渲染,等待的过程页面是什么都没有的,就是用户看到的白屏。

就是服务端渲染不需要等待js代码下载完成并请求数据,就可以返回一个已有完整数据的首屏页面。

对比分析--浅析SSR(服务端渲染)和SPA(客户端渲染)

对比分析--浅析SSR(服务端渲染)和SPA(客户端渲染)

五、原理

相对于SPA,vue增加了一些扩展工具,首先我们来看一下比较重要的一个 工具vue-server-renderer,从名字就知道是在服务端渲染时候调用的

具体实现:

1、创建一个空项目 mkdir vuessr && cd vuessr

2、运行 npm init 进行初始化

3、安装我们需要的依赖 cnpm install vue vue-server-renderer –save

4、创建index.js代码如下:

5、运行 node index.js 可以看到在控制台输出了

  <div data-server-rendered="<span" class="hljs-string">"true">Hello World<<span class="hljs-regexp">/div></span></div>

六、总结

什么是SSR?将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记”混合”为客户端上完全交互的应用程序。SSR有更利于SEO和首屏渲染,同时也有缺点:服务器压力大,开发条件受限,只会执行ComponentMount之前的生命周期,第三库使用受限,学习成本大。原理是靠vue-server-renderer这个库的createRenderer(),然后调用rendererToString()。

【谢谢关注和阅读,后续新的文章首发:sau交流学习社区:https://www.mwcxs.top/

Original: https://www.cnblogs.com/chengxs/p/11046599.html
Author: saucxs
Title: 对比分析–浅析SSR(服务端渲染)和SPA(客户端渲染)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544057/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • spring-boot项目打包

    ps:https://start.spring.io/中导入Maven项目时,会默认选择一种打包方式(这里以jar包为例),导入Lombok插件和spring web。 1.打包成…

    Java 2023年6月13日
    063
  • 最近有个朋友的需求,用油猴写了一个插件,可以看五学教育(wuxuejiaoyu.cn)的网课

    湖南环境生物职业技术学院 ,就是以前的湖南生物机电学校,成人高考需要看网课,问我有没有办法.我写了一个油猴插件,一天时间差不多把网课和考试都搞完了…..油猴还真的不错,…

    Java 2023年6月9日
    060
  • Java 在Word指定段落/文本位置插入分页符

    在Word插入 分页符可以 在指定段落后插入,也可以 在特定文本位置处插入。本文,将以Java代码来操作以上两种文档分页需求。下面是详细方法及步骤。 【程序环境】 在程序中导入ja…

    Java 2023年5月29日
    059
  • SpringCloud-Feign

    1. Feign简介 1.1 简介 Feign是Netflix公司开发的一个声明式的REST调用客户端; Ribbon负载均衡、 Hystrⅸ服务熔断是我们Spring Cloud…

    Java 2023年6月7日
    063
  • Mongodb使用总结

    Mongodb使用总结 基于内存操作,便于与网站交互 数据库-集合-文档(存储多种数据类型),我们的操作都是基于单文档进行操作,并且通过冗余字段进行操作 嵌入式数组文档减少了对昂贵…

    Java 2023年6月14日
    0101
  • 【最新版】30分钟教你搭建属于自己的个人博客

    【最新版】30分钟教你搭建属于自己的个人博客 简介: 本教程是以Hexo和Coding pages 为基础,搭建个人的静态博客网站 Hexo Hexo官网 快速、简洁且高效的博客框…

    Java 2023年6月8日
    085
  • JVM快速入门

    JVM的位置 JVM是运行在操作系统之上的。 JVM体系结构 类加载器 类加载器的作用:加载class文件 加载器:①.ApplicationClassLoader应用程序类加载器…

    Java 2023年6月8日
    065
  • 动力节点Spring框架学习笔记-王鹤(三)spring整合MyBatis

    正在学Spring,整理了相关的学习笔记,分享给大家共同进步,视频看的动力节点王鹤老师讲的spring框架,条理非常清晰,够详细 *视频观看地址 将 MyBatis 与 Sprin…

    Java 2023年6月7日
    062
  • 有点长的博客:Redis不是只有get set那么简单

    我以前还没接触Redis的时候,听到大数据组的小伙伴在讨论Redis,觉得这东西好高端,要是哪天我们组也可以使用下Redis就好了,好长一段时间后,我们项目中终于引入了Redis这…

    Java 2023年6月5日
    065
  • 单链表的创建

    void CreateList_H(LinkList &L,int n) //&L 说明L 是引用参数 {//逆序输出n 个元素的值,建立带表头结点的单链表L L=…

    Java 2023年6月5日
    067
  • Mybatis框架–优化过程

    0. 原代码预览 简单实现在数据库中插入数据 public void testInsert() throws IOException { //获取核心配置文件的输入流 InputS…

    Java 2023年6月14日
    082
  • [置顶][水贴]给所有制作同人/独立游戏的同学一些建议

    趁最近搞游戏引擎系列之时给所有制作同人/独立游戏的同学一些建议 当然我想来这个BLog 80%-90% 的人都不是制作同人/独立游戏的同学。 所以说水贴一个。。。 时间: 我记得当…

    Java 2023年5月29日
    062
  • Spring boot中Yml文件的坑

    1、YML配置文件中的值如果是纯数字的话,中间不能使用 “_” 比如配置下面的值: 在项目中注入后的值会变为:2020081801 会默认去掉中间的&#82…

    Java 2023年5月30日
    077
  • Java基础学习总结

    写的这个博客是学习B站狂神说的Java教学视频的学习记录,记录了重点知识以及以前易混淆理解的知识点。本博客可能缺少部分基础知识点,适合像我一样学习Java过程中曾经半途而废的学生。…

    Java 2023年6月9日
    069
  • Java八大基本数据类与对应包装类

    Java的八种基本数据类型 序号 数据类型 字节数 默认值 取值范围 示例 1 byte (位) 1 0 -2^7 ~ 2^7-1 byte b = 10; 2 short (短整…

    Java 2023年6月5日
    044
  • 【转载】vscode配置C/C++环境

    VScode中配置 C/C++ 环境 Tip:请在电脑端查看@零流@火星动力猿 2022.4.12 1. 下载编辑器VScode 官网:https://code.visualstu…

    Java 2023年6月9日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球