当前位置:首页 > 科技  > 软件

分享七个你可能不知道的 Next.js 14 小技巧

来源: 责编: 时间:2024-04-02 17:23:30 115观看
导读NextJS 14的发布不仅仅是一个简单的更新,它代表了对开发者体验和应用速度的全新关注。对于使用React的开发者来说,NextJS 14承诺带来更快速、更愉快的开发体验。无论是新项目的开始,还是现有项目的升级,NextJS 14都值得一

xnH28资讯网——每日最新资讯28at.com

NextJS 14的发布不仅仅是一个简单的更新,它代表了对开发者体验和应用速度的全新关注。对于使用React的开发者来说,NextJS 14承诺带来更快速、更愉快的开发体验。无论是新项目的开始,还是现有项目的升级,NextJS 14都值得一试。xnH28资讯网——每日最新资讯28at.com

今天,我将向大家介绍一些关于NextJS的概念,这些可能是许多开发者所不知道的。你可以利用这些概念来优化你的应用,并改善开发者体验。xnH28资讯网——每日最新资讯28at.com

1. 路由分组:整理杂乱的文件结构(Route Groups)

在开发大型Web应用时,文件夹结构可能会变得复杂混乱,特别是在处理路由时。NextJS提供了一种称为路由分组的功能,可以帮助你更有效地组织路由结构。xnH28资讯网——每日最新资讯28at.com

混乱的文件结构:

在没有使用路由分组的情况下,你可能会在pages文件夹中看到许多杂乱无章的路由文件,这使得找到特定路由变得困难。xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

使用路由分组整理:

通过使用路由分组,你可以将相关的路由放在同一个文件夹(即路由组文件夹)下。这样,你就可以根据不同主题或功能轻松地找到相关路由。xnH28资讯网——每日最新资讯28at.com

例如,你可以创建一个名为auth的路由组文件夹,然后将所有与认证相关的路由(如登录、注册)放在这个文件夹下。xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

路由分组的优势:

  • 清晰的文件结构:通过路由分组,你的项目结构将更加清晰有序。
  • 易于维护:分组后的结构使得维护特定功能或模块的路由更加容易。
  • 不影响URL结构:值得注意的是,路由分组不会在URL中添加文件夹名称。例如,即使有一个名为auth的分组文件夹,URL仍然是http://localhost:3000/sign-in,而不是http://localhost:3000/auth/sign-in。

xnH28资讯网——每日最新资讯28at.com

在app目录下的任意目录中创建_components文件夹

在app目录的任何子目录中创建一个以下划线开头的文件夹(如_components),这样的文件夹和其中的文件不会被Next.js当作页面来处理。xnH28资讯网——每日最新资讯28at.com

例如,在app目录下的favourite目录中创建一个_components文件夹:xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

在目录中创建不直接提供给客户端的文件

在特定目录中创建文件,这些文件不会直接作为页面提供给客户端,除非它们被显式地添加到page.tsx文件中。xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

5. 捕获所有段(Catch-all Segments)

在Next.js中,动态路由可以通过在括号内添加省略号[...segmentName]来扩展为捕获所有后续的段。xnH28资讯网——每日最新资讯28at.com

示例说明

例如,路径/docs/[...slug]/page.tsx不仅会匹配/docs/topic,还会匹配/docs/topic/1等更深层次的路由。但是,如果URL是/docs,它会返回一个404错误。xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

代码片段

import React from 'react';type Params = {    params: {        slug: string[]    }};export default function SlugPage({ params: { slug } }: Params) {    return (        <div>            <h1>Viewing Custom Slug Page</h1>            <span>URL Contains: {slug.toString()} </span>        </div>    );}

在这个代码片段中,我们定义了一个SlugPage组件,它接收slug作为参数,并将其转换为字符串显示在页面上。xnH28资讯网——每日最新资讯28at.com

解决404错误

你可能想知道是否有办法解决/docs这个路由的404错误。答案是肯定的,你可以通过一些方法来解决这个问题,答案在下面,请继续往下看xnH28资讯网——每日最新资讯28at.com

6. 可选的捕获所有段(Optional Catch-All Segments)

在Next.js中,通过将参数放在双方括号中:[[...segmentName]],可以使捕获所有段成为可选的。xnH28资讯网——每日最新资讯28at.com

例如,路由/docs/[[...slug]]/page.tsx不仅会匹配/docs/topic、/docs/topic/10等路由,还会匹配/docs本身。xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

