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

【前端面试】挖掘做过的nextJS项目(上)

为什么使用nextJS

需求:

快速搭建宣传官网

1.适应pc、移动端

2.基本的路由跳转

3.页面渲染优化

4.宣传的图片、视频资源的加载优化

5.seo优化

全栈react web应用、

tailwind css原子工具的支持,方便书写响应式ui

app router(React 服务器组件)支持服务器渲染优化、code-spilit优化

next/image、next/video的优化支持

服务端渲染对seo友好

基础

介绍 | Next.js 中文网

构建全栈 Web 应用的 React 框架。可以使用 React Components 来构建用户界面,并使用 Next.js 来实现附加功能和优化。

在底层,Next.js 还抽象并自动配置 React 所需的工具,例如打包、编译等。这使你可以专注于构建应用,而不是花时间进行配置。

使用 Next.js 的脚手架工具 create-next-app 来快速创建一个新的 Next.js 项目。

npx create-next-app@latest

create-next-app 提供了一些选项来定制你的 React 项目,包括但不限于:

  • 使用 TypeScript 初始化项目 (--typescript 或 --ts)。
  • 初始化 JavaScript 项目 (--javascript 或 --js)。
  • 集成 Tailwind CSS (--tailwind)。
  • 初始化带有 ESLint 配置的项目 (--eslint)。
  • 使用 App Router (--app)。
  • 在 src/ 目录中初始化项目 (--src-dir)。
  • 启用 Turbopack (--turbo)。
  • 指定导入别名 (--import-alias)。
  • 初始化一个空项目 (--empty)。
  • 指定包管理器 (--use-npm--use-yarn--use-pnpm--use-bun)。

路由

App Router

版本 13 中,Next.js 引入了基于 React 服务器组件 构建的新 App Router

App Router 在名为 app 的新目录中工作。app 目录与 pages 目录一起工作,以允许增量采用。这允许你将应用的某些路由选择为新行为,同时将其他路由保留在 pages 目录中以实现以前的行为。App Router 的优先级高于 Pages Router。

在 next.config.js 中将 experimental.clientRouterFilter 设置为 false。禁用此功能后,默认情况下,页面中与应用路由重叠的任何动态路由将无法正确导航。

React 服务器组件允许你编写可以在服务器上渲染和选择性缓存的 UI。在 Next.js 中,渲染工作被路由段进一步分割,以实现流式渲染和部分渲染,并且存在三种不同的服务器渲染策略:

page router

默认情况下,Next.js 使用服务器组件。这允许你自动实现服务器渲染,无需额外配置,并且你可以在需要时选择使用客户端组件

客户端组件允许你编写 在服务器上预渲染 的交互式 UI,并且可以使用客户端 JavaScript 在浏览器中运行。

路由导航

Next.js 有四种在路由之间导航的方法:

  • 使用 <Link> 组件

  • 使用 useRouter 钩 (客户端组件)

  • 使用 redirect 功能 (服务器组件)

  • 使用原生 历史 API

API 路由

API 路由提供了使用 Next.js 构建公共 API 的解决方案。

