next 从入门到精通

news2024/11/18 15:29:42

next 从入门到精通

相关链接

  1. 演示地址 演示地址
  2. 源码地址 源码地址
  3. 获取更多 获取更多
  • hello 大家好,我是 数擎科技,今天来跟大家聊聊 Next.js 如果你遇到任何问题,欢迎联系我 m-xiaozhicloud

什么是 Next.js

  • Next.js 是一个基于 React 的框架,用于构建服务器端渲染(SSR)和静态生成(SSG)的网页应用。它提供了页面路由、API 路由、自动代码拆分等功能,帮助开发者更高效地创建现代 web 应用

项目创建

  1. 自动安装
  • 我们建议使用 启动一个新的 Next.js 应用 create-next-app,它会自动为您设置一切。要创建项目
npx create-next-app@latest
  1. 安装时,您将看到以下提示:
What is your project named? my-app
Would you like to use TypeScript? No / Yes
Would you like to use ESLint? No / Yes
Would you like to use Tailwind CSS? No / Yes
Would you like your code inside a `src/` directory? No / Yes
Would you like to use App Router? (recommended) No / Yes
Would you like to use Turbopack for `next dev`?  No / Yes
Would you like to customize the import alias (`@/*` by default)? No / Yes
What import alias would you like configured? @/*

路由创建

  • Next.js 使用基于文件系统的路由器,其中使用文件夹来定义路由。
  • 每个文件夹代表一个映射到 URL 段的路由段。要创建嵌套路由,您可以将文件夹相互嵌套。

路由创建
路由创建

  • 浏览器上输入 localhost:3000 你将看到
    alt text

布局和模板

  1. 根布局
  • 布局是在多个路由之间共享的 UI。在导航时,布局保留状态、保持交互性并且不重新渲染。布局也可以嵌套。

根布局

import type { Metadata } from 'next';
import localFont from 'next/font/local';

const geistSans = localFont({
  src: './fonts/GeistVF.woff',
  variable: '--font-geist-sans',
  weight: '100 900',
});
const geistMono = localFont({
  src: './fonts/GeistMonoVF.woff',
  variable: '--font-geist-mono',
  weight: '100 900',
});

export const metadata: Metadata = {
  title: 'Create Next App',
  description: 'Generated by create next app',
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode,
}>) {
  return (
    <html lang="en">
      <body
        className={`${geistSans.variable} ${geistMono.variable} antialiased`}
      >
        {children}
      </body>
    </html>
  );
}
  1. 模板
  • 模板与布局类似,它们包装子布局或页面。与跨路线持续存在并维护状态的布局不同,模板为导航上的每个子级创建一个新实例。这意味着当用户在共享模板的路由之间导航时,会安装子级的新实例,重新创建 DOM 元素,客户端组件中不会保留状态,并且会重新同步效果。

模板

export default function Template({ children }: { children: React.ReactNode }) {
  return <div>{children}</div>;
}

布局与模板的区别

  • 模板与布局类似,它们包装子布局或页面。与跨路线持续存在并维护状态的布局不同,模板为导航上的每个子级创建一个新实例。这意味着当用户在共享模板的路由之间导航时,会安装子级的新实例,重新创建 DOM 元素,客户端组件中不会保留状态,并且会重新同步效果。

alt text

元数据

  1. 静态元数据
  • 您可以使用元数据 API 修改 HTML 元素,例如标题和元。
import type { Metadata } from 'next';

export const metadata: Metadata = {
  title: '数擎科技',
};
export default function Home() {
  return <div>数擎科技</div>;
}
  1. 动态元数据
  • 所有基于配置的元数据选项以及 generateMetadata
import type { Metadata } from 'next';

// either Static metadata
export const metadata: Metadata = {
  title: '...',
};

// or Dynamic metadata
export async function generateMetadata({ params }) {
  return {
    title: '...',
  };
}

自定义 404 页面

import Link from 'next/link';

export default function NotFound() {
  return (
    <div>
      <h2>Not Found</h2>
      <p>Could not find requested resource</p>
      <Link href="/">Return Home</Link>
    </div>
  );
}

数据获取

  1. 客户端模式获取数据
  • 如果您在此路线的其他任何地方都没有使用任何动态函数,则它将在下次构建静态页面时预渲染。然后可以使用增量静态再生来更新数据。
export default async function Home() {
  const baseUrl = 'https://cnodejs.org/api/v1';
  const rsp = await fetch(`${baseUrl}/topics`).then((res) => res.json());
  return (
    <div>
      {rsp.data.map((item: any) => (
        <h3 key={item?._id}>{item?.title}</h3>
      ))}
    </div>
  );
}
  1. 客户端模式获取数据(不推荐)
  • 然而,在某些情况下,客户端数据获取仍然有意义。在这些场景中,您可以在 useEffect 中手动调用 fetch (不推荐),或者依靠社区中流行的 React 库(例如 SWR 或 React Query)进行客户端获取。
'use client';

import { useEffect, useState } from 'react';

export default function Home() {
  const [data, setData] = useState([]);
  const featchTopics = async () => {
    const baseUrl = 'https://cnodejs.org/api/v1';
    const rsp = await fetch(`${baseUrl}/topics`).then((rsp) => rsp.json());
    setData(rsp.data);
  };
  useEffect(() => {
    featchTopics();
  }, []);
  return (
    <div>
      {data.map((item) => (
        <h3 key={item._id}>{item.title}</h3>
      ))}
    </div>
  );
}

安装 shadcn/ui

  • shadcn/ui:是一个基于 Tailwind CSS 的 UI 组件库,注重高度的可定制性和灵活性。开发者可以轻松修改或扩展组件的样式,使其更符合项目的需求。它专注于不影响项目架构的设计思路,给开发者更多的自由来创建自定义组件。
npx shadcn@latest add button
import { Button } from '@/components/ui/button';

export default function Home() {
  return (
    <div>
      <Button>Click me</Button>
    </div>
  );
}

未完待续 。。。。。。。。

联系我们

  1. 关注我们
  1. 联系作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2178500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始搭建UVM平台(四)-加入interface

书接上回&#xff1a; 从零开始搭建UVM平台&#xff08;一&#xff09;-只有uvm_driver的验证平台 从零开始搭建UVM平台&#xff08;二&#xff09;-加入factory机制 从零开始搭建UVM平台&#xff08;三&#xff09;-加入objection机制 加入interface 上述代码还有一个问题…

目标检测论文常用评价指标(Evaluation Metrics)总结

评价指标&#xff08;Evaluation Metrics&#xff09; 混淆矩阵&#xff08;Confusion Matrix&#xff09;归一化混淆矩阵&#xff08;Normalized Confusion Matrix&#xff09;精确度&#xff08;Precision&#xff09;召回率&#xff08;Recall&#xff09;F1值&#xff08;F…

连续4年!容联云荣登2024北京民营企业百强榜单

近日&#xff0c;北京市工商联发布2024北京民营企业百强“14”榜单。容联云荣登北京民营企业科技创新前100强&#xff0c;同时位列12家朝阳区科技百强企业之一。 自2018年起&#xff0c;在中共北京市委统战部的指导下&#xff0c;北京市工商业联合会联合有关部门&#xff0c;每…

springboot+satoken实现刷新token(值变化)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 springbootsatoken实现刷新token satoken是什么&#xff1f;支持什么&#xff1f;为什么需要&…

CSDN 账号已经恢复,后续可能会把专栏内容整理成纸质书出版

笔者曾经系统地将自己在 ABAP&#xff0c;SAP UI5 和 SAP OData 开发领域的知识和经验&#xff0c;整理输出成四套开发教程&#xff1a; 零基础快速学习 ABAPSAP Fiori Elements 从入门到进阶SAP OData 开发实战教程 - 从入门到提高一套适合 SAP UI5 开发人员循序渐进的学习教…

Python酷玩之旅_如何连接MySQL(mysql-connector-python)

前言 Python作为数据科学、机器学习等领域的必选武器&#xff0c;备受各界人士的喜爱。当你面对不同类型、存储于各类介质的数据时&#xff0c;第一时间是不是要让它亮个相&#xff1f;做个统计&#xff0c;画个图表&#xff0c;搞个报表… 等等。 正如Java中的JdbcDriver一样…

以“棋”启智,乐在其中:二近制AI智能棋盘内含9种经典玩法让老人小孩爱不释手

近年来&#xff0c;人工智能算法被广泛地应用到生活的各个领域&#xff0c;棋类游戏亦是如此。各种搭载 A 智能算法的棋盘层出不穷&#xff0c;以“棋”启智&#xff0c;乐在其中成为了当下较流行地全民益智游戏之一。 棋类游戏为何屡受欢迎? 棋类游戏是一种能够激发民族智慧…

济南奇牛科技移动办公手机安全管理平台功能说明

济南奇牛信息科技有限公司自主研发的企业移动安全管理平台为企业提供一整移动终端安全解决方案&#xff0c;为解决企业在实施移动终端应用系统中会遇到的安全、应用管理和资产管理方面的问题&#xff0c;建立统一安全策略&#xff0c;解决企业数字化资产安全和员工隐私保护问题…

【教学类-23-02】20240929《不会写学号的中班幼儿的学号描字贴》(中2班描字)

背景需求&#xff1a; 今天给孩子们做中班操作材料包《练眼力》&#xff0c;希望他们在操作纸左上角写学号&#xff0c;结果有不少孩子嚷&#xff1a;“我不会写学号&#xff01;” “不会写的孩子举手&#xff0c;老师给你们做个字帖” 结果有不少孩子都举手了&#xff0c;我…

opencv学习:Harris角点检测和SIFT(尺度不变特征变换)算法完整代码实现

Harris角点检测 概念 Harris角点检测是一种在图像处理和计算机视觉领域广泛使用的技术&#xff0c;用于检测图像中的角点。角点是图像中两条边缘交点的位置&#xff0c;它们在图像分析、目标识别和图像配准等任务中非常重要。 角点&#xff1a;图像中的角点是指图像局部区域…

GDB :代码调试工具

文章目录 一、启动GDB二、GDB的基本命令1. 显示代码2. 运行程序3. 设置断点4. 单步执行5. 查看变量和内存6. 查看函数调用堆栈7. 修改变量值8. 退出GDB 一、启动GDB 在终端中&#xff0c;使用以下命令启动GDB并加载你的可执行文件&#xff1a; gdb ./your_program会进入以下界…

应用性能管理工具-SkyWalking

前言 随着微服务架构的流行&#xff0c;一次请求往往需要涉及到多个服务&#xff0c;因此服务性能监控和排查就变得更复杂&#xff0c;因此&#xff0c;就需要一些可以帮助理解系统行为、用于分析性能问题的工具&#xff0c;以便发生故障的时候&#xff0c;能够快速定位和解决…

关于大模型的10个思考

9月28日&#xff0c;第四届“青年科学家50论坛”在南方科技大学举行&#xff0c;美国国家工程院外籍院士沈向洋做了《通用人工智能时代&#xff0c;我们应该怎样思考大模型》的主题演讲&#xff0c;并给出了他对大模型的10个思考。 以下是他10个思考的具体内容&#xff1a; 1…

STM32移植RT-Thread实现DAC功能

在进行DAC的学习中&#xff0c;发现RT-Thread中没有该外设的驱动&#xff0c;因此需要自己进行相关配置 1.配置RT-Thread Setting中的DAC组件 2.在HAL库中完成DAC的配置(HAL库起到时钟的作用) 不懂HAL库配置的最好学一下HAL库的编程思想 3.在board.h中添加宏定义 我的RT-T…

关于分箱的一些介绍

在这篇文章中&#xff0c;我将介绍一种数据预处理的技术——分箱&#xff0c;然会将会从概念、步骤、分类、应用场景、注意事项与实际操作等方面去介绍它。 一、概念 分箱&#xff08;Binning&#xff09;是一种数据预处理技术&#xff0c;在数据分析和机器学习中经常使用。它…

Java8 用流收集数据之归约汇总

目录 规约汇总最大值 (max)・最小值 (min)统计总数 (count)统计求和 (summingInt・summingLong・summingDouble・sum&#xff09;平均值 (averagingInt・averagingLong・averagingInt・average&#xff09;统计梗概 (summarizingInt・summarizingLong・summarizingDouble・summ…

AI周报(9.22-9.28)

AI应用-Siipet宠物沟通师 Siipet是一款由SiiPet公司推出的创新宠物行为分析相机&#xff0c;旨在通过尖端技术加深宠物与主人之间的情感联系。这款相机利用先进的AI算法&#xff0c;能够自动识别和分析家中宠物的行为&#xff0c;并提供定制化的护理建议。 SiiPet相机的核心功…

益而益集团荣获2024年江苏省智能制造车间称号

近日&#xff0c;江苏省工信厅公示2024年江苏省智能制造车间名单&#xff0c;苏州益而益电器制造有限公司以其卓越的智能化转型成果&#xff0c;荣获2024年度江苏省级智能制造车间称号。 此次获评&#xff0c;是江苏省政府对益而益集团智能化高质量转型发展的认可及肯定&#…

活动在线报名小程序源码系统 自主提交表单+创建表单 带完整的安装代码包以及搭建部署教程

系统概述 随着各类活动的日益丰富和多样化&#xff0c;传统的报名方式逐渐显现出其局限性。纸质报名表格繁琐易错、人工统计费时费力&#xff0c;难以满足现代活动管理的需求。因此&#xff0c;开发一款集自主提交表单和创建表单功能于一体的活动在线报名小程序源码系统成为必…

mit6824-01-MapReduce详解

文章目录 MapReduce简述编程模型执行流程执行流程排序保证Combiner函数Master数据结构 容错性Worker故障Master故障 性能提升定制分区函数局部性执行缓慢的worker(slow workers) 常见问题总结回顾参考链接 MapReduce简述 MapReduce是一个在多台机器上并行计算大规模数据的软件架…