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

74 阅读2分钟

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

课程目标

  • 开发C端web应用

  • B端(内网,内部用户)

  • C端(外网,外部用户)

CSR, SSR, SSG

CSR(Client-Side Rendering)

  • 常见B端WEB应用开发模式,前后端分离,服务器压力相对更轻,渲染工作在客户端进行,服务器直接返回不加工的HTML用户在后续访问操作
  • 首屏时间更长
  • 不能让搜索引擎拿到所有标签

SSR(Server-Side Rendering)

  • 服务器端渲染
  • 老SSR
    • 代码耦合度高,模板语言中混杂多语言,维护困难
  • 同构SSR
    • 前后端一体化:一套React代码在服务器上运行一遍,到达浏览器又运行一遍。前后端都要参与渲染,且首次渲染的HTML相同

SSG(Static Site Generation)

  • 效果与SSR相似

  • 在构建是把HTML输入磁盘,每次访问直接把HTML返回客户端,相当于一个静态资源

  • 更加节省服务端资源

  • 不灵活

  • 同构保证事件触发

  • 脱水与注水保证多端同步

什么是 Next.js

  • 基于Node.js做的开源框架,掌握前后端一体化
  • 虽然React有SSR但不满足需求,Next.js更加好用,高效
  • getInitialProps:SSR,两端走需兼容Node和V8
  • getServerSideProps:SSR,从服务端走
  • getStaticProps:SSG,所有情况存入CDN
  • 文件式路由
    • 有一个基于页面概念的基于文件系统的路由器。当一个文件被添加到pages目录中时,他会自动作为一个路径可用
    • 预定义路由优先级更高,预定义路由能直接匹配的路由就不会分发给下面的动态路由
  • CSS适配

image.png

  • JS适配
  • 大图优化-webp
    • 网卡优化
    • 可以直接转
  • CMS
    • 数据管理平台(运营),简单的数据维护
    • Strapi:快速搭建CMS
  • 主题化功能实现
    • 基础样式和背景的抽离
    • 主题化context全局注入
    • 从注入数据中取出theme和setTheme
    • 多进程间的主题同步