Sokan Academy

اولین سؤال این است که Next.js چیست؟

Next.js یک فریمورک قدرتمند و متن‌باز (Open Source) بر پایه React است که برای ساخت وب‌سایت‌ها و وب‌اپلیکیشن‌های سریع، بهینه و مقیاس‌پذیر استفاده می‌شود. این ابزار توسط شرکت Vercel توسعه داده شده و هدف اصلی آن ساده‌تر کردن فرآیند توسعه در کنار افزایش عملکرد و بهبود تجربه کاربری است.

در دنیای امروز که سرعت، سئو و تجربه کاربری اهمیت بسیار بالایی دارند، Next.js با ارائه قابلیت‌هایی مثل رندر سمت سرور (SSR)، تولید صفحات استاتیک (SSG) و روتینگ فایل‌محور، به یکی از محبوب‌ترین انتخاب‌ها برای توسعه‌دهندگان تبدیل شده است.

به زبان ساده، Next.js به شما کمک می‌کند با کمترین پیچیدگی، وب‌سایت‌هایی حرفه‌ای، سریع و سئو ‌محور بسازید؛ چه برای پروژه‌های کوچک و چه برای اپلیکیشن‌های بزرگ و تجاری.

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

مقایسه React و Next.js

برای درک بهتر تفاوت این دو، یک مقایسه کلی ارائه می‌کنیم:

React یک لایبرری جاوااسکریپتی است، در حالی که Next.js یک فریمورک مبتنی بر React محسوب می‌شود. در Next.js امکان Server-Side Rendering وجود دارد، اما در React به‌صورت پیش‌فرض چنین قابلیتی نداریم و بیشتر از Client-Side Rendering استفاده می‌شود. این موضوع می‌تواند باعث کاهش سرعت لود اولیه نسبت به Next.js شود.

از نظر تاریخی:

  • React در سال ۲۰۱۳ توسط شرکت Meta معرفی شد. 
  • Next.js در سال ۲۰۱۶ توسط شرکت Vercel توسعه داده شد. 

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

ویژگیReactNext.js 
نوع ابزارلایبرری جاوااسکریپتیفریم‌ورک مبتنی بر React
هدف اصلیساخت UI و کامپوننت‌هاساخت اپلیکیشن کامل وب
رندرینگClient-Side Rendering (CSR) بیشتر پشتیبانی از SSR، SSG و CSR
SEOنیاز به تنظیمات اضافه داردبهینه برای SEO به‌صورت پیش‌فرض
ساختار پروژهانعطاف‌پذیر ولی بدون ساختار اجباریساختارمند و استاندارد
Routingنیاز به کتابخانه‌های اضافی مثل React Routerروتینگ فایل‌محور داخلی
عملکرد اولیهمعمولاً کندتر در لود اولیهسریع‌تر به دلیل SSR/SSG
سال انتشار۲۰۱۳ توسط Meta۲۰۱۶ توسط Vercel
سطح استفادهفقط لایه فرانت‌اندفرانت‌اند + قابلیت فول‌استک

کاربردهای Next.js

وب‌سایت‌های فروشگاهی (E-commerce)

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

صفحات لندینگ (Landing Pages)

برای طراحی صفحات معرفی محصول یا خدمات که هدف اصلی آن‌ها جذب کاربر و تبدیل (Conversion) است.

اپلیکیشن‌های تک‌صفحه‌ای (SPA)

برای ساخت وب‌اپلیکیشن‌هایی که تجربه کاربری روان و بدون رفرش صفحه ارائه می‌دهند.

وب‌سایت‌های ایستا (Static Websites)

مناسب سایت‌هایی که محتوای ثابت دارند و نیازی به پردازش سمت سرور در لحظه ندارند.

محصولات MVP

برای ساخت نسخه اولیه یک محصول با حداقل امکانات ضروری جهت تست بازار و دریافت بازخورد.

صفحات وب تکی (Single Pages)

مانند صفحات فرود یا صفحات معرفی ساده که فقط یک هدف مشخص دارند.

وب‌اپلیکیشن‌های پیشرفته

برای ساخت سیستم‌های پیچیده با قابلیت‌های زیاد مثل پلتفرم‌های بزرگ یا سیستم‌های سازمانی.

ویژگی‌های Next.js

File-Based Routing

یکی از ویژگی‌های مهم Next.js، سیستم مدیریت فایل‌محور (File-Based Routing) است.

در این سیستم، هر صفحه به‌صورت یک فایل جداگانه در ساختار پروژه تعریف می‌شود و این فایل‌ها در پوشه‌ی app قرار می‌گیرند. به‌عنوان مثال، در این ساختار:

  • هر فایل با پسوند js. یا jsx. می‌تواند یک صفحه از پروژه باشد.  
  • این صفحات به‌صورت خودکار بر اساس ساختار پوشه‌ها در دسترس کاربر قرار می‌گیرند. 

