nextjs 学习笔记

347 阅读2分钟

项目构建

基础依赖:

npm install next react react-dom

script

    "dev": "next dev",   // 开发模式
    "build": "next build", // 构建
    "start": "next start", //生产模式

路由

nextjs 根据文件pages目录下的文件自动生成页面路由 nextjs自动为每个页面生成一个独立的js和css文件(只有访问到该页面时所需的代码才会加载)

    pages/index ---- /
    pages/about ---- /about
    pages/hello/world ---- /hello/world
    pages/[params] ------ /参数 (可以过路径进行路由传参和实现动态路由)

nextjs 的路由切换不会完全重新加载页面

代码分割

  • 页面分割:(自动处理页面分割代码)
  • 动态导入组件--按需加载

预渲染

静态生成(Static):

在构建时(build Time):生成所有可能的页面的静态html 适用于:在构建时就已经可以确定内容的页面(文章博客,产品列表等)

getStaticPorps

可以通过getStaticProps在静态生成中获取数据,通过props传递给页面

export async function getStaticProps(context) {
  const { params } = context; //
  const data = getData();     // 获取数据
    return {
    props: {                 // props的方式传递给页面
      data,
    },
  };
}

getStaticPaths

动态生成多个静态页面时,可以使用getStaticPaths,该函数返回一个对象,包含动态生成的所有可能的路径(即动态路由[id]),

fallback:

  • false: 请求的路径没有包含在静态渲染中就返回404页面
  • true: 请求被暂时挂起等待数据被获取,自动生成缺失的页面,并缓存
  • blocking:与true相似,但会阻塞请求。

服务端渲染

每次请求的时候在服务器生成静态的HTML的页面预渲染方式

适用于:内容在每次请求的时候才能确定。

getServerSideProps

服务端渲染获取数据,通过props传递到页面中

export async function getServerSideProps(context) {
  const { params } = context;
  const data = getData();
  return {
    props: {
      data,
    },
  };
}

静态资源、优化

图片优化(Image组件)

支持图片尺寸的调整等。

head 组件

可以通过该组件对页面的head进行修改

Script 组件

对加载外部脚本进行优化 strategy:脚本加载策略

  • 'beforeInteractive':在页面加载时加载脚本,脚本完成后再继续页面加载。
  • 'afterInteractive':在页面交互时(例如点击、输入等)加载脚本,适用于异步加载不影响首屏加载性能的脚本。
  • 'lazyOnload':空闲时加载脚本

onLoad