这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
Next.js学习|青训营笔记
课程目标
B(Business)端应用:用户群体是内部应用,只在内网,主要是解决企业需求的产品
C(Consumer)端应用:消费者,个人用户的产品
CSR,SSR,SSG
CSR (Client-Side Rendering)
客户端渲染,常见B端WEB应用开发模式,前后端分离,服务器压力相对较小,渲染工作在客户端进行,服务器返回不加工的HTML。
此时由于所有资源均需在客户端加载,首屏事件比较长
SSR (Server-Side Rendering)
服务器端渲染,SSR代码耦合度高,且模板语言中混杂编程语言,对于一些复杂功能很难维护
同构SSR
借助虚拟DOM的特性,将一份代码在服务端和客户端各执行一次:
- 服务端使用react-dom包提供的server端渲染api: renderToString (常用)或 renderToStaticMarkup直接渲染出包含页面信息的静态 html字符串。
- 客户端根据渲染出的静态 html 进行二次渲染,做一些绑定事件等交互操作。
SSG (Static Site Generation)
静态站点生成,在构建时直接把页面结构输出html到磁盘(CDN),每次访问直接把html返回给客户端,相当于一个静态资源。
CDN:建立并覆盖在Internet上,由分布在不同区域的边缘节点服务器组成的分布式网络。
相比SSR,因为不需要每次请求都由服务器端处理,所以可以大幅减轻服务器端的压力。
缺陷在于只能生成偏静态的页面,无法生成与用户相关的内容,即所有用户访问界面相同。
SSR,SSG的优势
1.利于SEO(Search Engine Optimization)
B端应用不用管搜索引擎,而C端应用的推广程度会受到搜索引擎的影响。
搜索引擎可以理解为一种爬虫,会爬取指定页面的HTML,并根据用户输入的关键词对页面内容进行排序检索。
SSR,SSG返回HTML中会含有用户搜索的内容,而CSR中没有,因此前者更利于被搜索到。
2. 更短的首屏时间
SSR/SSG只需要请求一个HTML界面就能展示出页面,虽然在服务器上调取接口,但服务器间的通信远比客户端快。因为不再需要请求大量js文件,使得SSR/SSG有更短的首屏时间。
什么是Next.js
基于React提供的相关服务器端渲染API实现,整个过程比较繁琐,从零实现对新手不友好。此时next.js作为封装好的集合可以帮助我们快速上手。
Next.js是一个构建于node.js之上的开源Web开发框架,支持基于React的Web应用程序功能,例如服务端渲染和生成静态网站。
上手快,能力集全,而且覆盖了足够多的性能优化和生态。对于新手很友好。
以下均为实战部分,待我手操成功后再上传详细笔记