Next.js| 青训营笔记

62 阅读2分钟

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

一、笔记

客户端渲染CSR Client-Side Rendering:前后端分离,服务器压力相对轻,单页面应用,首屏时间更长,通常是B端页面开发

服务器端渲染SSR Server-Side Rendering

同构SSR:服务端返回的不是一个完整的页面,要保证服务器端和客户端数据同步

静态站点生成SSG:在构建时直接把结果页面输出html返回给客户端,相当于静态资源

SSR、SSG的优势:更短的首屏时间

数据注入方式

getInitialProps:页面刚打开,在服务器端;页面内部跳转,在客户端进行
getServerSideProps:类似,只会在服务器端进行
getStaticProps:SSG getStaticPaths列出不同情况再访问,建议用在量少的情况

CSS Modules,类名后加哈希值,避免重复

文件式路由

预定义路由优先级更高,预定义路由能直接匹配的路由就不会分发给下面的动态路由

路由跳转:next/link跳转,useRouter跳转

header修改,可修改TDK title description keywords

多媒体适配--css

用rem而不是px
不同页面不同效果,可以加不同组件 JS适配

大图优化-webp

服务器端开发

BFF层开发:和express区别:没有参数可以直接区别请求类型
调试方式:JS debug控制台(是服务器端控制台,可以断到);npm run debugger 浏览器的node.js控制台,和正常开发一样

cms内容管理系统

Strapi可以快速搭建 初始化:npx create-strapi-app my-project --quickstart
接口生成过程:
1.content-type builder编辑结构体
2.content manager配置数据源,并且发布
3.settings roles里选择对应角色并勾选要发布的接口类型
4.如果涉及嵌套,在接口后加上populate=deep参数(npm install strapi-plugin-populate-deep --save),加参数populate=* 只能嵌套一层

功能实现

首页功能实现
文章页实现:分页strapi有page pagesize,也不需要额外开发 cms几乎不需要改代码
主题化:theme注入器和setTheme;多进程主题同步,local storage控制
localhost和127.0.0.1是跨域的,主题不同步

二、课程实例

next.js ssr demo
next.js cms