TechIT TECH IN HINDI
what is next js (In Hindi)
Coding info

what is next js (In Hindi)

TechIT — Banti Kevat जून 27, 2026 5 min read
Listen to this article (Hindi/English)
what is next js

Next.js क्या है और हमें इसकी ज़रूरत क्यों पड़ी? एक Senior Developer का नज़रिया

मेरे प्यारे दोस्तों, अगर आप काफी समय से ReactJS पर काम कर रहे हैं, तो आपने एक बात ज़रूर नोटिस की होगी। जब भी हम React में कोई बड़ी एप्लीकेशन बनाते हैं, तो शुरुआत में तो सब कुछ बहुत बढ़िया चलता है। लेकिन जैसे ही हमारी एप्लीकेशन बड़ी होने लगती है, हमारे सामने Search Engine Optimization (SEO), Initial Page Load Time, और Routing Management जैसी बड़ी समस्याएं खड़ी होने लगती हैं।

आज आपका यह भाई, जिसके पास कोडिंग का दशकों का अनुभव है, आपके साथ बैठकर बिल्कुल आसान और देसी अंदाज़ में चर्चा करेगा कि आखिर Next.js क्या है, यह हमारी जिंदगी को कैसे आसान बनाता है, और क्यों आज के समय में हर React Developer को इसे सीखना ही चाहिए। तो अपनी चाय या कॉफी अपने पास रख लीजिए, और चलिए शुरू करते हैं!

---

ReactJS की वो सीमाएं (Limitations) जिसने Next.js को जन्म दिया

दोस्तों, सीधे Next.js पर कूदने से पहले, हमें यह समझना होगा कि पारंपरिक ReactJS में क्या कमियां थीं। जब हम React का इस्तेमाल करके एक Single Page Application (SPA) बनाते हैं, तो वह डिफ़ॉल्ट रूप से Client-side Rendering (CSR) का इस्तेमाल करती है।

Client-side Rendering (CSR) कैसे काम करता है?

जब कोई यूजर आपकी React वेबसाइट पर आता है, तो सर्वर से ब्राउज़र को एक खाली HTML फ़ाइल मिलती है, जो कुछ इस तरह दिखती है:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>My React App</title>
  </head>
  <body>
    <div id="root"></div> <!-- बिल्कुल खाली! -->
    <script src="/static/js/main.chunk.js"></script>
  </body>
</html>

ध्यान देने वाली बात ये है कि इस HTML फ़ाइल के अंदर कोई कंटेंट नहीं होता। इसके बाद ब्राउज़र भारी-भरकम JavaScript Bundle (`main.chunk.js`) को डाउनलोड करता है, उसे Parse करता है, और फिर React Component स्क्रीन पर रेंडर होते हैं।

CSR की मुख्य समस्याएं:

  • खराब SEO (Search Engine Optimization): Google, Bing, या Yahoo के Search Crawlers जब आपकी वेबसाइट पर आते हैं, तो उन्हें केवल एक खाली `<div id="root"></div>` मिलता है। हालांकि Google Bot अब JavaScript को रन कर सकता है, लेकिन बाकी के Crawlers और Social Media Bots (जैसे Facebook, Twitter previews) इसे रीड नहीं कर पाते।
  • धीमा Initial Load Time (Slow FCP): अगर यूजर का इंटरनेट कनेक्शन धीमा है या उनका डिवाइस पुराना है, तो जब तक पूरी JavaScript डाउनलोड और रन नहीं होगी, तब तक यूजर को केवल एक सफेद खाली स्क्रीन (White Screen of Death) दिखाई देगी।
  • जटिल कॉन्फ़िगरेशन: खुद से Code Splitting, Route-based Lazy Loading, और SSR सेटअप करना किसी दुःस्वप्न (Nightmare) से कम नहीं है।

यहीं पर एंट्री होती है Next.js की! Next.js एक बेहद ताकतवर React Framework है जिसे Vercel कंपनी ने बनाया है। यह NodeJS के ऊपर रन होता है और हमें आउट-ऑफ-द-बॉक्स सर्वर-साइड रेंडरिंग जैसी कमाल की सुविधाएं देता है।

---

Next.js के कोर रेंडरिंग पैटर्न्स (Core Rendering Patterns)