برای نمونه:

  • مسیر پیش‌فرض (Default Route) بدون هیچ اسلاگی و از طریق دامنه اصلی در دسترس است. 
  • صفحات دیگر مانند contact یا blog نیز از طریق اسلاگ‌های مربوط به خود قابل دسترسی هستند. 

همچنین امکان ایجاد مسیرهای تو در تو (Nested Routes) نیز وجود دارد که در جلسات مربوط به Routing به‌صورت کامل بررسی خواهد شد. این قابلیت باعث می‌شود مدیریت صفحات در پروژه بسیار ساده‌تر و ساختارمندتر باشد.

File-Based Routing

Hot Module Replacement (HMR)

یکی دیگر از ویژگی‌های مهم Next.js، قابلیت Hot Module Replacement (HMR) است.

این قابلیت به شما اجازه می‌دهد:

  • تغییرات کد را به‌صورت لحظه‌ای (Real-Time) مشاهده کنید. 
  • بدون نیاز به رفرش کردن صفحه، خروجی به‌روز شود. 

مثال:

اگر در حال ویرایش یک کامپوننت مانند دکمه باشید و تغییراتی در استایل آن ایجاد کنید، این تغییرات بلافاصله در مرورگر نمایش داده می‌شود. این ویژگی باعث می‌شود:

  • سرعت توسعه افزایش یابد.
  • تجربه برنامه‌نویس بسیار روان‌تر شود.

Hot Module Replacement (HMR)

نمونه پروژه‌های ساخته‌شده با Next.js

برخی از وب‌سایت‌های معروفی که با Next.js توسعه داده شده‌اند عبارت‌اند از:

  • ChatGPT (OpenAI): یکی از معروف‌ترین نمونه‌ها، رابط کاربری وب ChatGPT است.
  • Notion :Notion از Next.js برای بخش‌هایی از سایت و صفحات مارکتینگ خود استفاده می‌کند.
  • Spotify :Spotify در بخش‌هایی از وب‌اپلیکیشن خود از Next.js استفاده می‌کند تا بتواند تجربه کاربری سریع، سبک و بهینه برای کاربران وب ایجاد کند.
  • Nike: سایت Nike یکی از نمونه‌های معروف استفاده از Next.js در حوزه فروشگاهی است.
  • Digikala: دیجی‌کالا به عنوان یکی از بزرگ‌ترین فروشگاه‌های آنلاین ایران، برای بهبود عملکرد، سرعت لود صفحات و تجربه کاربری بهتر در بخش‌هایی از وب‌سایت خود از معماری‌های مدرن وب از جمله Next.js استفاده می‌کند. 

مزایا و معایب  Next.js

مزایا

بهبود SEO و عملکرد سایت

به دلیل پشتیبانی از SSR و SSG، صفحات از سمت سرور آماده می‌شوند و همین موضوع باعث می‌شود موتورهای جستجو راحت‌تر سایت را ایندکس کنند. همچنین سرعت لود اولیه بسیار بهتر است.

انعطاف در روش‌های رندرینگ

شما می‌توانید در یک پروژه از SSR، SSG و CSR به‌صورت ترکیبی استفاده کنید. این انعطاف باعث می‌شود برای هر صفحه بهترین روش رندر انتخاب شود و عملکرد بهینه‌تری داشته باشید.

روتینگ ساده و خودکار

سیستم File-Based Routing باعث می‌شود نیازی به تنظیم دستی مسیرها نداشته باشید. ساختار فایل‌ها مستقیماً تبدیل به Route می‌شود و این موضوع توسعه را بسیار ساده‌تر می‌کند.

مناسب برای فول‌استک شدن

Next.js امکان ساخت API داخلی را فراهم می‌کند، بنابراین می‌توانید بدون بک‌اند جدا، منطق سرور را داخل همان پروژه مدیریت کنید.

تجربه توسعه بهتر (DX)

با قابلیت‌هایی مثل HMR، توسعه بسیار سریع‌تر و راحت‌تر انجام می‌شود. تغییرات بلافاصله در مرورگر دیده می‌شوند و نیاز به رفرش دستی نیست.

معایب 

پیچیدگی نسبت به React ساده

برای کسانی که تازه وارد هستند، یادگیری مفاهیمی مثل SSR، SSG و روتینگ فایل‌محور ممکن است کمی سخت‌تر از React ساده باشد.

نیاز به درک مفاهیم سمت سرور

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

محدودیت در پروژه‌های خیلی ساده

برای پروژه‌های کوچک و ساده، استفاده از Next.js ممکن است بیش از حد سنگین باشد و React ساده گزینه بهتری باشد.

