Next.js 实战项目|青训营笔记

574 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第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

截屏2023-02-1523.24.04.png BFF(Backend For Frontend):服务于前端应用的后端。 前后端一体化,一套React代码在服务器上运行一遍,到达浏览器又运行一遍。前端后端都要参与渲染,而且首次渲染出的HTML要一样。

SSG

静态站点生成(Static Site Generation),在构建的时候直接把结果页面输出html到磁盘,每次访问直接把html返回给客户端,相当于一个静态资源。

截屏2023-02-1523.24.53.png CDN:建立并覆盖着Internet之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。 优点:不需要每次请求都由服务器端处理,大幅减轻服务器端压力。 缺点:只能用于偏静态的页面,无法生成与用户相关的内容,即所有用户访问的页面相同。

SSR、SSG利于SEO

SSR/SSG只需要请求一个HTML文件就能展现出页面,虽然在服务器上会调取接口,但服务器之间的通信要远比客户端快,甚至是同一台服务器上的本地接口调取。因为不需要请求大量js文件,这就使得SSR/SSG可以拥有更短的首屏时间。

截屏2023-02-1523.25.24.png

什么是 Next.js

SSR的实现

基于React提供的相关服务器端渲染API实现。

截屏2023-02-1523.25.53.png

Next.js

Next.js是一个构建于Next.js之上的开源Web开发框架,支持基于React的Web应用程序功能,例如服务端渲染和生成静态网站。

Next.js 客户端开发

Next.js初始化

截屏2023-02-1523.26.34.png

数据注入

截屏2023-02-1523.27.03.png

getInitialProps

截屏2023-02-1523.27.33.png 在服务器端执行,只能在页面层面进行绑定,采用同构,首次渲染服务器端渲染,路由跳转使用客户端路由。

getServerSideProps

截屏2023-02-1523.28.46.png 与getInitialProps不同的是即使使用router跳转当前页,也只会在服务器端执行这部分逻辑。

getStaticProps

截屏2023-02-1523.30.07.png

CSS Modules

Layout

通过在入口文件导入layout,可以实现每个页面公共的页眉页尾。

文件式路由

Next.js有一个基于页面概念的基于文件系统的路由器。

BFF层的文件式路由

BFF,作为服务器构建包,不影响客户端构建bundle体积。

路由跳转

截屏2023-02-1523.32.52.png

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 服务端开发以及一些核心功能。同时通过对课上示例代码的阅读分析,进一步掌握了相关知识。