nextjs 第一章 工程初始化

Next.js 是一个用于构建 React 应用的流行框架,具有服务器端渲染(SSR)和静态生成(SSG)等功能。以下是一个详细的 Next.js 教程,帮助你入门并构建一个基本的 Next.js 应用。

安装 Next.js

首先,确保你已经安装了 Node.js 和 npm。然后,你可以使用以下命令创建一个新的 Next.js 项目:

 

perl

复制代码

bash 复制代码 npx create-next-app@latest my-next-app cd my-next-app

这会创建一个新的 Next.js 应用并安装所需的依赖。

项目结构

使用 app 目录时,你的项目结构可能如下:

 

lua

复制代码

lua 复制代码 解释 my-next-app/ ├── app/ │ ├── api/ │ │ └── hello/ │ │ └── route.js │ ├── about/ │ │ └── page.js │ ├── globals.css │ └── layout.js ├── public/ │ ├── favicon.ico │ └── vercel.svg ├── .gitignore ├── package.json └── next.config.js

  • app/:存放页面和路由,每个文件夹对应一个路由。
  • public/:存放静态资源,如图片、字体等。

创建页面

app/ 目录下创建一个新的页面,例如 about/page.js

 

javascript

复制代码

jsx 复制代码 解释 // app/about/page.js export default function About() { return ( <div> <h1>About Page</h1> <p>This is the about page.</p> </div> ); }

现在你可以通过访问 http://localhost:3000/about 查看新创建的页面。

全局样式

app/globals.css 中定义全局样式:

 

css

复制代码

css 复制代码 解释 /* app/globals.css */ body { font-family: Arial, sans-serif; margin: 0; padding: 0; }

app/layout.js 中引入全局样式:

 

javascript

复制代码

jsx 复制代码 解释 // app/layout.js import './globals.css' export default function RootLayout({ children }) { return ( <html lang="en"> <body>{children}</body> </html> ) }

动态路由

创建一个动态路由页面,例如 [id]/page.js

 

javascript

复制代码

jsx 复制代码 解释 // app/posts/[id]/page.js import { useRouter } from 'next/router' export default function Post({ params }) { return ( <div> <h1>Post {params.id}</h1> <p>This is the post content.</p> </div> ) }

获取静态内容

Next.js 提供了 getStaticPropsgetStaticPaths 来预渲染页面。

 

javascript

复制代码

jsx 复制代码 解释 // app/posts/[id]/page.js import { useRouter } from 'next/router' export default function Post({ post }) { return ( <div> <h1>{post.title}</h1> <p>{post.body}</p> </div> ) } export async function generateStaticParams() { const res = await fetch('https://jsonplaceholder.typicode.com/posts') const posts = await res.json() return posts.map((post) => ({ id: post.id.toString(), })) } export async function getStaticProps({ params }) { const res = await fetch(`https://jsonplaceholder.typicode.com/posts/${params.id}`) const post = await res.json() return { props: { post } } }

在 Next.js 14 使用 app 目录的 API 路由时,你需要为每个 HTTP 方法(如 GET、POST 等)导出相应的函数。以下是如何为每个 HTTP 方法导出函数的示例:

更新 API 路由

app/api/hello/route.js 文件中,更新为如下内容:

 

javascript

复制代码

javascript 复制代码 解释 // app/api/hello/route.js export async function GET(req) { return new Response(JSON.stringify({ message: 'Hello, world!' }), { status: 200, headers: { 'Content-Type': 'application/json', }, }); } export async function POST(req) { const data = await req.json(); return new Response(JSON.stringify({ message: 'Data received', data }), { status: 200, headers: { 'Content-Type': 'application/json', }, }); } // 其他方法如 PUT, DELETE 等也可以按需添加

这样,你就为 GETPOST 方法分别导出了处理函数。

访问 API 路由

  • GET 请求:访问 http://localhost:3000/api/hello 会返回 { message: 'Hello, world!' }
  • POST 请求:你可以使用 curl 或其他工具向该端点发送 POST 请求。


原文链接:https://juejin.cn/post/7375851690661265448
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值