Next.js 中的一些文件约定
前言
针对 app route 模式,记录一下。
路由文件
API Reference: File Conventions | Next.js
default
针对 Parallel route fallback page
, 没有对应匹配的路由的兜底展示页面,如果不设置, 整体页面会显示 404, 一般返回 null
即可,如果不需要对应路由的匹配,连page.tsx
都不需要。项目示例:nextgram/app/@modal at main · vercel-labs/nextgram
@folder
的命名方式,是 solt 占位, 里面的目录命名,如果符合 (.)
, (..)
, (..)(..)
, (...)
开头的, 会自动匹配外层的路由展示,使得在页面内做 <Link />
组件跳转的时候,优先使用 @folder
中的页面。
loading
suspense 的 loading 组件。
error
ErrorBoundary 组件。
global-error
layout 报错的替代的错误页面
not-found
404 页面, 但是内嵌子页面的话,默认都是走到了 app
下全局的 not-found
, 如果需要自己判断的话, 比如某个 id 不存在,展示 404, 需要 import { notFound } from 'next/navigation';
调用 notFound()
, 才会跳转到当前目录下的 not-found
. 配合国际化, 还需要注意, Next.js 如何在 i18n 场景下处理 404 页面
layout
布局, 可以使用 @folder
定义的目录,作为 props 传递。
page
具体的页面
route
具体的 API
template
it is rendered between a layout and its children.
和 layout
有点类似,但在页面切换的时候,状态会重置。尽管较为罕见,但如果您有需要的话,您可以选择使用模板而不是布局。
它的渲染在 layout
和 page
之间,包裹了一层。
(folder)
这一层,逻辑上面的包裹,使得下面目录的路由,可以共享 layout
, error
, loading
等组件。
_folder
私有目录,不会被 next.js 处理。
Route Segment Config
File Conventions: Route Segment Config | Next.js
layout | page | route
有对应的默认值:
export const dynamic = 'auto'
export const dynamicParams = true
export const revalidate = false
export const fetchCache = 'auto'
export const runtime = 'nodejs'
export const preferredRegion = 'auto'
export const maxDuration = 5
export default function MyComponent() {}