getStaticProps এবং getServerSideProps এর মাধ্যমে ডেটা ফেচ করা

Next.js এর Static Generation এবং Server-Side Rendering - নেক্সট.জেএস (Next.js) - Web Development

229

Next.js ডেটা ফেচ করার জন্য দুটি প্রধান মেথড সরবরাহ করে: getStaticProps এবং getServerSideProps। প্রতিটি মেথড আলাদা রকমের ডেটা রেন্ডারিং প্রক্রিয়া তৈরি করে, যা আপনার অ্যাপ্লিকেশনের পারফরম্যান্স এবং ইউজার এক্সপিরিয়েন্সে গুরুত্বপূর্ণ ভূমিকা পালন করে।

নিচে getStaticProps এবং getServerSideProps এর মাধ্যমে ডেটা ফেচ করার বিস্তারিত ব্যাখ্যা দেওয়া হলো।


১. getStaticProps

getStaticProps একটি স্ট্যাটিক পেজ জেনারেশন ফিচার। এটি Next.js এর Static Generation এর অংশ, যেখানে ডেটা রেন্ডারিং প্রক্রিয়া সাইট বিল্ডের সময় ঘটে এবং পেজটি ব্রাউজারের জন্য স্ট্যাটিকভাবে প্রস্তুত হয়। এই পদ্ধতি সাইটের পারফরম্যান্স উন্নত করে, কারণ পেজের ডেটা একবার ফেচ করার পর, এটি বারবার একইভাবে রেন্ডার হয়।

কিভাবে কাজ করে:

  • getStaticProps শুধুমাত্র Static Generation এর জন্য ব্যবহৃত হয়।
  • এটি সার্ভার সাইডে রান হয় এবং স্ট্যাটিক HTML পেজ তৈরি করতে সাহায্য করে।

উদাহরণ:

ধরা যাক, আপনার একটি ব্লগ পেজ আছে এবং আপনি পোস্টের ডেটা স্ট্যাটিকভাবে ফেচ করতে চান।

// pages/posts.js

export async function getStaticProps() {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts')
  const posts = await res.json()

  return {
    props: {
      posts,
    },
  }
}

export default function Posts({ posts }) {
  return (
    <div>
      <h1>Blog Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  )
}

ব্যাখ্যা:

  • getStaticProps: এটি API থেকে ডেটা ফেচ করে এবং props হিসেবে সেই ডেটা Posts কম্পোনেন্টে পাঠায়।
  • props: { posts }: এখানে posts ডেটা কম্পোনেন্টে প্রপস হিসেবে প্রেরিত হয়, যা UI তে দেখানো হয়।

এটি Static Generation ব্যবহার করে, তাই পেজটি প্রথমবার রেন্ডার হওয়ার সময় ডেটা ফেচ হবে এবং পরবর্তী সব ভিজিটে সেই একই পেজ সরবরাহ করা হবে।


২. getServerSideProps

getServerSideProps একটি Server-side Rendering (SSR) ফিচার। এটি সাইট ভিজিট করার প্রতিবারে রেন্ডারিং হয় এবং ডেটা প্রতি রিকোয়েস্টে সার্ভার থেকে ফেচ হয়। এটি সাধারণত ডাইনামিক ডেটা ব্যবহার করার জন্য উপযুক্ত, যেখানে আপনি চান যে প্রতিবার পেজ লোড হলে ডেটা ফেচ হোক।

কিভাবে কাজ করে:

  • getServerSideProps প্রতিটি পেজ রিকোয়েস্টে রান হয় এবং সার্ভার থেকে ডেটা ফেচ করে।
  • এটি সাধারণত সেশন-ভিত্তিক, ব্যবহারকারীর নির্দিষ্ট ডেটা, বা অন্য কোনো ডাইনামিক কন্টেন্টের জন্য ব্যবহৃত হয়।

উদাহরণ:

ধরা যাক, আপনি ব্যবহারকারীর প্রোফাইল পেজ তৈরি করছেন, যেখানে ব্যবহারকারীর ডেটা সার্ভার থেকে প্রতি রিকোয়েস্টে ফেচ করা হবে।

// pages/profile.js

export async function getServerSideProps(context) {
  const res = await fetch('https://jsonplaceholder.typicode.com/users/1')
  const user = await res.json()

  return {
    props: {
      user,
    },
  }
}

export default function Profile({ user }) {
  return (
    <div>
      <h1>{user.name}'s Profile</h1>
      <p>Email: {user.email}</p>
    </div>
  )
}

ব্যাখ্যা:

  • getServerSideProps: এখানে প্রতি রিকোয়েস্টে ব্যবহারকারীর প্রোফাইল ডেটা ফেচ করা হবে।
  • context: context প্যারামিটারটি ব্যবহারকারীর রিকোয়েস্ট সম্পর্কিত তথ্য ধারণ করে, যেমন URL প্যারামিটার, কুকিজ, হেডার ইত্যাদি।
  • props: { user }: ফেচ করা ডেটা user হিসেবে কম্পোনেন্টে প্রপস হিসেবে পাঠানো হয়।

এটি প্রতিটি রিকোয়েস্টে ডেটা ফেচ করবে এবং সেই অনুযায়ী পেজ রেন্ডার করবে।


getStaticProps এবং getServerSideProps এর তুলনা

ফিচারgetStaticPropsgetServerSideProps
রেন্ডারিং টাইমবিল্ড টাইমে (Static Generation)রিকোয়েস্ট টাইমে (Server-side Rendering)
ব্যবহৃত হয়স্থির ডেটা অথবা সাইটের বিল্ড সময়ের জন্য ডেটাডাইনামিক ডেটা এবং সার্ভার সাইড রিকোয়েস্টের জন্য
পারফরম্যান্সদ্রুত, কারণ ডেটা একবার ফেচ হয়ে যায় এবং সার্ভ করা হয়প্রতিবার রিকোয়েস্টে ডেটা ফেচ হতে হয়, কিছুটা ধীরগতি হতে পারে
SEOভাল SEO, কারণ স্ট্যাটিক পেজ ইন্ডেক্স করা হয়ভাল SEO, কারণ সার্ভার সাইড রেন্ডারিং হয়

সারাংশ

  • getStaticProps সাইট বিল্ডের সময় ডেটা ফেচ করে এবং সেই ডেটা দিয়ে স্ট্যাটিক পেজ তৈরি করে, যা দ্রুত লোড হয়।
  • getServerSideProps প্রতিটি রিকোয়েস্টে ডেটা ফেচ করে এবং সার্ভার সাইড রেন্ডারিং করে, যা ডাইনামিক ডেটার জন্য উপযুক্ত।

আপনি যদি স্থির ডেটা বা যেসব ডেটা মাঝে মাঝে পরিবর্তন হয়, সেগুলোর জন্য getStaticProps ব্যবহার করতে পারেন, আর যদি আপনার ডেটা প্রতিটি রিকোয়েস্টে পরিবর্তিত হয়, তাহলে getServerSideProps ব্যবহার করা উত্তম।

Content added By
Promotion

Are you sure to start over?

Loading...