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

106 阅读3分钟

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

一.CSR、SSR和SSG

CSR

即客户端渲染(Client Side Rendering),现在常用的B端应用web开发模式,前后端分离。渲染在客户端进行,服务器端压力相对来说较小。这样的好处是前端可以使用vue,react等框架进行界面开发,后端只需要关注api,做好返回数据即可。

SSR

即服务端渲染(Server Side Rendering),比较传统的开发方式。在jsp/php时代比较流行。相较于客户端渲染,代码耦合度高,且jsp/php模版语言和前端编程语言混杂,非常难以维护。但是不会给客户端造成太大的压力,不会像客户端渲染一样产生太多卡顿,对用户体验较好。

同构渲染

将服务端渲染和客户端渲染的优点综合起来,前后端都进行渲染。例如在首屏加载时,直接由服务端渲染返回页面,用户就不会在刚进入网页就感觉十分卡顿,而且比纯服务端渲染更利于浏览器SEO。之后的请求都由客户端接管。

SSG

即静态站点生成(Static Site Generation),常用于一些文档站点或静态博客。只能用于静态的网站,无法生成用户相关的内容,每个用户看到的页面都是一样的。常见的SSG工具有hexo、vuepress、vitepress等。

Next.js

NextJs是一个基于NodeJs之上的web开源框架,支持基于React的web程序功能,包括静态及服务器端融合渲染、 支持 TypeScript、智能化打包、 路由预取等功能 无需任何配置。

初始化

npx create-next-app@latest --typescript

getInitialProps

在服务器端执行,只能在页面层面进行绑定,采用同构,首次渲染服务器端渲染,路由跳转使用客户端路由 意味着如果使用router跳转当前页,会在客户端执行这部分逻辑

getServerSideProps

SSR,与getlnitialProps不同的是即使使用router跳转当前页,也只会在服务端执行这部分逻辑

getStaticProps

SSG,在服务器端构建时执行,如果涉及动态路由(带参数),需要使用getStaticPaths配置所有可能的参数情况

CSS Modules

Next.js支持使用文件命名约定的CSS模块。 [name].module.css

Layout

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

文件式路由

Next.js有一个基于页面概念的基于文件系统的路由器。当个文件被添加到pages目录中时,它会自动作为一个路径可用,预定义路由优先级更高,预定义路由能直接匹配的路由就不会分发给下面的动态路由

BFF层的文件式路由

BFF,作为服务器构建包,不影响客户端构建bundle体积。相同的router生成方式,不过是作为API层访问,而不是page。