दोस्तों, Next.js को समझने का मतलब है इसके रेंडरिंग पैटर्न्स को गहराई से समझना। Next.js हमें केवल एक तरीके से बंधने नहीं देता, बल्कि यह हमें प्रोजेक्ट की ज़रूरत के हिसाब से अलग-अलग रेंडरिंग मेथड्स चुनने की आज़ादी देता है:

1. Server-Side Rendering (SSR)

SSR में, जब भी कोई यूजर किसी पेज के लिए रिक्वेस्ट भेजता है, सर्वर उसी समय डेटाबेस से डेटा फेच करता है, HTML पेज तैयार करता है, और ब्राउज़र को पूरी तरह से पॉप्युलेटेड HTML भेजता है।

  • फायदा: बेहतरीन SEO और बहुत तेज़ Initial Paint.
  • कब इस्तेमाल करें: ऐसे पेजों के लिए जहां डेटा लगातार बदलता रहता है (जैसे Share Market Dashboard या Social Media Feed)।

2. Static Site Generation (SSG)

SSG में, आपकी वेबसाइट के सभी पेज Build Time (जब आप `npm run build` चलाते हैं) पर ही जनरेट होकर सर्वर पर स्टोर हो जाते हैं। जब कोई यूजर रिक्वेस्ट करता है, तो बिना किसी डेटाबेस क्वेरी के सीधे HTML फाइल सर्व कर दी जाती है।

  • फायदा: बिजली जैसी तेज़ स्पीड, क्योंकि सर्वर को कोई काम नहीं करना पड़ता। CDN (Content Delivery Network) से सीधे पेज लोड होता है।
  • कब इस्तेमाल करें: ब्लॉग वेबसाइट्स, पोर्टफोलियो, या डॉक्यूमेंटेशन पेजों के लिए।

3. Incremental Static Regeneration (ISR)

यह Next.js का सबसे जादुई फीचर है! मान लीजिए आपके पास 10,000 प्रोडक्ट्स हैं। आप नहीं चाहेंगे कि हर बार छोटा सा बदलाव करने पर पूरी वेबसाइट री-बिल्ड हो। ISR की मदद से आप बैकग्राउंड में बिना पूरी साइट को दोबारा बिल्ड किए स्पेसिफिक स्टेटिक पेजों को अपडेट कर सकते हैं।

---

Next.js App Router: Routing का नया और आधुनिक तरीका

Next.js 13 के बाद से एक नया क्रांतिकारी Routing System पेश किया गया जिसे हम App Router कहते हैं। यह React Server Components (RSC) के आर्किटेक्चर पर आधारित है।

इसमें हमें किसी बाहरी लाइब्रेरी जैसे `react-router-dom` की ज़रूरत नहीं पड़ती। Next.js में File-system Based Routing होती है। यानी आप `src/app` डायरेक्टरी के अंदर जैसे फ़ोल्डर्स बनाएंगे, वैसे ही आपके Routes तय होंगे:

  • `src/app/page.js` -> मुख्य डोमेन (Homepage: `/`)
  • `src/app/about/page.js` -> About Page (`/about`)
  • `src/app/blog/[id]/page.js` -> Dynamic Blog Page (`/blog/123` या `/blog/my-first-post`)

ध्यान देने वाली बात ये है कि `app` डायरेक्टरी के अंदर के सभी कंपोनेंट्स डिफ़ॉल्ट रूप से React Server Components होते हैं। यानी वे सीधे सर्वर पर रेंडर होते हैं, जिससे क्लाइंट-साइड पर भेजी जाने वाली JavaScript का साइज बहुत कम हो जाता है।

---

चलो कोडिंग करते हैं: एक Production-Ready Next.js एप्लीकेशन बनाना

दोस्तों, सिर्फ थ्योरी पढ़ने से कोई डेवलपर नहीं बनता। चलिए अब अपने हाथों को थोड़ा गंदा करते हैं और एक पूरी तरह से फंक्शनल Next.js (App Router) एप्लीकेशन बनाते हैं जो सर्वर से डेटा फेच करेगी और क्लाइंट साइड पर इंटरएक्टिविटी भी हैंडल करेगी।

स्टेप 1: नया प्रोजेक्ट सेटअप करना

अपने टर्मिनल में नीचे दिए गए कमांड को चलाएं:

npx create-next-app@latest nextjs-mastery-app

