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

80 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

Next.js是React的Web开发框架,允许开发者创建全栈应用。

CSR SSR SSG

CSR

客户端渲染(Client-SideRendering)常见B端WEB应用开发模式,前后端分离,服务器压力相对更轻,渲染工作在客户端进行,服务器直接返回不加工的HTML,用户在后续访问操作。这种模式利于SEO

SPA(single page application):单页面应用,他所需的资源在一次请求中就加载完成,不需刷新地动态加载,首屏时间更长

SSR

SSR(Server-SideRendering),从传统的JSP/PHP就已经体现了服务端渲染,这种模式的缺点也很显而易见,即代码耦合度高,且模板语言中混杂编程语言对于一些复杂的功能,维护起来很痛苦

BFF: Backend For Frontend,服务于前端应用的后端

SSG

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

CDN: 建立并覆盖在Internet 之上,由分布在不同区域的边缘节点服务器群组成的分布式网络

这种模式优点是可以大幅减轻服务器端的压力,缺点在于只能用于偏静态的页面,无法生成与用户相关的内容(适合文档站开发)

Why

基于 React 提供的相关服务器端渲染 API 实现,整个过程实现比较繁琐重复,从零实现对新上手同学很不友好,于是迫切需要一个封装好的集合来快速上手服务器端渲染

What

Next.js是一个构建于Node.js之上的开源 Web开发框架,基于React,,上手快,能力集全,大厂开发,性能好,而且生态系统完善,对于新手掌握全栈Web开发很友好

客户端开发

Get Started

Next的官方文档非常完善,几行命令即可创建出一个脚手架

npx create-next-app@latest --typescript
# or 
yarn create next-app --typescript
# or 
pnpm create next-app --typescript

然后直接启动即可在3000端口看到欢迎页面

数据注入

image.png

  • getInitialProps在服务器端执行,只能在页面层面进行绑定,采用同构,首次渲染服务器端渲染,路由跳转使用客户端路由
  • getServerSideProps,SSR,与 getInitialProps 不同的是即使使用 router 跳转当前页,也只会在服务端执行这部分逻辑
  • getStaticProps,SSG,在服务器端构建时执行 如果涉及动态路由(带参数),需要使用getStaticPaths 配置所有可能的参数情况

文件式路由

类似于Nuxt,Next.js 有一个基于页面概念的基于文件系统的路由器。当一个文件被添加到 pages 目录中时,它会自动作为一个路径可用,这种路由系统非常直观易懂

多媒体适配

可以用SCSS写出非常简洁易懂的CSS适配

image.png JS多媒体适配

image.png

大图优化

为了节约昂贵的服务器宽带/CDN费用,可以将图片转换为压缩率更高的webp格式

image.png

服务端开发

Debug

image.png

Strapi

优秀开源的无前端CMS,100%由JS写成且高度可定制化 仓库地址https://github.com/strapi/strapi