next.js知识点速记

205 阅读2分钟

路由机制

  • next.js采用基于路径的路由机制
  • 可以通过[变量名].js的形式声明为动态路由
  • 通过404.tsx设置404页面

前端渲染方式

  • CSR
    • 客户端渲染,SPA中使用最多的渲染方式
    • 服务器响应速度快
    • 页面交互能力强
    • 初始加载完成后渲染速度快
    • 不利于SEO
    • 首屏加载慢
  • SSR
    • 服务器渲染,服务器返回html结构给客户端,客户端直接渲染
    • 和CSR只返回一个id为root的div标签不同,SSR返回完整页面,利于SEO
    • 首屏加载快
    • 便于前后端分离
    • 服务器压力大
    • 前后端耦合
  • SSG
    • 静态页面渲染,服务器返回静态的html页面给客户端,客户端直接渲染
    • 利于SEO
    • 首屏加载快
    • 不支持页面交互
  • next.js基于React,支持csr、ssr、ssg、isr等渲染或用于渲染的生成方式

预渲染

next.js通过导出特定函数的形式进行不同的预渲染方案

  • getStaticProps 静态渲染,页面内容取决于外部数据,通过revalidate属性设置重新生成页面的时间,单位为秒
  • getStaticPath 静态渲染,页面路径取决于外部数据,返回的参数列表将循环调用getStaticProps以生成静态页面,通过返回的fallback决定返回的参数列表与url需要的参数不同时的行为
  • getServerSide 服务端渲染,一般用于页面数据更新快的情况

样式

  • 全局样式表
    • 在pages/_app.js导入pubilc/中的css文件
  • node_modules目录导入css文件
    • 可以在任何位置把node_modules目录的CSS文件导入,例如antd与bootstrap
  • 组件级
    • 将命名约定为[name].module.css的css文件作为模块引入
  • CSS-in-JS
    • 在组件的jsx中直接创建Style标签,在Style标签内写样式

常用内置组件

  • Head
    • Head组件可以使页面方便SEO
    • 为了每个页面都只渲染一次,推荐设置key,多次设置Head组件,则只会显示最后一个Head组件
  • Link
    • 类似a标签,用于页面跳转
  • Script
    • 引入脚本,可设置加载策略,如在页面变为交互式前,后,空闲时加载脚本
  • Image
    • 图片组件,默认懒加载,可以设置图片质量,填充方式等
    • tip:为了安全考虑,如果使用外部URL引入图片,则需要在next.config.js中配置nextConfig.images.domains属性

路由钩子

  • useRouter
    • 可获取路由的参数,跳转路由,刷新页面等
    • 通过Router.events.on(钩子名,回调函数)注册
      • routerChangeStart(路由变化开始时)
      • routerChangeComplete(路由变化结束时)
      • routeChangeError(路由跳转出错)
      • beforeHistoryChange(浏览器history出发前)
      • hashChangeStart(hash跳转开始时)
      • hashChangeComplete(hash跳转结束时)