在next14中的文件夹命名()和@有什么区别

2 分钟
59 阅读
在next14中的文件夹命名()和@有什么区别

在 Next.js 14 中,文件夹命名前缀具有不同的功能含义。以下是 (xxx)@xxx.xxx 的详细区别说明:

1. (xxx) - 路由组(Route Groups)

用途:用于逻辑分组路由,不影响实际 URL 路径
特点

  • 允许将相关路由组织在一起
  • 可以共享布局文件
  • 不会出现在最终 URL 中
    示例
复制代码
app/
  (auth)/
    login/page.tsx → /login
    register/page.tsx → /register
  (marketing)/
    about/page.tsx → /about

2. @xxx - 私有文件夹(Private Folders)

用途:存放不参与路由的代码文件
特点

  • 不会生成对应的路由
  • 用于组织组件、工具函数等
  • 需要手动导入使用
    示例
复制代码
app/
  @components/
    Button.tsx
  @utils/
    api.ts
  page.tsx

3. .xxx - 拦截路由(Intercepted Routes)

用途:实现路由拦截功能
特点

  • 使用特殊前缀表示拦截层级:
    • (.) 同级拦截
    • (..) 上一级拦截
    • (...) 根级拦截
  • 用于实现模态框等交互模式
    示例
复制代码
app/
  photo/
    [id]/page.tsx → /photo/1
  feed/
    (.)photo/
      [id]/page.tsx → 拦截/photo/1并在/feed中显示

主要区别对比

类型 语法 用途 是否生成路由 典型应用场景
路由组 (xxx) 逻辑分组 组织相关路由
私有文件夹 @xxx 代码组织 存放组件/工具
拦截路由 (.xxx) 路由拦截 模态框实现

注意:.xxx 在文件系统中通常表示隐藏文件(如 .env),但在 Next.js 路由系统中,拦截路由使用的是 (.) 这种带圆括号的语法,而不是直接使用点号前缀。

评论

评论

发表评论