सेटअप के दौरान आपसे कुछ सवाल पूछे जाएंगे। आप इन सेटिंग्स को चुन सकते हैं:

  • Would you like to use TypeScript? No (हम इसे आसान रखने के लिए JS का उपयोग करेंगे)
  • Would you like to use ESLint? Yes
  • Would you like to use Tailwind CSS? Yes
  • Would you like to use `src/` directory? Yes
  • Would you like to use App Router? (recommended) Yes
  • Would you like to customize the default import alias (@/*)? No

अब अपने प्रोजेक्ट फ़ोल्डर के अंदर जाएं और डेवलपमेंट सर्वर शुरू करें:

cd nextjs-mastery-app
npm run dev

आपका प्रोजेक्ट अब `http://localhost:3000` पर लाइव हो चुका है!

---

स्टेप 2: Server Component बनाना (डेटा फेच करने के लिए)

अब हम `src/app/users` नाम का एक फ़ोल्डर बनाएंगे और उसके अंदर एक `page.js` फ़ाइल बनाएंगे। यह एक Server Component होगा जो सीधे API से डेटा फेच करेगा। इसमें हमें कोई `useEffect` या `useState` लगाने की कोई ज़रूरत नहीं है!

Create file: src/app/users/page.js

import React from "react";
import CounterButton from "../components/CounterButton";

// यह एक Server Component है जो सीधे डेटा फेच कर रहा है
async function getUsers() {
  const response = await fetch("https://jsonplaceholder.typicode.com/users", {
    next: { revalidate: 3600 }, // 1 घंटे के लिए डेटा को कैश करेगा (ISR)
  });

  if (!response.ok) {
    throw new Error("Failed to fetch user data from API");
  }

  return response.json();
}

export default async function UsersPage() {
  const users = await getUsers();

  return (
    <div className="min-h-screen bg-slate-900 text-slate-100 p-8">
      <div className="max-w-4xl mx-auto">
        <h1 className="text-4xl font-extrabold text-blue-400 mb-6">
          Our Awesome Users (Server-side Fetched)
        </h1>
        
        <p className="text-slate-400 mb-8">
          यह पूरा डेटा सर्वर पर फेच हुआ है और सीधे रेंडर होकर क्लाइंट को मिला है। बेहतरीन SEO और गति!
        </p>

        <div className="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
          {users.map((user) => (
            <div 
              key={user.id} 
              className="bg-slate-800 p-6 rounded-xl border border-slate-700 shadow-lg hover:border-blue-500 transition duration-300"
            >
              <h2 className="text-xl font-bold text-white mb-2">{user.name}</h2>
              <p className="text-sm text-slate-400"><strong>Email:</strong> {user.email}</p>
              <p className="text-sm text-slate-400"><strong>Company:</strong> {user.company.name}</p>
              <p className="text-sm text-slate-400"><strong>City:</strong> {user.address.city}</p>
            </div>
          ))}
        </div>

        {/* हम यहाँ अपना Client Component इम्पोर्ट कर रहे हैं */}
        <div className="bg-slate-800 p-8 rounded-xl border border-slate-700 text-center">
          <h3 className="text-lg font-semibold mb-4 text-slate-300">
            Need some Client-side Interactivity?
          </h3>
          <CounterButton />
        </div>
      </div>
    </div>
  );
}
---

स्टेप 3: Client Component बनाना (इंटरएक्टिविटी के लिए)

चूंकि ऊपर वाला कंपोनेंट एक Server Component है, इसलिए हम उसमें React Hooks (जैसे `useState`) का इस्तेमाल सीधे नहीं कर सकते। इसके लिए हमें एक अलग Client Component बनाना होगा और उसके सबसे ऊपर `"use client"` डायरेक्टिव लिखना होगा।

Create file: src/app/components/CounterButton.js

"use client"; // यह Next.js को बताता है कि यह फाइल क्लाइंट साइड पर चलेगी

import React, { useState } from "react";

export default function CounterButton() {
  const [count, setCount] = useState(0);

  const handleIncrement = () => {
    setCount((prev) => prev + 1);
  };

  const handleDecrement = () => {
    if (count > 0) {
      setCount((prev) => prev - 1);
    }
  };

  return (
    <div className="flex flex-col items-center justify-center gap-4">
      <div className="text-2xl font-bold text-yellow-400">
        Count Value: <span className="text-white">{count}</span>
      </div>
      
      <div className="flex gap-4">
        <button
          onClick={handleDecrement}
          className="px-6 py-2 bg-red-600 hover:bg-red-700 text-white font-semibold rounded-lg shadow-md transition duration-200"
        >
          Decrement
        </button>
        
        <button
          onClick={handleIncrement}
          className="px-6 py-2 bg-green-600 hover:bg-green-700 text-white font-semibold rounded-lg shadow-md transition duration-200"
        >
          Increment
        </button>
      </div>
    </div>
  );
}
---

