仍在借助create-react-app搭建项目吗?在2026年,于React生态里,最为尴尬的事情是,众多开发者将Next.js视作服务端渲染专门使用的工具,然而却并未发觉它早就已然转变成为了一个能够让你减少撰写70%样板代码的全栈框架。
路由不是配置是文件夹
npx create-next-app@latest

cd
不少老React开发者,因Next.js的路由系统,直呼颠覆认知。在react-router-dom里,你无需写一长串Route标签,只需在app目录下,新建一个文件夹,页面便有了。比如说,创建一个about文件夹,在里面放置page.tsx,用户就能直接访问/about。2025年的React Europe大会上,核心团队将这种文件即路由的设计,称为“心智负担的终结者”。国内像字节跳动这样的大厂,其现代Web工程化方案已全面运用这种模式了,刚新入职的应届生,三天就能够独立去搭建页面路由,而无需再配置一周时间的路由表了。
npm run dev
动态路由不只是参数匹配
倘若你的博客面临着要处理数量达到上千篇文章的状况时,动态路由所具的优势便会丝毫不差地显现出来。借助于在文件夹名之上添加方括号像[id]这样的方式,Next.js能够自动去捕获URL里的动态部分。在知乎上有一位技术博主进行过分享,该博主的个人博客从Gatsby转换到Next.js之后,动态路由的配置时间由两小时缩减至三分钟。更具优势的是,catch all路由采用[...slug]语法,它能够一次匹配多个路径段,美团的技术团队借助这个特性,将他们的商家帮助中心,从一百多个静态页面,压缩成了一个动态路由模板,进而使得维护成本直线下降。

404页面能体现专业度
// src/app/page.tsx
export default function Home() {
return Home Page
;
}
对于用户访问不存在链接后,是给他看浏览器默认的“无法找到该页面”,还是精心设计的品牌404页,这直接决定他对你产品的信任感。就在Next.js里实现自定义404而言,只需在app目录下创建not - found.tsx文件。在2025年双十一期间,某个头部电商平台的监控数据表明,他们的定制404页面比默认页面多挽回了12%的跳出用户,这些用户借助页面上推荐的爆款链接重新回到了购物路径。这不是炫技,是实打实的用户体验止损。
// src/app/about/page.tsx
export default function About() {
return About Page
;
}
私有文件夹治好了强迫症
// src/app/blog/page.tsx
export default function Blog() {
return Blog Page
;
}
// src/app/blog/first/page.tsx
export default function FirstBlog() {
return First Blog Page
;
}
众多Next.js新手会将所有组件都放置进app目录,进而导致路由列表如同购物小票那般冗长,以下划线起始的私有文件夹诸如_components,Next.js会主动对其予以忽略,其中的文件不会生成任何路由,滴滴出行前端团队在2025年的技术分享里提及,他们于迁移网约车管理后台之际,借助私有文件夹区分了业务组件与路由页面,代码仓库的混乱程度降低了40%,代码审查的时间减少了一半。这不是什么高级技巧,但就是能让你的项目结构清爽得像精装房。
路由分组拯救强迫症URL
// src/app/products/[productId]/page.tsx
export default function ProductDetails({ params }: { params: { productId: string }; }) {
return (
Details about product {params.productId}
>
);
}
</code>
身份认证页面存在登录页面,亦有注册页面,还有找回密码页面与重置密码页面这四个页面,你意欲将它们安置于同一个文件夹内以便进行管理,然而却不希望URL变成像/auth/login这般显得多此一举的结构。Next.js的路由分组借助带括号的文件夹名比如(auth)得以完美解决。理想汽车的车主社区后台正是如此进行组织的,开发者能够迅速定位所有与用户认证相关的代码,而前端用户所看到的依旧是干净的/login以及/register。这种设计让URL语义和代码组织彻底解耦,谁用谁知道。
布局嵌套让重复代码见鬼去
加导航栏以及页脚于每个页面之上,往昔之时,你须撰写一个Layout组件,进而手动将每个页面予以包裹。Next.js的根布局于app/layout.tsx处直接进行定义,所有页面会自动实现继承。更为灵活的是嵌套布局,举例而言,于你的后台系统当中,仪表盘与设置中心需要不同的侧边栏,仅需于对应文件夹之下分别对layout.tsx进行定义即可。B站创作者服务中心,在2025年进行重构之际,用上了此特性,原本存在需维护八个各异布局的复杂系统,如今仅靠三个嵌套布局文件便完成了,代码量削减了一半。
强调了这般众多Next.js路由的实际运用方式,你于自身的项目内部遭遇过绝顶令人烦躁的路由难题究竟是什么呢?于评论区域对此分享予以呈现,说不定恰好我曾踏入过相同的陷阱能够助你节省两小时的调试时间,要是认为颇具作用的话来给予三连的一份支持表明一下。
// src/app/docs/[[...slug]]/page.tsx
export default function Docs({params}: {
params: {
slug: string[];
};
}) {
// 检查slug参数的长度,以决定渲染哪种内容
if (params.slug?.length === 2) {
return Viewing docs for feature {params.slug[0]} and concept {params.slug[1]}
;
} else if (params.slug?.length === 1) {
return Viewing docs for feature {params.slug[0]}
;
}
// 如果没有提供slug参数,渲染默认的文档页面
return Docs Page
;
}

Comments NOTHING