nextjs的基础了解

Next.js 是一个基于 React 的框架,提供了服务器端渲染(SSR)、静态站点生成(SSG)、路由、API 路由等功能,适合构建高性能的现代 Web 应用。以下是 Next.js 的基本用法和实例。

1. 安装 Next.js

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

```bash

npx create-next-app@latest my-next-app

cd my-next-app

npm run dev

```

2. 项目结构

一个典型的 Next.js 项目结构如下:

```

my-next-app/

├── pages/

│ ├── index.js

│ ├── _app.js

│ ├── api/

│ │ └── hello.js

├── public/

│ ├── favicon.ico

│ └── vercel.svg

├── styles/

│ ├── globals.css

│ └── Home.module.css

├── package.json

└── next.config.js

```

3. 页面和路由

Next.js 使用文件系统路由,`pages` 目录下的文件会自动映射为路由。例如:

  • `pages/index.js` 对应 `/`

  • `pages/about.js` 对应 `/about`

  • `pages/posts/[id].js` 对应动态路由 `/posts/1`, `/posts/2` 等

示例:创建首页

```javascript

// pages/index.js

export default function Home() {

return (

<div>

<h1>Welcome to Next.js!</h1>

</div>

);

}

```

示例:创建关于页面

```javascript

// pages/about.js

export default function About() {

return (

<div>

<h1>About Us</h1>

<p>This is the about page.</p>

</div>

);

}

```

4. 动态路由

Next.js 支持动态路由,可以通过文件名中的 `[]` 来定义动态路由。

示例:动态路由

```javascript

// pages/posts/[id].js

import { useRouter } from 'next/router';

export default function Post() {

const router = useRouter();

const { id } = router.query;

return (

<div>

<h1>Post ID: {id}</h1>

</div>

);

}

```

5. API 路由

Next.js 允许你在 `pages/api` 目录下创建 API 路由,这些路由会作为服务器端 API 端点。

示例:创建 API 端点

```javascript

// pages/api/hello.js

export default function handler(req, res) {

res.status(200).json({ message: 'Hello, world!' });

}

```

你可以通过 `/api/hello` 访问这个 API。

6. 静态生成和服务器端渲染

Next.js 支持静态生成(SSG)和服务器端渲染(SSR)。

示例:静态生成

```javascript

// pages/posts/[id].js

export async function getStaticPaths() {

const paths = [

{ params: { id: '1' } },

{ params: { id: '2' } },

];

return { paths, fallback: false };

}

export async function getStaticProps({ params }) {

const post = { id: params.id, title: `Post ${params.id}` };

return { props: { post } };

}

export default function Post({ post }) {

return (

<div>

<h1>{post.title}</h1>

</div>

);

}

```

示例:服务器端渲染

```javascript

// pages/posts/[id].js

export async function getServerSideProps({ params }) {

const post = { id: params.id, title: `Post ${params.id}` };

return { props: { post } };

}

export default function Post({ post }) {

return (

<div>

<h1>{post.title}</h1>

</div>

);

}

```

7. 样式

Next.js 支持多种样式方案,包括 CSS Modules、Styled JSX、Tailwind CSS 等。

示例:使用 CSS Modules

```javascript

// pages/index.js

import styles from '../styles/Home.module.css';

export default function Home() {

return (

<div className={styles.container}>

<h1 className={styles.title}>Welcome to Next.js!</h1>

</div>

);

}

```

```css

/* styles/Home.module.css */

.container {

padding: 20px;

}

.title {

color: blue;

}

```

8. 部署

Next.js 应用可以部署到 Vercel、Netlify 等平台,也可以部署到自己的服务器。

部署到 Vercel

  1. 安装 Vercel CLI:

```bash

npm install -g vercel

```

  1. 部署:

```bash

vercel

```

9. 更多功能

Next.js 还支持以下功能:

  • **图像优化**:通过 `next/image` 组件优化图像加载。

  • **国际化**:支持多语言路由。

  • **中间件**:在请求到达页面之前执行代码。

  • **增量静态再生**:在构建后更新静态页面。

10. 参考文档

  • Next.js 官方文档\](https://nextjs.org/docs)

通过以上内容,你可以快速上手 Next.js 并开始构建现代 Web 应用。

相关推荐
江城开朗的豌豆几秒前
forEach遇上await:你的异步代码真的在按顺序执行吗?
前端·javascript·面试
万少9 分钟前
HarmonyOS Next 弹窗系列教程(3)
前端·harmonyos·客户端
七灵微1 小时前
【后端】单点登录
服务器·前端
持久的棒棒君5 小时前
npm安装electron下载太慢,导致报错
前端·electron·npm
crary,记忆7 小时前
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
前端·webpack·angular·angular.js
漂流瓶jz8 小时前
让数据"流动"起来!Node.js实现流式渲染/流式传输与背后的HTTP原理
前端·javascript·node.js
SamHou08 小时前
手把手 CSS 盒子模型——从零开始的奶奶级 Web 开发教程2
前端·css·web
我不吃饼干8 小时前
从 Vue3 源码中了解你所不知道的 never
前端·typescript
开航母的李大8 小时前
【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
前端·redis·nginx·缓存·微服务·kafka
Bruk.Liu8 小时前
《Minio 分片上传实现(基于Spring Boot)》
前端·spring boot·minio