پرش به محتوای اصلی
علی فاتحی

توسعه با Next.js و React

اپلیکیشن‌های وب با Next.js و TypeScript — از سایت محتوایی سریع تا داشبورد داخلی، با قابلیت دیپلوی روی هاست معمولی Node.

چه چیزی تحویل می‌گیرید

  • اپلیکیشن Next.js با App Router و TypeScript در حالت strict
  • طراحی API و اتصال به دیتابیس (PostgreSQL یا MySQL)
  • احراز هویت و کنترل دسترسی در صورت نیاز
  • پیکربندی بیلد و دیپلوی روی هاست Node استاندارد
  • بهینه‌سازی Core Web Vitals به‌عنوان بخشی از تحویل، نه فاز بعد
  • مخزن گیت با تاریخچه تمیز و راهنمای راه‌اندازی

روند کار

  1. ۱

    معماری و مدل داده

    قبل از نوشتن کامپوننت، مدل داده و مرز بین سرور و کلاینت را مشخص می‌کنیم. این تصمیم بیشترین اثر را روی سرعت نهایی دارد.

  2. ۲

    ساخت لایه‌به‌لایه

    از دیزاین‌سیستم و کامپوننت‌های پایه شروع می‌شود، بعد صفحه‌ها. هر مرحله قابل دیدن و قابل بازخورد دادن است.

  3. ۳

    دیپلوی و تحویل

    روی سرور خودتان راه‌اندازی می‌شود، با راهنمای مکتوب برای بیلد و آپدیت‌های بعدی.

Server Components مسئله را عوض کرده‌اند

مدل قدیمی React این بود: سرور یک HTML خالی می‌فرستد، مرورگر چند صد کیلوبایت جاوااسکریپت دانلود می‌کند، بعد داده می‌گیرد، بعد صفحه را می‌سازد. هر مرحله یک تأخیر.

با App Router و Server Components، کامپوننتی که فقط داده را نمایش می‌دهد اصلاً به مرورگر نمی‌رود. جاوااسکریپتی که به کلاینت می‌رسد فقط همان تکه‌هایی است که واقعاً تعاملی‌اند.

// روی سرور اجرا می‌شود؛ هیچ بایتی از این فایل به مرورگر نمی‌رسد.
export default async function InvoiceList({ customerId }: { customerId: string }) {
  const invoices = await db.invoice.findMany({
    where: { customerId },
    orderBy: { issuedAt: "desc" },
  });
 
  return (
    <ul>
      {invoices.map((invoice) => (
        <li key={invoice.id}>{invoice.number}</li>
      ))}
    </ul>
  );
}

نتیجه عملی: صفحه‌ای که با چند کیلوبایت جاوااسکریپت کار می‌کند، نه چند صد کیلوبایت.

دیپلوی روی هاست ایرانی

این بخشی است که معمولاً از قلم می‌افتد و بعداً گران تمام می‌شود. خیلی از پروژه‌های Next.js ناخواسته به قابلیت‌های اختصاصی Vercel گره می‌خورند و بعد روی سرور معمولی کار نمی‌کنند.

کارهایی که از ابتدا انجام می‌دهم:

  • output: "standalone" تا خروجی بیلد یک سرور Node مستقل باشد.
  • هیچ runtime = "edge" در هیچ روتی.
  • بهینه‌سازی تصویر در زمان بیلد، نه توسط پلتفرم.
  • متغیرهای محیطی از فایل، نه از داشبورد یک سرویس خاص.

کجا Next.js انتخاب اشتباهی است

اگر سایت شما پنج صفحه محتوایی است که سالی دو بار عوض می‌شود، Next.js پیچیدگی بی‌دلیل می‌آورد. اگر تیم شما فقط با PHP آشناست و قرار است خودشان نگهداری کنند، همین‌طور. این را قبل از شروع می‌گویم، نه بعد از فاکتور.

مطالب مرتبط با این خدمت

  • ۲ دقیقه مطالعه

    دیپلوی Next.js روی هاست ایرانی بدون وابستگی به Vercel

    خیلی از پروژه‌های Next.js ناخواسته به قابلیت‌های اختصاصی Vercel گره می‌خورند و بعد روی سرور معمولی کار نمی‌کنند. چهار تصمیمی که این را از ابتدا حل می‌کند.

    • #Next.js
    • #دیپلوی
    • #Node.js

سؤال‌های پرتکرار

حتماً باید روی Vercel دیپلوی کنم؟

نه. من پروژه را طوری می‌نویسم که با `output: standalone` روی هر سرور Node استانداردی — از جمله هاست‌های ایرانی — اجرا شود. هیچ وابستگی به Edge Runtime یا بهینه‌سازی تصویر سمت پلتفرم نمی‌گذارم.

چه زمانی Next.js بهتر از وردپرس است؟

وقتی منطق اپلیکیشن دارید، نه فقط محتوا. اگر نیاز شما یک سایت شرکتی یا بلاگ است، وردپرس ارزان‌تر و سریع‌تر جواب می‌دهد و همین را پیشنهاد می‌دهم.

می‌شود Next.js را روی وردپرس موجود سوار کرد؟

بله. وردپرس به‌عنوان بک‌اند محتوا از طریق REST API یا GraphQL، و Next.js به‌عنوان لایه نمایش. برای سایت‌هایی که محتوای زیاد و نیاز به سرعت بالا دارند گزینه خوبی است.

تست هم می‌نویسید؟

برای منطق کسب‌وکار بله. برای رابط کاربری، بسته به بودجه و اینکه پروژه چقدر قرار است رشد کند تصمیم می‌گیریم.

مطمئن نیستید کدام یکی است؟

کافی است بنویسید چه مشکلی دارید. تشخیص اینکه کار در کدام دسته می‌افتد با من.

شروع یک پروژه