Next.js چیست؟ آموزش کامل و جامع Next.js
فهرست مطالب
Next.js چیست؟
Next.js یک فریمورک React است که برای تولید برنامههای وب مدرن طراحی شده است. این فریمورک توسط شرکت Vercel توسعه داده شده و امکانات قدرتمندی برای ساخت برنامههای تحت وب در مقیاس بزرگ ارائه میدهد.
// pages/index.js
export default function Home() {
return (
سلام به Next.js خوش آمدید!
این صفحه اصلی برنامه است.
)
}
ویژگیهای اصلی Next.js
Next.js مجموعهای از ویژگیهای قدرتمند را برای توسعهدهندگان فراهم میکند:
۱. رندرینگ هیبریدی
امکان استفاده از SSR، SSG، و CSR در کنار هم
۲. مسیریابی خودکار
سیستم مسیریابی مبتنی بر فایل
۳. بهینهسازی خودکار
بهینهسازی تصاویر، فونتها و کد
نصب و راهاندازی Next.js
برای شروع کار با Next.js، میتوانید از دستور create-next-app استفاده کنید:
npx create-next-app@latest my-next-app
cd my-next-app
npm run dev
مسیریابی در Next.js
Next.js از سیستم مسیریابی مبتنی بر فایل استفاده میکند که بسیار ساده و قدرتمند است. این سیستم به صورت خودکار مسیرها را بر اساس ساختار فایلها در پوشه pages ایجاد میکند.
pages/
index.js // -> /
about.js // -> /about
blog/
index.js // -> /blog
[slug].js // -> /blog/:slug
[...params].js // -> /blog/*
مسیریابی پویا
// pages/posts/[id].js
export async function getStaticPaths() {
return {
paths: [
{ params: { id: '1' } },
{ params: { id: '2' } }
],
fallback: false
}
}
export async function getStaticProps({ params }) {
return {
props: { postId: params.id }
}
}
روشهای رندرینگ
Next.js چندین روش رندرینگ را پشتیبانی میکند که هر کدام برای موارد استفاده خاصی مناسب هستند:
۱. Server-Side Rendering (SSR)
// pages/ssr-page.js
export async function getServerSideProps() {
const res = await fetch('https://api.example.com/data')
const data = await res.json()
return {
props: { data }
}
}
۲. Static Site Generation (SSG)
// pages/ssg-page.js
export async function getStaticProps() {
const res = await fetch('https://api.example.com/static-data')
const data = await res.json()
return {
props: { data },
revalidate: 60 // ISR: بازسازی هر 60 ثانیه
}
}
روشهای دریافت داده
Next.js روشهای مختلفی برای دریافت داده ارائه میدهد:
import useSWR from 'swr'
function Profile() {
const { data, error } = useSWR('/api/user', fetcher)
if (error) return خطا در بارگذاری
if (!data) return در حال بارگذاری...
return سلام {data.name}!
}
API Routes در Next.js
Next.js امکان ایجاد API endpoints را درون برنامه فراهم میکند.
// pages/api/user.js
export default function handler(req, res) {
if (req.method === 'POST') {
// پردازش درخواست POST
res.status(200).json({ message: 'کاربر ایجاد شد' })
} else {
// برگرداندن خطا برای سایر متدها
res.status(405).json({ message: 'متد مجاز نیست' })
}
}
بهینهسازی و عملکرد
Next.js ابزارهای متعددی برای بهینهسازی عملکرد ارائه میدهد:
بهینهسازی تصاویر
import Image from 'next/image'
function Banner() {
return (
)
}
بهینهسازی فونت
import { Inter } from 'next/font/google'
const inter = Inter({ subsets: ['latin'] })
export default function RootLayout({ children }) {
return (
{children}
)
}
استایلدهی در Next.js
Next.js از روشهای مختلف استایلدهی پشتیبانی میکند:
/* styles/Home.module.css */
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.title {
font-size: 2rem;
color: #333;
}
دیپلوی برنامه Next.js
برای دیپلوی برنامه Next.js چندین گزینه وجود دارد:
۱. Vercel
بهترین و سادهترین روش برای دیپلوی Next.js
npm install -g vercel
vercel login
vercel
۲. سایر پلتفرمها
امکان دیپلوی روی Netlify، DigitalOcean و سایر پلتفرمها
بهترین شیوههای کدنویسی
برای توسعه بهتر با Next.js، این موارد را رعایت کنید:
۱. ساختار پروژه
استفاده از ساختار استاندارد و منظم برای فایلها
۲. مدیریت حالت
استفاده از ابزارهای مدیریت حالت مناسب
۳. کامپوننتهای جداگانه
تقسیم کد به کامپوننتهای کوچک و قابل استفاده مجدد
ابزارها و اکوسیستم
ابزارها و کتابخانههای مفید برای توسعه با Next.js:
ابزارهای توسعه
– VS Code با افزونههای Next.js
– Chrome DevTools
– React Developer Tools
کتابخانههای مفید
– Tailwind CSS
– Redux Toolkit
– React Query
– Prisma