Tutorial step‑by‑step untuk menginstal, mengkonfigurasi, dan mengoptimalkan proyek Next.js 14 terbaru, lengkap dengan contoh kode, best practice, dan tips keamanan serta performa.
1. Prasyarat dan Persiapan Lingkungan
Pastikan Anda memiliki Node.js versi 20.12 atau lebih tinggi dan npm atau pnpm terbaru. Kami menggunakan pnpm karena lebih cepat dan hemat ruang.
node -v
# v20.12.0
pnpm -v
# 9.5.0
2. Membuat Proyek Next.js 14 Baru
- Jalankan perintah berikut untuk membuat aplikasi dengan template
app(App Router):
pnpm create next-app@latest my-next14-app --ts --app-dir
Opsi --ts menyiapkan TypeScript, yang kini menjadi standar di komunitas Next.js.
3. Struktur Direktori Dasar
Setelah proses selesai, periksa struktur folder utama:
my-next14-app/
├─ app/ # App Router (pages digantikan)
│ ├─ layout.tsx # Root layout
│ ├─ page.tsx # Halaman beranda
│ └─ api/ # Route handler API
├─ public/ # Aset statis
├─ styles/ # CSS/SCSS
├─ next.config.mjs # Konfigurasi Next.js
└─ tsconfig.json # TypeScript config
4. Instalasi Dependency Tambahan
Untuk contoh real‑world, tambahkan beberapa library populer:
pnpm add @tanstack/react-query@5 @headlessui/react@2 tailwindcss@3 postcss@8 autoprefixer@10
Instalasi tailwindcss memudahkan styling utility‑first yang kini terintegrasi langsung dengan Next.js 14.
5. Mengkonfigurasi TailwindCSS
- Inisialisasi Tailwind:
pnpm tailwindcss init -p
File tailwind.config.js akan dibuat. Sesuaikan content agar mencakup folder app:
module.exports = {
content: ["./app/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}"],
theme: { extend: {} },
plugins: [],
};
- Tambahkan Tailwind ke
app/layout.tsx:
import "../styles/globals.css";
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
6. Membuat Server Component Pertama
Server Components dijalankan sepenuhnya di server, mengurangi bundle JavaScript. Buat file app/components/QuoteServer.tsx:
import fetch from "node-fetch";
type Quote = { text: string; author: string };
export default async function QuoteServer() {
const res = await fetch("https://api.quotable.io/random");
const data: Quote = await res.json();
return (
“{data.text}”
);
}
Catatan: Karena ini Server Component, tidak perlu use client directive.
7. Menggabungkan dengan Client Component
Buat app/components/RefreshButton.tsx sebagai Client Component untuk meng‑refresh kutipan:
"use client";
import { useState, useTransition } from "react";
export default function RefreshButton() {
const [isPending, startTransition] = useTransition();
const [key, setKey] = useState(0);
const refresh = () => startTransition(() => setKey(prev => prev + 1));
return (
<>
{/* Force remount QuoteServer dengan key baru */}
>
);
}
8. Menyusun Halaman Utama
Update app/page.tsx untuk menampilkan komponen di atas:
import RefreshButton from "./components/RefreshButton";
export default function Home() {
return (
Next.js 14 Demo
);
}
9. Konfigurasi API Routes dengan Edge Runtime
Next.js 14 mendukung Edge Functions secara native. Buat file app/api/hello/route.ts:
export const runtime = "edge"; // menargetkan Vercel Edge atau Cloudflare Workers
export async function GET() {
return new Response(JSON.stringify({ message: "Hello from Edge!" }), {
headers: { "Content-Type": "application/json" },
});
}
10. Optimasi Build dan Caching
Tambahkan flag experimental di next.config.mjs untuk memanfaatkan Next.js Middleware Caching dan TurboPack (bundler default sejak v13):
export default defineConfig({
reactStrictMode: true,
experimental: {
appDir: true,
serverComponentsExternalPackages: ["node-fetch"],
turbo: { loader: true },
},
images: { remotePatterns: [{ protocol: "https", hostname: "**" }] },
});
11. Menyiapkan CI/CD dengan GitHub Actions
File .github/workflows/deploy.yml:
name: Deploy to Vercel
on:
push:
branches: [main]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: pnpm run build
- name: Deploy
uses: amondnet/vercel-action@v20
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
working-directory: .
prod: true
12. Best Practice Keamanan & Performance
- Env vars: Simpan API key di
.env.localdan gunakanprocess.env.MY_KEYhanya di Server Components. - Header Security: Tambahkan
helmetpadamiddleware.tsuntuk set CSP, X‑Frame‑Options, dll. - Image Optimization: Manfaatkan
next/imagedenganloader: "default"untuk format WebP otomatis. - Lazy Loading: Gunakan
loading="lazy"pada gambar dandynamic()untuk code‑splitting komponen berat. - Cache Control: Atur
Cache‑Controlheader pada API Edge Routes untuk respon statis hingga 1 hour.
13. Deploy ke Vercel (atau alternatif Cloudflare Pages)
- Push repo ke GitHub.
- Buka dashboard Vercel, pilih New Project → import repo.
- Pastikan
Framework Presetterdeteksi sebagai Next.js. - Set environment variables jika ada, lalu deploy.
Deploy selesai dalam beberapa menit, dan aplikasi akan tersedia di URL https://my-next14-app.vercel.app.
14. Debugging & Monitoring
Gunakan next dev untuk hot‑reload lokal. Untuk produksi, integrasikan Vercel Analytics atau LogRocket untuk tracing performance.
# Jalankan mode development
pnpm dev
15. Penutup
Dengan mengikuti langkah‑langkah di atas, Anda memiliki proyek Next.js 14 yang modern, menggunakan App Router, Server Components, TailwindCSS, dan siap di‑deploy dengan CI/CD otomatis. Terapkan best practice keamanan dan performa untuk memastikan aplikasi tetap cepat, aman, dan mudah dipelihara.
Next.js 14 memperkenalkan paradigma baru lewat App Router dan Server Components yang secara signifikan mengurangi ukuran bundle dan meningkatkan SEO. Menggabungkan TailwindCSS, React Query, serta CI/CD berbasis GitHub Actions memberikan workflow yang efisien dan siap produksi. Ikuti tutorial ini, sesuaikan dengan kebutuhan bisnis Anda, dan manfaatkan ekosistem Vercel atau edge platform lain untuk performa optimal.
Tutorial lengkap setup Next.js 14 dengan App Router, Server Components, TailwindCSS, dan CI/CD. Langkah demi langkah, contoh kode, best practice keamanan dan performa untuk Web Development modern.
Programming,Software Engineering,Web Development,Next.js,App Router,Server Components
#Programming #SoftwareEngineering #WebDev #Tech #Coding
0 Komentar