这是我参与「第五届青训营 」伴学笔记创作活动的第14天
CSR
CSR全称是 Client Side Rendering ,代表的是客户端渲染。顾名思义,就是在渲染工作在客户端(浏览器)进行,而不是在服务器端进行。举个例子,我们平时用vue,react等框架开发的项目,都是先下载html文档(不是最终的完全的html),然后下载js来执行渲染出页面结果。
优点
- 前后端分离。前端专注于界面开发,后端专注于api开发
- 服务器压力变轻了,渲染工作在客户端进行
- 用户在后续访问操作体验好
缺点
- 不利于SEO,因为搜索引擎不执行JS相关操作,无法获取渲染后的最终html。
- 首屏渲染时间比较长,因为需要页面执行ajax获取数据来渲染页面,如果请求接口多,不利于首屏渲染
SSR
SSR全称是 Server Side Rendering,代表的是服务端渲染。与客户端渲染不同的是,SSR输出的是一个渲染完成的html,整个渲染过程是在服务器端进行的。例如传统的JSP,PHP都是服务端渲染
ISR
Incremental Site Rendering,增量式的网站渲染
- 关键性的页面(如网站首页、热点数据等)预渲染为静态页面,缓存至 CDN,保证最佳的访问性能;
- 非关键性的页面(如流量很少的老旧内容)先响应 fallback 内容,然后浏览器渲染(CSR)为实际数据;同时对页面进行异步预渲染,之后缓存至 CDN,提升后续用户访问的性能。
页面的更新遵循 stale-while-revalidate 的逻辑,即始终返回 CDN 的缓存数据(无论是否过期);如果数据已经过期,那么触发异步的预渲染,异步更新 CDN 的缓存。
SSG
SSG全称是 Static Site Generation ,代表的是静态站点生成。在构建的时候直接把结果页面输出html到磁盘,每次访问直接把html返回给客户端,相当于一个静态资源
Next.js是一个用于生产环境的React应用框架(官方介绍:The React Framework for Production),使用它可以快速上手开发 React 应用,而不需要花很多时间和精力去折腾各种开发工具。所谓的用于生产环境,是指功能和稳定性足够,有大量的实际应用案例。
"整体来看,Next.js在Node.js Web开发领域是一个非常优秀的SSR框架,其众多优秀特性,外加Blitzjs这种周边生态,对于开箱即用的项目来说是极好的。从架构的角度,笔者以为Next.js是过度设计,从商业的角度,我认同Next.js的做法,易用性应该是开发领域最该重视的核心。"
Next是什么?
基于React,支持csr、ssr、isr、ssg等渲染或用于渲染的生成方式
支持ssr,但只是next.js的一个场景而已
next.js是Node web领域优秀的ssr框架,这只是其一,其实2019年之后,next.js也开始支持serverless了
搭配vercel部署,对serverless支持极好
开箱即用,简单易用
总结
next.js是什么?有哪些优点
易用性极佳,对用户需求理解的极好
重视开发和发布体验
使用Rust解决开发体验
对比cra,umi和next.js,它们之间的差异是什么?
cra是react开发简化的代表
umi借鉴了next和cra,同时对antd支持极好,国内最佳react脚手架
next不只是ssr框架,支持多种渲染模式,它的野心极大,想变成未来开发者的唯一入口
next.js生态除了vercel,还有rust和blitzjs,你都了解吗?
rust生态,提升开发体验,但仅限于工具链。js依然是应用层最受欢迎的语言
blitzjs是基于next,但加入了访问数据的能力,全栈型框架
实现一个框架有哪4方面的思考?
场景、前端框架选型、服务端运行时,构建
好的框架是克制的,unoption的,技术栈无关的
如果站在易用性的角度上看,约定大于配置也许是更好的选择