这是我参与「第五届青训营 」笔记创作活动的第2天📝
⭐️本堂课重点
- CSR、SSR、SSG
- 什么是 Next.js
- Next.js 客户端开发
- Next.js 服务端开发
- 核心功能
⭐️知识点&实践例子
CSR、SSR、SSG
CSR
客户端渲染(Client-Side Rendering).常见B端WEB应用开发模式,前后端分离,服务器压力相对更轻,渲染工作在客户端进行。SPA:单页面应用,所需资源(HTML、CSS、JS等)在一起请求中就加载完成,不需刷新地动态加载,首屏时间更长。首屏时间:输入链接到打开页面能看到元素的时间。
SSR
SSR(Server-Side Rendering)。从原先的JSP/PHP就已经提现了服务器端渲染。代码耦合度高,这种模式下Java,PHP负责渲染的逻辑,而前端只负责UI和交互。
- 同构SSR
BFF(Backend For Frontend):服务于前端应用的后端。
前后端一体化,一套React代码在服务器上运行一遍,到达浏览器又运行一遍。前端后端都要参与渲染,而且首次渲染出的HTML要一样。
SSG
静态站点生成(Static Site Generation),在构建的时候直接把结果页面输出html到磁盘,每次访问直接把html返回给客户端,相当于一个静态资源。
CDN:建立并覆盖着Internet之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。
优点:不需要每次请求都由服务器端处理,大幅减轻服务器端压力。
缺点:只能用于偏静态的页面,无法生成与用户相关的内容,即所有用户访问的页面相同。
SSR、SSG利于SEO
SSR/SSG只需要请求一个HTML文件就能展现出页面,虽然在服务器上会调取接口,但服务器之间的通信要远比客户端快,甚至是同一台服务器上的本地接口调取。因为不需要请求大量js文件,这就使得SSR/SSG可以拥有更短的首屏时间。
什么是 Next.js
SSR的实现
基于React提供的相关服务器端渲染API实现。
Next.js
Next.js是一个构建于Next.js之上的开源Web开发框架,支持基于React的Web应用程序功能,例如服务端渲染和生成静态网站。
Next.js 客户端开发
Next.js初始化
数据注入
getInitialProps
在服务器端执行,只能在页面层面进行绑定,采用同构,首次渲染服务器端渲染,路由跳转使用客户端路由。
getServerSideProps
与getInitialProps不同的是即使使用router跳转当前页,也只会在服务器端执行这部分逻辑。
getStaticProps
CSS Modules
Layout
通过在入口文件导入layout,可以实现每个页面公共的页眉页尾。
文件式路由
Next.js有一个基于页面概念的基于文件系统的路由器。
BFF层的文件式路由
BFF,作为服务器构建包,不影响客户端构建bundle体积。
路由跳转
header的修改
多媒体适配——CSS适配
多媒体适配——JS适配
大图优化——webp
Next.js 服务端开发
BFF层开发
和Express等开发类似,区别是没有参数可以直接区别请求类型。
核心功能
首页功能实现
- 页面&动画&多媒体适配
- BFF
- Strapi
文章页实现
- 页面&动画&多媒体适配
- BFF
- Strapi分页
- 多媒体格式的转换
主题化功能实现
- 基础样式和背景的抽离
- 主题化context全局注入
- 从注入数据中取出theme和setTheme
- 多进程间的主题同步
⭐️个人总结
通过对这堂课的学习对Next.js有了一个框架认识。了解了CSR、SSR、SSG、什么是 Next.js、Next.js 客户端开发、Next.js 服务端开发以及一些核心功能。同时通过对课上示例代码的阅读分析,进一步掌握了相关知识。