初步了解Next.js

Next.js是React的一个超集框架,为什么会有Next.js这个框架存在呢,因为它可以解决React的痛点,就是客户端渲染

Next.js的一大亮点就是支持多模式混合渲染,分别有四种模式,CSR,SSR,SSG,ISR,然后我开介绍一下这四种模式是什么以及他们分别是如何渲染的。

Next.js的四种模式:

  1. CSR(默认渲染模式):这种渲染模式就是React的渲染模式,客户端渲染。这种渲染模式的一大特点就是Js渲染,过程是这样的,浏览器加载空的HTML,加载JS,JS执行并且加载页面,但是这种加载模式有一个很大的弊端,就是SEO(搜索引擎优化)差,并且首屏加载慢
js 复制代码
// app/csr/page.tsx
'use client'; // 关键:声明这是客户端组件

import { useState, useEffect } from 'react';

export default function CSRPage() {
  const [data, setData] = useState(null);
  const [isLoading, setLoading] = useState(true);

  useEffect(() => {
    // 浏览器端发起请求,就像传统的 React 一样
    fetch('https://api.example.com/data')
      .then((res) => res.json())
      .then((data) => {
        setData(data);
        setLoading(false);
      });
  }, []);

  if (isLoading) return <p>Loading...</p>;
  if (!data) return <p>No data</p>;

  return (
    <div>
      <h1>CSR Page</h1>
      <p>Data: {data.content}</p>
      <p>浏览器下载完 JS 后才开始请求数据</p>
    </div>
  );
}
  1. SSR:这种加载模式是服务器端来进行加载的,过程:用户请求页面 -> 服务器执行React代码生成HTML -> 返还给浏览器。优点:SEO好,首屏加载快,并且数据是实时的。缺点就是服务器压力大。
js 复制代码
async function getData() {
  // 这告诉 Next.js: "绝对不要缓存,每次有人访问页面,你都要重新去 API 拉数据"
  const res = await fetch('https://api.example.com/data', { 
    cache: 'no-store' 
  });
  
  return res.json();
}
  1. SSG:静态站点生成,在项目构建打包是就生成HTML,用户访问时直接给HTML文件。优点:加载速度最快,服务器压力小。数据非实时,适合博客和文档。
js 复制代码
async function getData() {
  // 这告诉 Next.js: "打包的时候请求一次,然后把结果存死在 HTML 里"
  const res = await fetch('https://api.example.com/data', { 
    cache: 'force-cache' 
  });
  
  if (!res.ok) throw new Error('Failed to fetch data');
  return res.json();
}
  1. ISR:SSG的升级版,可以设定时间,过期后用户访问时后台会自动重新构建该页面。兼备了SSR的动态和SSG的速度。
js 复制代码
async function getData() {
  // 这告诉 Next.js: "先缓存起来,但如果这数据超过 60秒 没更新了,下次有人来访问时,后台偷偷去更新一下"
  const res = await fetch('https://api.example.com/data', { 
    next: { revalidate: 60 } 
  });
  
  return res.json();
}

Next.js的路由系统:

Next.js使用的文件系统路由,不需要想React-router一样配置路由表

  1. Pages Router(旧的路由):文件放在pages/ 目录下,通过操控文件名,可以生成动态路由和静态路由。在数据获取方面,需要使用getStaticProps来实现SSG静态站点渲染,使用getServerSideProps实现SSR服务器端渲染。
  2. App Router(Next.js新特性):文件放在app/ 目录中,比pages路由方式不一样的是可以通过layout文件来定义全局和局部的布局,然后就是自带了一层渲染方式,RSC渲染方式,过程:HTML发给浏览器,JS代码不会发给浏览器,浏览器只负责渲染,不负责逻辑

组件:

Next.js自带了一些组件

  • <Image />: 自动根据视口大小调整图片尺寸、格式、懒加载。防止布局偏移。

  • <Link />: 类似于 <a> 标签,但当链接出现在视口中时,Next.js 会自动预加载目标页面的代码,让跳转极其流畅。

  • <Script />: 优化第三方脚本的加载时机。

相关推荐
哭哭啼几秒前
JAVA服务问题诊断
java·开发语言·jvm
小灰灰搞电子7 分钟前
Rust+Slint 实现温度计源码分享
前端·rust·slint
计算机魔术师16 分钟前
面壁智能 OpenBMB 推出 MathForm,面向 Lean 4 数学自动形式化的开源框架、数据集与模型
前端
NeilCarmack39 分钟前
Deepseek-harness增加桌面版端序列:第 2 讲 · spawn Electron:当前进程如何“交棒“
前端·javascript·electron
上海魁鲸科技有限公司1 小时前
APS高级排产系统到底有什么用?一文讲清功能、选型与落地建议
前端·microsoft·excel
陈随易1 小时前
Bun v1.4 更新总结:把浏览器、图片、定时任务和工程工具都装进一个运行时
前端·后端·程序员
CRMEB定制开发2 小时前
2026年最值得推荐的10大开源商城系统盘点
开发语言·人工智能·开源·商城系统·小程序商城
buhuizhiyuci2 小时前
【QT-百日筑基篇】修真世界摸爬滚打多年,终于黄天不负有心人,突破炼器中期——常用控件QWight的属性
开发语言·c++·qt·gui·图形化
东风破_3 小时前
TypeScript 高级类型进阶:keyof、Exclude、Record 与类型组合思想
前端·后端·typescript
DS随心转插件3 小时前
Grok生成的html怎么导出——AI导出鸭:大模型结构化输出的“最后一公里”工程化解构
前端·人工智能·ai·html·豆包·deepseek·ai导出鸭