स्टेप 4: Next.js API Routes (Backend in Frontend!)

दोस्तों, Next.js केवल एक फ्रंटएंड फ्रेमवर्क नहीं है। यह आपको बिना ExpressJS का अलग से सर्वर बनाए, अपनी फुल-स्टैक एप्लीकेशन बनाने की शक्ति देता है। आप सीधे `src/app/api` फ़ोल्डर के अंदर API Endpoints बना सकते हैं।

चलिए एक साधारण API Route बनाते हैं जो डेटाबेस से डेटा लाने जैसा व्यवहार करेगा।

Create file: src/app/api/status/route.js

import { NextResponse } from "next/server";

// GET रिक्वेस्ट हैंडलर
export async function GET() {
  const databaseStatus = {
    status: "healthy",
    uptime: process.uptime(),
    message: "Next.js API is working seamlessly!",
    timestamp: new Date().toISOString(),
  };

  return NextResponse.json(databaseStatus, {
    status: 200,
    headers: {
      "Cache-Control": "public, s-maxage=10, stale-while-revalidate=59",
    },
  });
}

अब जब आप ब्राउज़र में `http://localhost:3000/api/status` पर जाएंगे, तो आपको सुंदर JSON रिस्पॉन्स दिखाई देगा। यानी अब आप फ्रंटएंड और बैकएंड दोनों को एक ही कोडबेस (Monorepos) में मैनेज कर सकते हैं, जो आपके MERN Stack के प्रोजेक्ट्स को और भी सॉलिड और फास्ट बना देता है।

---

Common Errors & Troubleshooting (डेवलपर्स को आने वाली आम समस्याएं)

मेरे 50 साल के काल्पनिक तजुर्बे में मैंने देखा है कि डेवलपर्स अक्सर Next.js पर काम करते समय कुछ बुनियादी गलतियां करते हैं। आइए उनके बारे में बात करें और उन्हें हल करना सीखें।

1. Hydration Mismatch Error

यह बहुत ही आम और सिरदर्द देने वाला एरर है। यह तब आता है जब सर्वर पर रेंडर हुआ HTML और क्लाइंट पर पहले रेंडर (Hydration phase) के दौरान मिला HTML आपस में मेल नहीं खाता।

उदाहरण के लिए:

// यह कोड Hydration Error पैदा करेगा!
export default function BadComponent() {
  const currentTime = new Date().toLocaleTimeString(); // सर्वर पर अलग होगा, क्लाइंट पर अलग!
  return <div>Current Time: {currentTime}</div>;
}

समाधान: ऐसी डायनेमिक चीज़ों के लिए `useEffect` का इस्तेमाल करें ताकि वे केवल क्लाइंट पर रेंडर हों, या फिर `ssr: false` के साथ डायनेमिक इम्पोर्ट का इस्तेमाल करें:

"use client";
import React, { useState, useEffect } from "react";

export default function GoodComponent() {
  const [time, setTime] = useState("");

  useEffect(() => {
    setTime(new Date().toLocaleTimeString());
  }, []);

  return <div>Current Time: {time || "Loading..."}</div>;
}

2. "use client" का गलत इस्तेमाल

कई बार लोग गलती से सोच लेते हैं कि उन्हें अपनी फाइल में हर जगह `"use client"` लिखना है। याद रखें, आप जितना अधिक Server Components का उपयोग करेंगे, आपकी एप्लीकेशन की परफॉर्मेंस उतनी ही बेहतर होगी। केवल वहीं `"use client"` लिखें जहां आपको Event Listeners (`onClick`, `onChange`), Hooks (`useState`, `useEffect`), या Browser APIs (`window`, `document`) की ज़रूरत हो।

---

