Loading content...
Loading content...
Next.js me:
page.js / layout.js β Server Component by default
Matlab:
Code server pe run hota hai
Browser ko optimized HTML milta hai
π Server pe run hota hai
Database se data fetch
API call
Secret key use karna (safe)
Performance improve karna
plaintext
// Server Component
export default async function Page() {
const data = await fetch("api/data")
return <div>{data.title}</div>
}π Browser pe run hota hai
Button click (onClick)
Form handling
useState, useEffect
localStorage, window
π Top me likho:
plaintext
"use client"plaintext
"use client"
import { useState } from "react"
export default function Counter() {
const [count, setCount] = useState(0)
return (
<button onClick={() => setCount(count + 1)}>
{count}
</button>
)
}FeatureServer ComponentClient ComponentRun kaha hotaServerBrowseruseStateββ useEffectββ API fetchβ β (prefer server)SecurityHighLow
π Props se data bhej sakte ho
plaintext
// Server Component
import LikeButton from "./LikeButton"
export default async function Page() {
const post = { likes: 10 }
return <LikeButton likes={post.likes} />
}plaintext
// Client Component
"use client"
export default function LikeButton({ likes }) {
return <button>{likes} Likes</button>
}π Agar file me "use client" likh diya:
Us file ke saare child components bhi client ban jate hain
π Isliye:
Sirf interactive component me use karo
Pure app me mat lagao (performance down hoga)
plaintext
// Server Component
import Search from "./Search" // client
import Logo from "./Logo" // server
export default function Layout() {
return (
<>
<Logo />
<Search />
</>
)
}π Yeh best pattern hai
π Static = server
π Interactive = client
π Simple:
Server β HTML bhejta ha
Client β usko interactive banata hai
π Example:
Pehle button dikhega
Baad me click kaam karega
plaintext
npx create-next-app@latest my-app
cd my-app
npm run devplaintext
npm install axios
npm install react-iconsplaintext
npm install server-onlyπ Use when:
API keys hide karni ho
π .env variables:
NEXT_PUBLIC_ β client me visible
normal variable β server only
plaintext
API_KEY=secret β client me nahi jayega
NEXT_PUBLIC_URL=abc β
client me jayegaNext.js me 2 type components:
Server (default)
Client ("use client")
Server:
fast + secure
Client:
interactive UI
Best practice:
Mixing both
π Server = data + fast
π Client = UI + click
π "use client" = browser code
π Props = data pass
π npm = package manager