文件夹 pages/api 内的任何文件都会映射到 /api/*,并将被视为 API 端点而不是 page。它们只是服务器端打包包,不会增加客户端打包包的大小。

相关文章:

【前端面试】挖掘做过的nextJS项目(上)

为什么使用nextJS 需求: 快速搭建宣传官网 1.适应pc、移动端 2.基本的路由跳转 3.页面渲染优化 4.宣传的图片、视频资源的加载优化 5.seo优化 全栈react web应用、 tailwind css原子工具的支持&#xff0c;方便书写响应式ui app router(React 服务器组件)支持服务器渲…...

【Unity-UGUI】UGUI知识汇总

目录 前言1 UGUI系统原理2 事件系统2.1 EventSystem2.2 InputModules2.3 Raycasters2.4 协作 3 UGUI系统的组件3.1 Image和RawImage3.2 Mask和RectMask2D 扩展UI穿透问题 前言 记录一些最近学到的有关UGUI的知识。 参考 知乎&#xff1a;6千字带你入门UGUI源码 书籍&#xff…...

JavaScript性能测试:策略、工具与实践

在Web开发中&#xff0c;性能测试是确保应用程序达到预期响应速度和处理能力的关键步骤。JavaScript作为构建交互式Web应用的核心语言&#xff0c;其性能直接影响用户体验。本文将详细介绍如何使用JavaScript进行性能测试&#xff0c;包括性能测试的基本概念、测试类型、工具、…...

嵌入式软件开发学习一:软件安装(保姆级教程)

资源下载&#xff1a; 江协科技提供&#xff1a; 资料下载 一、安装Keil5 MDK 1、双击.EXE文件&#xff0c;开始安装 2、 3、 4、此处尽量不要安装在C盘&#xff0c;安装路径选择纯英文&#xff0c;防止后续开发报错 5、 6、 7、弹出来的窗口全部关闭&#xff0c;进入下一步&a…...

SpringMVC学习中遇到的不懂注解记录

文章目录 Autowrite 和 ResourceQualifier 和 PrimaryPathVariableController、Service、Repository 和 Component Autowrite 和 Resource 我们先讲讲 Autowrite 注解 吧。 public class StudentService3 implements IStudentService {//Autowiredprivate IStudentDao studentD…...

Java面试题--分布式锁

分布式锁 你说一下什么是分布式锁 分布式锁是在分布式/集群环境中解决多线程并发造成的一系列数据安全问题.所用到的锁就是分布式锁&#xff0c;这种锁需要被多个应用共享才可以&#xff0c;通常使用Redis和zookeeper来实现。 分布式锁有哪些解决方案 常用的三种方案 基于…...

一文讲清数据平台与数据中台的关系与区别

前言 如果您是IT领域或者数据领域的从业者&#xff0c;一定对IT行业“创造”概念的能力深有体会&#xff0c;也一定经常被看起来名称相似&#xff0c;但又不同的各种概念绕的云里雾里&#xff0c;摸不着头脑。今天我们要讨论的是数据平台和数据中台两个概念&#xff0c;您是不…...

Android的Service和Thread的区别

Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。 Android Service是组件&#xff0c;既不能说它是单独的进程也不能说它是单独的线程。 如果非要从通俗的语言层面来理解的话&#xff0c;姑且将其理解为对象。这个Service对象本身作为应用程序的一部分与它的…...

经纬恒润亮相第四届焉知汽车年会,功能安全赋能域控

8月初&#xff0c;第四届焉知汽车年会在上海举行。此次年会围绕当下智能电动汽车的热点和焦点&#xff0c;聚焦于智能汽车场景应用、车载通信、激光雷达、智能座舱、功能安全、电驱动系统等多个领域&#xff0c;汇聚了来自OEM、科技公司、零部件供应商、测试认证机构、政府院校…...

掌握JavaScript单元测试:最佳实践与技术指南

单元测试是软件开发过程中的关键环节&#xff0c;它帮助开发者确保代码的每个独立部分按预期工作。在JavaScript开发中&#xff0c;进行单元测试不仅可以提高代码质量&#xff0c;还可以加快开发速度&#xff0c;因为它们为代码更改提供了安全网。本文将详细介绍如何使用JavaSc…...

spring boot 古茶树管理系统---附源码19810

目 录 摘要 1 绪论 1.1 研究背景 1.2国内外研究现状 1.3论文结构与章节安排 2古茶树管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2经济可行性分析 2.1.3操作可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 …...

00067期 matlab中的asv文件

今天在编写代码的过程中&#xff0c;发现自动生成.m文件的同名文件.asv&#xff0c;特此发出疑问&#xff1f;下面是解答&#xff1a; 有时在存放m文件的文件夹中会出现*.asv   asv 就是auto save的意思&#xff0c;*.asv文件的内容和相应的*.m文件内容一样&#xff0c;用记…...

JMeter高效管理测试数据-参数化

文章目录 1.什么是参数化2.定义变量3.CSV数据文件设置 1.什么是参数化 在JMeter中&#xff0c;参数化是一种常用的技术&#xff0c;用于使测试场景更加灵活和动态。通过参数化&#xff0c;你可以让JMeter在每次请求中使用不同的值&#xff0c;这在模拟真实用户行为或测试不同输…...

python学习之writelines

在Python中&#xff0c;writelines() 是一个方法&#xff0c;它属于文件对象&#xff0c;用于将字符串列表写入到文件中。这个方法接受一个序列&#xff08;如列表或元组&#xff09;作为参数&#xff0c;序列中的每个元素都是要写入的一行文本。 ### 函数定义&#xff1a; p…...

STM32学习笔记13-FLASH闪存

FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口&#xff08;外设&#xff09;可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途&#xff1a; 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 通过在…...

UIButton的UIEdgeInsetsMake属性(setTitleEdgeInsets,setImageEdgeInsets)

一.UIEdgeInsetsMake的四个属性 UIEdgeInsetsMake 有四个属性,依次是 Top,left,bottom,right [Btn setTitleEdgeInsets:UIEdgeInsetsMake( top, left, bottom, right)]; 四个属性的默认值为0,拿其中一个left属性来聊, 你可以理解为文字距离Btn左边界的“位移”是0, 如果…...

子网掩码是什么?

子网掩码&#xff08;Subnet Mask&#xff09;是用于划分网络的一个32位的二进制数&#xff0c;用于指示IP地址中哪些位用于网络标识&#xff0c;哪些位用于主机标识。 在IPv4网络中&#xff0c;IP地址由32位二进制数组成&#xff0c;通常表示为四个十进制数&#xff0c;每个数…...

SQLALchemy 数据的 CRUD 操作

SQLALchemy 数据的 CRUD 操作 导入必要的模块创建数据库引擎创建会话CRUD 操作创建(Create)读取(Read)更新(Update)删除(Delete)过滤条件使用 `filter` 方法使用 `filter_by` 方法总结聚合函数使用ORM接口使用SQL表达式语言注意关闭会话注意事项SQLAlchemy 是一个流行的…...

reactFiberLane

Lane (车道模型) 英文单词lane翻译成中文表示"车道, 航道"的意思, 所以很多文章都将Lanes模型称为车道模型 Lane模型的源码在ReactFiberLane.js, 源码中大量使用了位运算(有关位运算的讲解, 首先引入作者对Lane的解释(相应的 pr), 这里简单概括如下: Lane类型被定义…...

Hackademic.RTB1靶场实战【超详细】

靶机下载链接&#xff1a;https://download.vulnhub.com/hackademic/Hackademic.RTB1.zip 一、主机探测和端口扫描 nmap 192.168.121.0/24 ip:192.168.121.196 端口:22、80 二、访问80端口 发现target可点击 点击后跳转&#xff0c;页面提示目标是读取到 key.txt 文件 fin…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...