Getting Started with Next.js
Listen it as a podcast
Introduction to Next.js
Next.js is a React framework that enables several extra features, including server-side rendering and generating static websites.
Setting Up Your First Project
To create a new Next.js project, run the following command in your terminal:
npx create-next-app my-next-app
This will set up a new Next.js project with the following structure:
Directory/File | Purpose |
---|---|
/app |
App Router pages and layouts |
/public |
Static files like images |
/components |
Reusable UI components |
next.config.js |
Next.js configuration |
package.json |
Project dependencies |
Pages and Routing
Next.js has a file-system based router built on the concept of pages. When a file is added to the pages directory, it's automatically available as a route.
Here's a simple page component:
// app/page.jsx
export default function HomePage() {
return (
<div>
<h1>Welcome to Next.js!</h1>
<p>This is a simple Next.js page.</p>
</div>
);
}
Data Fetching
Next.js has three functions for data fetching:
- getStaticProps: Fetch data at build time
- getStaticPaths: Specify dynamic routes to pre-render based on data
- getServerSideProps: Fetch data on each request
Here's an example of using getStaticProps
:
// Example of getStaticProps in Pages Router
export async function getStaticProps() {
const res = await fetch('https://api.example.com/data');
const data = await res.json();
return {
props: {
data,
},
// Re-generate the page at most once per 10 seconds
revalidate: 10,
};
}
export default function Blog({ data }) {
return (
<ul>
{data.map((item) => (
<li key={item.id}>{item.title}</li>
))}
</ul>
);
}
"use server";
export async function createPost(data: FormData) {
// Database interaction
}
Next.js Architecture
Here's a simple diagram showing the Next.js architecture:
Comparison with Other Frameworks
Here's how Next.js compares to other popular frameworks:
Feature | Next.js | Create React App | Gatsby | Remix |
---|---|---|---|---|
SSR | ✅ | ❌ | ❌ | ✅ |
SSG | ✅ | ❌ | ✅ | ❌ |
File-based routing | ✅ | ❌ | ✅ | ✅ |
API Routes | ✅ | ❌ | ❌ | ✅ |
Zero Config | ✅ | ✅ | ❌ | ❌ |
TypeScript Support | ✅ | ✅ | ✅ | ✅ |
Conclusion
Next.js is a powerful framework that makes building React applications easier and more efficient. With features like server-side rendering, static site generation, and API routes, it's a great choice for modern web development.