وابستگی به اکوسیستم React و Vercel

هرچند Next.js مستقل است، اما بیشترین هماهنگی و بهینه‌سازی آن با React و سرویس Vercel است و این می‌تواند نوعی وابستگی ایجاد کند.

Build و Deploy نسبتاً سنگین‌تر

در پروژه‌های بزرگ، فرآیند build و استقرار ممکن است زمان‌برتر از پروژه‌های ساده React باشد.

انواع رندرینگ در Next.js

Server-Side Rendering (SSR)

یکی دیگر از مزیت‌های مهم Next.js، رندر سمت سرور (SSR) است.

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

  • سرور به‌صورت همزمان با دریافت درخواست، محتوای HTML صفحه را تولید می‌کند 
  • بدون اینکه JavaScript نقش اصلی در رندر اولیه داشته باشد 

مزایای SSR:

  • افزایش سرعت دسترسی به محتوا 
  • عدم نیاز به دانلود کامل برنامه در ابتدا 
  • بهبود تجربه کاربری (User Experience) 
  • بهینه‌سازی برای موتورهای جستجو (SEO Friendly) 

در این حالت، توسعه‌دهنده می‌تواند به‌راحتی از متا‌تگ‌ها (Meta Tags) و تنظیمات سئو در سمت سرور استفاده کند تا صفحات برای موتورهای جستجو بهینه‌تر شوند.

Static Site Generation (SSG)

در این روش، صفحات به‌صورت استاتیک تولید می‌شوند که باعث:

  • بارگذاری سریع‌تر صفحات 
  • بهبود تجربه کاربری 

این مدل‌های رندرینگ را در بخش‌های بعدی به‌صورت کامل‌تر و همراه با تمرین بررسی خواهیم کرد. در این مرحله تنها هدف، داشتن یک دید کلی (Overview) از موضوع است.

تفاوت Server-Side Rendering (SSR) و Static Site Generation (SSG)

نصب Next.js

راه‌اندازی اولین پروژه Next.js و آماده‌سازی محیط توسعه

پیش‌نیازهای نصب

قبل از ایجاد پروژه، باید دو ابزار اصلی روی سیستم شما نصب شده باشد:

Node.js

در اولین قدم باید Node.js را نصب کنید. برای این کار وارد وب‌سایت رسمی Node.js شوید و آخرین نسخه پایدار را دانلود و نصب کنید. فرآیند نصب بسیار ساده است و تنها با چند کلیک انجام می‌شود.

Visual Studio Code (VS Code)

ابزار بعدی که به آن نیاز داریم، ویرایشگر کد Visual Studio Code است. وارد سایت رسمی VS Code شوید و نسخه متناسب با سیستم‌عامل خود را دانلود و نصب کنید. از این محیط برای توسعه پروژه استفاده خواهیم کرد.

پس از نصب پیش‌نیازها، وارد VS Code شوید و یک پوشه (Folder) به‌عنوان Workspace پروژه خود باز کنید. این پوشه محل نگهداری فایل‌های پروژه خواهد بود.

ایجاد پروژه Next.js

در ترمینال VS Code دستور زیر را اجرا کنید:

npx create-next-app@latest

با اجرای این دستور، فرآیند ساخت پروژه آغاز می‌شود و چند سؤال از شما پرسیده خواهد شد:

  • نام پروژه: در اینجا نام پروژه را next-course قرار می‌دهیم. 
  • TypeScript: گزینه فعال‌سازی TypeScript را روی Yes قرار می‌دهیم، زیرا استفاده از آن به شناسایی بهتر خطاهای تایپی کمک می‌کند. 
  • ESLint: این گزینه را نیز فعال می‌کنیم تا خطاهای رایج JavaScript و React بهتر مدیریت شوند. 
  • Tailwind CSS: برای استفاده از Tailwind CSS، این گزینه را روی Yes قرار می‌دهیم. 
  • Source Directory (src/): این گزینه را نیز فعال می‌کنیم تا ساختار پروژه منظم‌تر باشد. 
  • App Router: در این بخش نیز گزینه Yes را انتخاب می‌کنیم، زیرا در نسخه‌های جدید Next.js ساختار پیشنهادی همین حالت است. 
  • Import alias : در این بخش می‌توانیم مقدار پیش‌فرض را تغییر ندهیم و گزینه No را انتخاب کنیم. 

پس از تأیید این تنظیمات، فرآیند نصب پروژه آغاز می‌شود و چند دقیقه زمان خواهد برد.

اجرای پروژه

پس از اتمام نصب، وارد پوشه پروژه شوید:

cd next-course

سپس پروژه را اجرا کنید:

npm run dev

