type
Post
status
Published
date
Nov 30, 2025
slug
nextjs-003
summary
Next.js 路由基础
tags
开发
建站
Next.js
category
编程学习
icon
password
😀
 

Next.js 路由基础

Next.js 采用基于文件系统的路由机制,这意味着您只需创建文件和文件夹,框架就会自动为您生成对应的路由结构。这种约定优于配置的设计理念,让路由管理变得简单而直观。

文件系统路由的工作原理

在 Next.js 中,app 目录下的每个文件夹都代表一个路由段(route segment),并直接映射到 URL 路径。无需配置路由表,框架会根据您的文件结构自动处理。

page(页面)

layout && template

layout(布局) 布局是多个页面共享UI,例如导航栏、侧边栏、底部等。挂载一次
template(模板) 基本功能跟布局一样,只是不会保存状态。生命周期会重新走
布局和模板的特点就是:
  • 布局嵌套:支持多层布局嵌套,构建复杂的页面结构
  • 状态管理:布局会在页面切换时保持状态,而模板会重新渲染,useeffect也会重新执行
  • 根布局:app/layout.tsx 是必须存在的根布局文件
  • 渲染顺序:当布局和模板同时存在时,渲染顺序为 layout → template → page
目录结构如下:
app/blog/layout.tsx
app/blog/template.tsx
app/blog/a/page.tsx
app/blog/b/page.tsx
路由结构

loading(加载)

Next.js的loading是借助了Suspense实现的,Suspense的具体用法请参考Suspense 组件
app/blog/loading.tsx
app/blog/a/page.tsx
loading

error(错误)

Next.js的error是借助了Error Boundary实现的。必须是客户端组件
app/blog/error.tsx
app/blog/a/page.tsx
error

not-found(404)

其实Next.js 默认会生成一个404页面,但我们可能自定义404页面,只需要在app目录下创建一个not-found.tsx文件即可
app/not-found.tsx
404页面
预计学习时间: 20 分钟
难度级别: 初级 🟢

笔记1

区别分析

第一种写法

第二种写法

主要区别

1. 类型安全性

  • 第一种:参数对象是可变的,函数内部可以修改 children 属性
  • 第二种:参数对象是只读的,TypeScript 会阻止任何修改尝试

2. 编译时检查

3. 最佳实践

  • 第一种:适用于简单场景,但缺乏额外的安全保障
  • 第二种推荐做法,特别是在 React 组件中,因为:
    • 防止意外修改 props
    • 更好的类型安全性
    • 符合 React 的最佳实践(props 应该是不可变的)

4. 实际效果

两种写法在运行时没有性能差异,都是编译时的类型检查。Readonly<T> 只是 TypeScript 的工具类型,用于将所有属性设为只读。

建议

在 React 组件中,始终使用第二种写法(带 Readonly),因为它提供了更好的类型安全性,符合 React 的不可变数据理念。
 

笔记2

如果在验证layout 和template时, 控制台输出打印两次,可以按照下面的方式,在配置中把严格模式设置成false
reactStrictMode:false,//关闭严格模式
notion image
notion image

📎 参考文章

 
💡
欢迎您在底部评论区留言,一起交流~
 
上一篇
第一节 大脑:重新认识你自己
下一篇
Harness Engineering - 搭建Mini Harness
Loading...