Next.js是一个流行的React框架,提供了许多语法糖和便捷功能,使得开发React应用变得更加简单和高效。
- 页面路由
Next.js的文件系统路由是一个强大的语法糖,它允许开发者通过文件结构来定义应用的路由。
- 基本路由:
在pages目录下创建的每个文件都会自动成为一个路由。例如,pages/about.js会变成/about路由。
// pages/about.js
export default function About() {
return <h1>About Page</h1>
}
- 嵌套路由:
通过创建嵌套文件夹来实现嵌套路由。例如,pages/blog/[slug].js会匹配/blog/hello-world等路径。
// pages/blog/[slug].js
export default function BlogPost({
slug }) {
return <h1>Blog Post: {
slug}</h1>
}
export async function getServerSideProps({
params }) {
return {
props: {
slug: params.slug } }
}
- 动态路由:
使用方括号[]来创建动态路由。例如,pages/posts/[id].js可以匹配/posts/1、/posts/2等路径。
// pages/posts/[id].js
export default function Post({
id }) {
return <h1>Post {
id}</h1>
}
export async function getServerSideProps({
params }) {
return {
props: {
id: params.id } }
}
- API路由
Next.js允许在pages/api目录下创建API路由,这是一个强大的语法糖,使得创建后端API变得非常简单。
// pages/api/hello.js
export default function handler(req, res) {
res.status(200).json({
name: 'John Doe' })
}
- 自动代码分割
Next.js自动进行代码分割,这是一个隐式的语法糖,开发者无需手动配置。每个页面只加载该页面需要的JavaScript。
- 图片优化
Next.js提供了Image组件,这是一个强大的语法糖,自动进行图片优化。
import Image from 'next/image'
export default function Home() {
return (
<Image
src="/profile.jpg"
alt="Profile picture"
width={
500}
height={
500}
/>
)
}
- CSS支持
Next.js内置了CSS支持,包括CSS Modules、Sass等,这是一个方便的语法糖。
- CSS Modules:
// pages/index.js
import styles from './index.module.css'
export default function Home() {
return <div className={
styles.container}>Hello World</div>
}
- 全局CSS:
// pages/_app.js
import '../styles/globals.css'
export default function MyApp({
Component, pageProps }) {
return <Component {
...pageProps}