这是我参与第五届青训营伴学笔记创作活动的第9天
CSR SSR SSG
- CSR
- 客户端渲染(Client-Side Rendering),常见于B端Web应用开发模式,前后端分离开发,服务器压力相对更轻,渲染工作在客户端进行,服务器直接返回不加工的HTML用在在后续访问操作。
- SSR
- Server-Side Rendering不是新鲜概念, JSP/PHP已经体现服务器渲染
- JSP/PHP使用耦合度很高,模板语言混杂各种编程语言。
- 同构SSR
- BFF(Backend For Frontend) 服务于前端的后端
- SSG
- 静态站点生成(Static Site Generation)在构建时直接把结果页面输出html到磁盘,每次访问把html返回给服务端,相当于一个静态资源
- CDN:建立在覆盖在Internet之上,有分布在不同区域的边缘节点服务器群组成的分布式网络
- 对比SSG SSR
- SSG不需要每次请求都由服务器处理,大幅度减轻服务器端的压力
- SSG缺陷所有用户访问的页面都是一样的
- SSR SSG优势
- 利于SEO
- 搜索引擎对关键词的排序检索,用户搜索词可以在服务端返回的html页面中找到关键词利于SEO
- 更短的首屏时间
- 只需要一个HTML文件就可以展示页面,服务器端的通信会比客户端快很多,不再需要大量的js文件
- 利于SEO
什么是Nextjs
- React有SSR API但是有很多重复的工作
- Nextjs基于React提供相关服务端渲染API实现,
- Next.js是一个构建于Node.js之上的开源Web 开发框架,支持基于React的Web应用程序功能,例如服务端渲染和生成静态网站。上手快,能力集全,而且覆盖了足够多的性能优化和生态。对于新同学掌握前后端一体化的开发模式很友好。
最重要的三个部分
- getInitialProps
- 在走内部跳转的时候会在客户端走
- 直接访问页面是走服务器端 (f5刷新)
- getServerSideProps 推荐
- SSR 永远只走服务器端
- getStaticProps
- SSG 在服务端构建时执行,涉及动态路由(带参数)需要使用该api配置所有可能的参数情况
- 适用于量固定并且数量不是很多的情况
Nextjs客户端开发
Layout
- 定义Layout组件
文件式路由
NextJs有一个基于页面概念的基于文件系统的路由。当一个文件被添加到pages中时,它会自动作为一个路径可用
- 预定义路由优先级更高,预定义路由直接匹配的路由就不会分发给下面的路由
BFF层的文件式路由
- BFF作为服务器构建包,不影响客户端构建bundle体积,相同的router生成方式,不过是作为API层访问,而不是page
路由跳转方式
- next/link
- useRouter
- 原生方法跳转
header修改
- 可用于修改TDK (title description keywords)
多媒体适配
- CSS适配
- 使用rem
- 使用rem
- JS适配
大图优化-webp
Nextjs服务端开发
- Strapi - headless CMS
核心功能讲解
首页功能
文章页实现
主体化功能实现
总结
- 为什么需要nextjs
- 什么是nextjs
- c端 b端
- c端对seo要求较高 搜索引擎排名要靠前
- 同构ssr
- 服务器端 和 客户器端需要所有事情同步做一遍
- 脱水和注水 三种注入的方式保证客户端和服务端数据同步 最重要的三个部分
- NextJs去除了React中重复的操作
- 服务器端 和 客户器端需要所有事情同步做一遍
- ssr和ssg区别
- 客户端开发
- 数据注入
- 服务端开发
- BFF层 不生产数据 只搬运数据