بعد از اجرای این دستور، یک آدرس محلی (معمولاً http://localhost:3000 ) در اختیار شما قرار می‌گیرد. با باز کردن این آدرس در مرورگر، صفحه پیش‌فرض Next.js را مشاهده خواهید کرد.

ساختار فایل‌ها در Next.js

فایل  package.json

این فایل شامل اطلاعات اصلی پروژه است؛ از جمله:

Dependencies (وابستگی‌ها)

در این بخش، پکیج‌های نصب‌شده پروژه قرار دارند. برای مثال:

  • React 
  • Next.js 
  • نسخه‌های مربوط به آن‌ها 

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

Scripts (اسکریپت‌ها)

در این قسمت دستورات اجرای پروژه قرار دارد:

  • Dev  → اجرای پروژه در حالت توسعه (Development Mode) 
  • Build  → گرفتن خروجی نهایی پروژه برای انتشار (Production Build) 
  • Start  → اجرای نسخه build شده روی سرور 
  • Lint  → بررسی خطاهای کدنویسی و استانداردها

next.config.mjs

این فایل مربوط به تنظیمات اصلی Next.js است. در پروژه‌های ساده معمولاً تنظیم خاصی داخل آن وجود ندارد، اما در پروژه‌های بزرگ برای تنظیم رفتار فریمورک استفاده می‌شود.

tsconfig.json

این فایل مربوط به تنظیمات TypeScript است و مشخص می‌کند پروژه چگونه تایپ‌چک و کامپایل شود.

eslintrc.

این فایل مربوط به ESLint است و برای بررسی خطاهای کدنویسی و رعایت استانداردهای کد استفاده می‌شود.

next-env.d.ts

این فایل ارتباط بین TypeScript و Next.js را تعریف می‌کند و معمولاً به‌صورت خودکار ایجاد می‌شود.

gitignore.

این فایل مشخص می‌کند کدام فایل‌ها در Git ذخیره یا ارسال نشوند.

فولدرهای پروژه Next.js

Next.

این فولدر به‌صورت خودکار هنگام اجرای پروژه ساخته می‌شود. شامل فایل‌های build و خروجی موقت پروژه است و نباید آن را تغییر داد یا در Git قرار داد.

node_modules

این فولدر شامل تمام پکیج‌های نصب‌شده پروژه است که با دستور npm install ایجاد می‌شود و معمولاً در Git ذخیره نمی‌شود.

public

در این فولدر فایل‌های عمومی قرار می‌گیرند مثل:

  • تصاویر  
  • آیکون‌ها  
  • فایل‌های استاتیک 

این فایل‌ها مستقیماً در پروژه قابل دسترسی هستند.

فولدر اصلی اپلیکیشن (app)

این فولدر مهم‌ترین بخش پروژه در Next.js است و تمام ساختار صفحات در آن قرار می‌گیرد.

favicon.ico

آیکون پیش‌فرض سایت است که در تب مرورگر نمایش داده می‌شود.

globals.css

در این فایل استایل‌های سراسری (Global Styles) تعریف می‌شوند و روی کل پروژه تأثیر دارند.

layout.tsx

این فایل به‌عنوان قالب اصلی (Layout) برای صفحات استفاده می‌شود و ساختار کلی صفحات را مشخص می‌کند.

page.tsx

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

جریان اجرای پروژه (Execution Flow) در Next.js

زمانی که دستور اجرای پروژه (npm run dev) اجرا می‌شود:

  1. ابتدا Next.js اجرا می‌شود 
  2. فایل layout.tsx به‌عنوان ساختار اصلی لود می‌شود 
  3. سپس محتوای page.tsx داخل آن قرار می‌گیرد 
  4. در نهایت صفحه نهایی در مرورگر نمایش داده می‌شود 

به زبان ساده:

  • layout → قالب کلی صفحه 
  • page → محتوای اصلی صفحه 
  • children → محتوای داخلی که داخل layout رندر می‌شود

جمع‌بندی

Next.js یک فریم‌ورک بر پایه React است که برای ساخت وب‌سایت‌ها و وب‌اپلیکیشن‌های سریع و مدرن استفاده می‌شود. این فریم‌ورک با قابلیت‌هایی مثل رندر سمت سرور (SSR)، تولید صفحات استاتیک (SSG) و روتینگ فایل‌محور، توسعه وب را ساده‌تر و بهینه‌تر می‌کند.

در مجموع، Next.js هم تجربه توسعه خوبی برای برنامه‌نویس فراهم می‌کند و هم در عملکرد، سرعت و سئو به بهبود پروژه کمک می‌کند. به همین دلیل یکی از انتخاب‌های محبوب برای ساخت پروژه‌های واقعی و حرفه‌ای است.

routingnext.jsopen sourceفریمورک

sokan-academy-footer-logo
کلیه حقوق مادی و معنوی این وب‌سایت متعلق به سکان آکادمی می باشد.