Performance & Scalability Best Practices (बेहतरीन परफॉर्मेंस के नियम)

  1. Next.js Image Component का उपयोग करें: सामान्य `<img>` टैग का उपयोग करने से बचें। हमेशा `next/image` का उपयोग करें। यह इमेज को ऑटोमैटिकली मॉडर्न फ़ॉर्मेट्स (जैसे WebP) में कन्वर्ट करता है, लेज़ी-लोड करता है, और स्क्रीन साइज़ के हिसाब से रीसाइज़ करता है।
  2. Font Optimization: गूगल फोंट्स को एक्सटर्नल लिंक से लोड करने के बजाय `next/font/google` का उपयोग करें। यह फोंट्स को बिल्ड टाइम पर ही डाउनलोड कर लेता है, जिससे Layout Shift (CLS) की समस्या खत्म हो जाती है।
  3. Route Handlers में Caching: हमेशा ध्यान रखें कि आपकी API रिक्वेस्ट कैश्ड हो सकती हैं। अगर आपको हर बार फ्रेश डेटा चाहिए, तो `export const revalidate = 0` या Dynamic Headers का प्रयोग करें।
---

Toh dosto, humne aaj seekha...

तो मेरे प्यारे दोस्तों, आज की हमारी इस गहरी और विस्तृत चर्चा में हमने जाना कि Next.js सिर्फ एक लाइब्रेरी नहीं है, बल्कि एक ऐसा पावरहाउस फ्रेमवर्क है जो React की हर बड़ी कमजोरी को दूर करता है। चाहे बात SEO की हो, तेज़ लोडिंग स्पीड की हो, या सर्वर और क्लाइंट को एक साथ मिलाकर एक बेहतरीन यूजर एक्सपीरियंस तैयार करने की हो, Next.js हर मोर्चे पर खरा उतरता है।

हमने कोडिंग के ज़रिए एक प्रोडक्शन-रेडी आर्किटेक्चर को देखा, जहाँ सर्वर कंपोनेंट से डेटा लाकर उसे क्लाइंट कंपोनेंट के इंटरएक्टिव बटन्स के साथ जोड़ा। अगर आप अपने करियर को अगले लेवल पर ले जाना चाहते हैं और हाई-परफॉर्मेंस वेब एप्स बनाना चाहते हैं, तो Next.js पर महारत हासिल करना आपकी पहली प्राथमिकता होनी चाहिए। इसे अपने अगले प्रोजेक्ट में ज़रूर आज़माएं और देखें कि कोडिंग कितनी आसान और मजेदार हो जाती है।

---

Frequently Asked Questions (FAQs)

Q1: क्या Next.js सीखने के लिए ReactJS का आना ज़रूरी है?

जी हाँ, बिल्कुल! Next.js पूरी तरह से ReactJS के ऊपर बना एक फ्रेमवर्क है। इसलिए आपको React के बेसिक्स जैसे Components, Props, Hooks (useState, useEffect), और State Management की अच्छी समझ होनी चाहिए। उसके बाद Next.js सीखना आपके लिए बच्चों का खेल बन जाएगा।

Q2: React Server Components (RSC) और Client Components में क्या अंतर है?

React Server Components (RSC) सीधे सर्वर पर रेंडर होते हैं, जिससे क्लाइंट साइड पर शून्य (zero) जावास्क्रिप्ट बंडल जाता है, और यह डेटाबेस के साथ सीधे कम्यूनिकेट कर सकते हैं। इसके विपरीत, Client Components ब्राउज़र में हाइड्रेट होते हैं और इनका उपयोग इंटरएक्टिविटी, इवेंट्स और हुक्स को हैंडल करने के लिए किया जाता है, जिसके लिए सबसे ऊपर "use client" लिखना ज़रूरी होता है।

Q3: Next.js में API Routes का उपयोग करने के क्या फायदे हैं?

Next.js के API Routes आपको अपने फ्रंटएंड प्रोजेक्ट के भीतर ही सर्वरलेस सर्वर बनाने की अनुमति देते हैं। इससे आपको एक अलग एक्सप्रेस सर्वर (ExpressJS) बनाने और उसे अलग से डिप्लॉय करने की आवश्यकता नहीं होती। आप सीधे डेटाबेस से कनेक्ट हो सकते हैं और सुरक्षित रूप से सीक्रेट कीज़ (API Keys) को सर्वर-साइड पर हैंडल कर सकते हैं।

Kya yeh article helpful tha?

B
Banti KevatFounder

TechIT ka founder · M.Tech AI student · Ujjain, MP. React, AI aur coding ko simple Hindi mein sikhaata hoon taaki har student aage badh sake. 🇮🇳

Advertisement

Related ArticlesAapko yeh bhi pasand aayega

Loading...

टिप्पणियाँ

Hum aapke experience ko behtar banane ke liye cookies use karte hain. Site use karke aap hamari Privacy Policy se sehmat hain.