可选的捕获所有段与普通捕获所有段的区别

  • 普通捕获所有段:必须包含至少一个参数,例如/docs/topic。
  • 可选的捕获所有段:可以匹配没有任何参数的路由,例如/docs。

7. 活动链接(Active Links)

在网站上,你可能注意到当前正在查看的页面链接往往有特殊的样式或覆盖层。这是一种提升用户体验的常用方法。今天,我将介绍如何实现这一功能。xnH28资讯网——每日最新资讯28at.com

创建一个导航栏组件

首先,在components目录中创建一个名为Navbar.tsx的文件。这将是一个客户端组件,因为用户将与导航栏互动。在文件顶部添加“use client”指令,并从next/navigation中导入一个名为usePathname的钩子。xnH28资讯网——每日最新资讯28at.com

示例代码

"use client";import Link from 'next/link';import { usePathname } from 'next/navigation';import React from 'react';type Links = {    title: string,    url: string};export default function Navbar() {    const links: Links[] = [        {            title: "Sign In",            url: "/sign-in"        },        {            title: "Favourite",            url: "/favourite/1"        },    ];    const pathname = usePathname();    return (        <div className='flex space-x-4'>            {links.map(({ title, url }: Links) => {                const isActive = pathname.startsWith(url);                return <Link                    className={isActive ? "font-bold text-emerald-500" : "text-white"}                    key={title}                    href={url}>                    {title}                </Link>            })}        </div>    )}

解释代码

  • 定义链接:通过创建一个名为links的常量来定义你想要在导航栏中显示的链接。
  • 映射链接:使用map方法遍历links数组,并为每个链接生成一个Link组件。
  • 活动链接样式:使用usePathname钩子获取当前的路径。然后通过比较当前路径和链接的url,决定是否为该链接应用活动状态的样式。

效果

当用户点击其中一个链接时,该链接的文本颜色会改变,这表明了用户当前所处的页面。例如,点击“Sign In”链接后,文本颜色变化,从而增强了用户体验。xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

xnH28资讯网——每日最新资讯28at.com

注意事项

确保你要使用的路由URL已经存在,否则会出现404错误。xnH28资讯网——每日最新资讯28at.com

通过以上步骤,你可以在Next.js应用中创建一个具有活动状态样式的导航栏,这不仅让用户界面看起来更加友好,还能提高用户的导航体验。xnH28资讯网——每日最新资讯28at.com

结束

随着NextJS 14的发布,我们见证了前端开发领域的一次重大变革。这个版本不仅加强了对开发者体验的关注,还通过诸如路由分组、动态元数据、私有路由、可选的捕获所有段以及活动链接等功能,大幅提升了应用的性能和可用性。这些创新特性不仅简化了复杂应用的开发和维护,也为最终用户带来了更加流畅和直观的浏览体验。NextJS 14的这些优化措施,无疑将助力开发者构建更加高效、更加用户友好的现代Web应用。作为React开发者,掌握并应用这些新特性,将是我们适应和引领前端技术潮流的关键。让我们拥抱NextJS 14,共同开启前端开发的新篇章!xnH28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-80889-0.html分享七个你可能不知道的 Next.js 14 小技巧

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 利用生成对抗性网络进行欺诈检测

下一篇: 提高生产力!这10个Lambda表达式必须掌握,开发效率嘎嘎上升!

标签:
  • 热门焦点
  • K60 Pro官方停产 第三方瞬间涨价

    K60 Pro官方停产 第三方瞬间涨价

    虽然没有官方宣布,但Redmi的一些高管也已经透露了,Redmi K60 Pro已经停产且不会补货,这一切都是为了即将到来的K60 Ultra铺路,属于厂家的正常操作。但有意思的是该机在停产之后
  • 石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    一、前言和介绍专为家庭请假懒人而生的石头科技在近日又带来了自己的全新旗舰新品,石头智能洗地机A10 Plus。从这个产品名上就不难看出,这次石头推出的并不是常见的扫地机器
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人&ldquo;珍藏&rdquo;是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • 破圈是B站头上的紧箍咒

    破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 微博大门常打开,迎接海外画师漂洋东渡

    微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事&ldquo;起猛了,我能看得懂日语了&rdquo;。&ldquo;为什么日本人说话我能听懂?&rdquo;&ldquo;中文不像中文,日语不像日语,但是我竟然看懂了&rdquo;&hellip;&hell
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top
Baidu
map