Next.js 14 terus menjadi pilihan utama untuk pengembangan web modern. Tutorial ini membimbing Anda langkah demi langkah mulai dari instalasi, konfigurasi, hingga implementasi fitur-fitur terbaru seperti App Router dan React Server Components, serta tips best practice dan deployment ke Vercel.
1. Prasyarat dan Persiapan Lingkungan
Sebelum memulai, pastikan Anda memiliki:
- Node.js v20.x atau lebih baru (unduh di nodejs.org)
- npm v10 atau Yarn (pilihan pribadi)
- Git untuk version control
- Akun Vercel (opsional untuk deployment)
2. Membuat Project Next.js 14 Baru
- Jalankan perintah berikut untuk membuat aplikasi baru dengan template
app-router:
Perintah ini menginisialisasi proyek dengan strukturnpx create-next-app@latest my-next14-app --experimental-app-routerapp/yang baru diperkenalkan di Next.js 13 dan disempurnakan di versi 14. - Masuk ke direktori project:
cd my-next14-app - Instal dependensi tambahan untuk TypeScript (opsional namun direkomendasikan):
Kemudian jalankannpm install -D typescript @types/react @types/nodenpm run devuntuk menghasilkantsconfig.jsonsecara otomatis.
3. Memahami Struktur App Router
Folder app/ menggantikan pages/. Setiap folder di dalam app/ mewakili route, dan file page.tsx atau page.jsx menjadi entry point.
app/
├─ layout.tsx // Shared layout
├─ page.tsx // Home route (/)
├─ dashboard/
│ └─ page.tsx // /dashboard
└─ api/
└─ hello/route.ts // API route example
4. Membuat Layout Global dengan Server Components
- Buat file
app/layout.tsx:import './globals.css'; export const metadata = { title: 'Next.js 14 Demo', description: 'Demo aplikasi dengan App Router dan Server Components', }; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( {children} ); }File ini otomatis dijalankan di server, sehingga Anda dapat mengakses API atau database tanpa mengirimkan kode ke client.
5. Menambahkan Halaman Dashboard dengan Data Fetching Server Side
- Buat folder
app/dashboarddan filepage.tsx:import Image from 'next/image'; // Server Component – fetch data langsung di server async function getStats() { const res = await fetch('https://api.example.com/stats', { cache: 'no-store' }); if (!res.ok) throw new Error('Failed to fetch stats'); return res.json(); } export default async function DashboardPage() { const stats = await getStats(); return ( ); }Dashboard
Total Users: {stats.users}
Active Sessions: {stats.sessions}
Karena file ini merupakan Server Component, panggilan
fetchtidak dibundel ke client, meningkatkan performa dan keamanan.
6. Menggunakan Client Component untuk Interaktivitas
- Buat file
app/dashboard/RefreshButton.tsx:'use client'; import { useRouter } from 'next/navigation'; export default function RefreshButton() { const router = useRouter(); return ( ); }Dengan menambahkan
'use client'di atas, komponen ini dijalankan di browser, memungkinkan penggunaan hook React sepertiuseStateatauuseEffect. - Import di
DashboardPagedan sematkan:import RefreshButton from './RefreshButton'; ......
7. Konfigurasi TypeScript, ESLint, dan Prettier
- Instal paket linting:
npm install -D eslint prettier eslint-config-next eslint-plugin-react-hooks - Buat
.eslintrc.json:{ "extends": ["next/core-web-vitals", "plugin:react-hooks/recommended"], "rules": { "react/react-in-jsx-scope": "off" } } - Tambahkan
.prettierrcsederhana:{ "singleQuote": true, "trailingComma": "all" } - Update
package.jsonscripts:"lint": "next lint", "format": "prettier --write ."
8. Mengamankan API Routes dengan Middleware
Next.js 14 mendukung middleware di folder middleware.ts. Contoh autentikasi JWT:
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const token = request.cookies.get('auth');
if (!token) return NextResponse.redirect(new URL('/login', request.url));
// Validasi token (simplified)
try {
// verify(token) // implement dengan library jsonwebtoken
return NextResponse.next();
} catch {
return NextResponse.redirect(new URL('/login', request.url));
}
}
export const config = {
matcher: ['/dashboard/:path*', '/api/protected/:path*']
};
9. Optimasi Performance dengan Edge Runtime
Untuk mengurangi latency, ubah API route menjadi Edge Function:
// app/api/hello/route.ts
export const runtime = 'edge';
export async function GET() {
return new Response(JSON.stringify({ message: 'Hello from Edge!' }), {
headers: { 'Content-Type': 'application/json' }
});
}
Edge runtime dijalankan di CDN terdekat, ideal untuk respon cepat.
10. Deploy ke Vercel
- Push repository ke GitHub.
- Buka vercel.com, klik New Project, pilih repo Anda.
- Vercel secara otomatis mendeteksi Next.js, pilih
Framework Preset: Next.js. - Jika menggunakan variabel lingkungan (mis. JWT secret), tambahkan di Settings → Environment Variables.
- Deploy! Vercel akan memberikan URL preview dan production.
11. Best Practice untuk Next.js 14
- Gunakan Server Components untuk data‑intensive UI. Ini mengurangi bundle size dan meningkatkan SEO.
- Manfaatkan Incremental Static Regeneration (ISR) bila data tidak berubah tiap request. Contoh:
export const revalidate = 60; // seconds - Selalu set
cache: 'no-store'untuk data sensitif. - Jaga ukuran gambar dengan
next/imagedanloadercustom CDN. - Audit bundle dengan
next builddannext lintsebelum release.
12. Debugging & Monitoring
Gunakan built‑in next dev untuk hot‑reload. Untuk produksi, integrasikan dengan Sentry atau LogRocket melalui middleware error handling.
Dengan mengikuti langkah‑langkah di atas, Anda kini memiliki aplikasi Next.js 14 yang modern, aman, dan siap produksi. Manfaatkan App Router, React Server Components, dan Edge Runtime untuk performa maksimal, serta praktik CI/CD melalui Vercel untuk deployment tanpa friction. Terus eksplorasi fitur baru seperti Turbopack dan Middleware API untuk menjaga aplikasi Anda tetap di garis depan teknologi web.
Tutorial lengkap setup Next.js 14 dengan App Router, React Server Components, middleware, Edge Runtime, dan deployment ke Vercel. Langkah demi langkah, contoh kode, dan best practice untuk developer web modern.
Programming,Software Engineering,Web Development
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar