news 2026/2/6 6:32:23

初步了解Next.js

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
初步了解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 />: 优化第三方脚本的加载时机。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 16:05:27

Java 虚拟机(JVM)内存模型与垃圾回收机制研究

Java 虚拟机&#xff08;JVM&#xff09;是Java跨平台特性的核心&#xff0c;其内存模型与垃圾回收&#xff08;GC&#xff09;机制是Java领域的重要学术研究课题&#xff0c;直接决定了Java程序的运行效率与稳定性。JVM 内存模型将运行时数据区分为方法区、堆、虚拟机栈、本地…

作者头像 李华
网站建设 2026/1/29 11:11:42

Java 面向对象设计模式的应用与设计原则

设计模式是Java面向对象编程的高级应用形式&#xff0c;是对软件开发中常见问题的标准化解决方案&#xff0c;也是Java学术研究与工程实践的重要结合点。GoF&#xff08;四人组&#xff09;提出的23种设计模式&#xff0c;基于封装、继承、多态的核心特性&#xff0c;将代码设计…

作者头像 李华
网站建设 2026/2/5 17:40:49

AC15启动项分析,漏洞分析

1、固件模拟sudo chroot . sh /bin/httpd第一个问题&#xff0c;监听ip有问题我们需要配置网卡sudo brctl addbr br0sudo ifconfig br0 192.168.100.3这里我们设置br0网卡&#xff0c;启动web成功启动&#xff0c;这里监听的就是我们设置的ip这里我们可以运行这个脚本&#xff…

作者头像 李华
网站建设 2026/2/3 7:14:57

二、python语法基础

一、前言与概述前面了解了python安装以及环境的准备&#xff0c;下面是关于python语法基础的一个概要&#xff1a;二、语法内容&#xff08;一&#xff09;、基础语法开始之前&#xff1a;注释代码# 单行注释 """ 多行注释 """多行注释 1、变量与…

作者头像 李华
网站建设 2026/2/5 14:32:37

2025动漫剧本推荐,无需成本轻松创作

2025动漫剧本推荐&#xff0c;无需成本轻松创作动漫作为一种深受大众喜爱的艺术形式&#xff0c;拥有着庞大的受众群体。而一个优秀的动漫剧本&#xff0c;则是动漫作品成功的关键。在2025年&#xff0c;有哪些值得推荐的动漫剧本创作工具呢&#xff1f;本文将为您介绍一款无需…

作者头像 李华
网站建设 2026/2/5 19:40:15

Linux 进程管理

在 Linux C/C 开发中&#xff0c;进程管理是系统编程的核心知识点之一。从父子进程的创建、进程的终止到僵尸进程的避免&#xff0c;每一个环节都影响着程序的稳定性。本文将从基础概念到实践代码&#xff0c;详细讲解 Linux 进程管理的关键技术。一、父子进程&#xff1a;写时…

作者头像 李华