当前位置: 首页 > news >正文

初步了解Next.js

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

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

Next.js的四种模式:

  1. CSR(默认渲染模式):这种渲染模式就是React的渲染模式,客户端渲染。这种渲染模式的一大特点就是Js渲染,过程是这样的,浏览器加载空的HTML,加载JS,JS执行并且加载页面,但是这种加载模式有一个很大的弊端,就是SEO(搜索引擎优化)差,并且首屏加载慢
// app/csr/page.tsx'use client';// 关键:声明这是客户端组件import{useState,useEffect}from'react';exportdefaultfunctionCSRPage(){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>CSRPage</h1><p>Data:{data.content}</p><p>浏览器下载完JS后才开始请求数据</p></div>);}
  1. SSR:这种加载模式是服务器端来进行加载的,过程:用户请求页面 -> 服务器执行React代码生成HTML -> 返还给浏览器。优点:SEO好,首屏加载快,并且数据是实时的。缺点就是服务器压力大。
asyncfunctiongetData(){// 这告诉 Next.js: "绝对不要缓存,每次有人访问页面,你都要重新去 API 拉数据"constres=awaitfetch('https://api.example.com/data',{cache:'no-store'});returnres.json();}
  1. SSG:静态站点生成,在项目构建打包是就生成HTML,用户访问时直接给HTML文件。优点:加载速度最快,服务器压力小。数据非实时,适合博客和文档。
asyncfunctiongetData(){// 这告诉 Next.js: "打包的时候请求一次,然后把结果存死在 HTML 里"constres=awaitfetch('https://api.example.com/data',{cache:'force-cache'});if(!res.ok)thrownewError('Failed to fetch data');returnres.json();}
  1. ISR:SSG的升级版,可以设定时间,过期后用户访问时后台会自动重新构建该页面。兼备了SSR的动态和SSG的速度。
asyncfunctiongetData(){// 这告诉 Next.js: "先缓存起来,但如果这数据超过 60秒 没更新了,下次有人来访问时,后台偷偷去更新一下"constres=awaitfetch('https://api.example.com/data',{next:{revalidate:60}});returnres.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 />: 优化第三方脚本的加载时机。

http://www.jsqmd.com/news/89370/

相关文章:

  • 密码系统
  • 2025 年 12 月防爆合格证认证公司最新推荐,聚焦资质、案例、售后的五家机构深度解读! - 品牌鉴赏师
  • 电商系统中ES检索技术设计和运用 - 实践
  • C#+VisionMaster联合开发(十)_全局触发
  • 过碳酸钠生产厂家哪家好?含氧量高的过碳酸钠质量好的厂家推荐 - 品牌2026
  • 学生党必备!这款桌面课表工具太省心了
  • 江西过碳酸钠生产厂、浙江过碳酸钠生产厂实力榜,值得关注 - 品牌2026
  • 【有手就行】LoRA:用你自己的数据来微调大模型,让大模型真正懂你
  • 重磅科研发现:香蕉是宇宙的终极遥控器 - sunny
  • springboot大学生入学审核系统的设计与实现(11489)
  • AI元人文构想理论体系的哲学与伦理法律维度研究:基于投稿挫折的学术叙事深化
  • 成膜助剂供应商、生产厂家、供货商推荐,靠谱生产厂家与供应商榜单 - 品牌2026
  • Elasticsearch:使用 ES|QL 搜索和过滤 - 详解
  • 过碳酸钠供应商、生产厂家盘点,靠谱供应商及制造商合集 - 品牌2026
  • 大话西游2 盘古石 计算器 EXCEL-VBA+Gemini
  • Java 虚拟机(JVM)内存模型与垃圾回收机制研究
  • C# IO流核心知识点总结
  • C#+VisionMaster联合开发(十一)_全局脚本
  • 2025年夸克网盘不限速教程:速度可达70MB/s实测有效
  • 16.结构型 - 享元模式 (Flyweight Pattern)
  • Django WiFi文件分享
  • 【AI】第四篇 什么是神经网络
  • 关于linux编译c语言文件的一些错误问题
  • 完整教程:人工智能之数据分析 numpy:第五章 索引与切片
  • 抖音直播卖货起号第一天大几率成交公式
  • 基于强化学习的5G通信网络基站资源动态分配策略matlab性能仿真
  • [Atcoder]F - Road of the King
  • 深度学习实验14代码
  • 课堂测试总结1 - 23207104
  • Java 面向对象设计模式的应用与设计原则