Materi ini adalah versi Vite dari konsep routing terpisah. Fokusnya: membuat struktur project yang bersih, mudah dibaca, dan siap dipakai untuk project yang lebih besar.
Cara Lebih Rapi (Routing Dipisah) di Vite
Tujuan
Supaya project React + Vite:
- Lebih rapi
- Mudah dibaca
- Mudah dikembangkan
- Mudah onboarding anggota tim baru
0. Setup Project Vite
npm create vite@latest nama-folder
cd nama-folder
npm install
npm install react-router-dom
npm run dev
Default Vite React memakai file utama main.jsx (bukan index.js).
Struktur Folder yang Disarankan
src/
|
├── components/
| ├── Navbar.jsx
| └── Layout.jsx
|
├── pages/
| ├── Home.jsx
| ├── About.jsx
| ├── Contact.jsx
| ├── Profile.jsx
| └── NotFound.jsx
|
├── routes/
| └── index.jsx
|
├── App.jsx
└── main.jsx
1. Buat File Routing
Buat file:
src/routes/index.jsx
import { Routes, Route } from "react-router-dom";
import Layout from "../components/Layout";
import Home from "../pages/Home";
import About from "../pages/About";
import Contact from "../pages/Contact";
import Profile from "../pages/Profile";
import NotFound from "../pages/NotFound";
function AppRoutes() {
return (
<Routes>
<Route element={<Layout />}>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/contact" element={<Contact />} />
<Route path="/profile" element={<Profile />} />
</Route>
<Route path="*" element={<NotFound />} />
</Routes>
);
}
export default AppRoutes;
2. Hubungkan ke App.jsx
Edit src/App.jsx:
import { BrowserRouter } from "react-router-dom";
import AppRoutes from "./routes";
function App() {
return (
<BrowserRouter>
<AppRoutes />
</BrowserRouter>
);
}
export default App;
3. Pastikan main.jsx Memanggil App
Di Vite, file ini penting sebagai entry point aplikasi:
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.jsx";
import "./index.css";
ReactDOM.createRoot(document.getElementById("root")).render(
<React.StrictMode>
<App />
</React.StrictMode>
);
4. Tambahkan Layout dan Navbar
Supaya menu muncul konsisten di semua halaman, gunakan komponen layout.
src/components/Navbar.jsx:
import { NavLink } from "react-router-dom";
function Navbar() {
return (
<nav>
<NavLink to="/">Home</NavLink>{" "}
| <NavLink to="/about">About</NavLink>{" "}
| <NavLink to="/contact">Contact</NavLink>{" "}
| <NavLink to="/profile">Profile</NavLink>
</nav>
);
}
export default Navbar;
src/components/Layout.jsx:
import { Outlet } from "react-router-dom";
import Navbar from "./Navbar";
function Layout() {
return (
<>
<Navbar />
<hr />
<Outlet />
</>
);
}
export default Layout;
5. Buat Halaman Pages
Contoh isi halaman sederhana:
// src/pages/Home.jsx
function Home() {
return <h1>Ini Halaman Home</h1>;
}
export default Home;
// src/pages/About.jsx
function About() {
return <h1>Ini Halaman About</h1>;
}
export default About;
// src/pages/Contact.jsx
function Contact() {
return <h1>Ini Halaman Contact</h1>;
}
export default Contact;
// src/pages/Profile.jsx
function Profile() {
return <h1>Ini Halaman Profile</h1>;
}
export default Profile;
// src/pages/NotFound.jsx
import { Link } from "react-router-dom";
function NotFound() {
return (
<div>
<h1>404 - Halaman tidak ditemukan</h1>
<Link to="/">Kembali ke Home</Link>
</div>
);
}
export default NotFound;
6. Penjelasan Alur
main.jsx- entry point ViteApp.jsx- pembungkusBrowserRouterAppRoutes- daftar semua URL halamanLayout- template umum (Navbar + Outlet)Route- mapping URL ke komponen halaman
7. Alur Sederhana
User buka URL → main.jsx → App.jsx → AppRoutes → Halaman tampil
Contoh:
/- Home/about- About/contact- Contact/profile- Profile- Path lain - 404 Not Found
8. Menjalankan dan Verifikasi
npm run dev
Buka URL berikut untuk cek hasil:
http://localhost:5173/http://localhost:5173/abouthttp://localhost:5173/contacthttp://localhost:5173/profilehttp://localhost:5173/random-url(harus masuk halaman 404)
9. Troubleshooting Umum
- Blank page: cek apakah
main.jsxbenar-benar merender<App />. - Route tidak pindah: pastikan pakai
LinkatauNavLink, bukan tag<a>biasa. - Error import: cek path relatif dan ekstensi file (
.jsx). - 404 saat deploy static: set rewrite/fallback ke
index.htmldi hosting.
10. Keuntungan Cara Ini
- Kode lebih bersih dan terstruktur
- Penambahan halaman baru jadi cepat
- Cocok untuk skala project yang bertumbuh
- Lebih mudah dipelajari tim/pelajar baru
11. Catatan Deploy Singkat
- Build production:
npm run build - Preview lokal hasil build:
npm run preview - Untuk hosting static (Netlify/Vercel/GitHub Pages), pastikan konfigurasi fallback route sudah benar agar URL selain
/tidak error.
🧩 Ringkasan
- Konsep routing terpisah di Vite tetap sama seperti React pada umumnya
- Perbedaan utamanya: entry point Vite ada di
main.jsx - Pisahkan
routes,pages, dancomponentssejak awal - Tambahkan route 404 agar aplikasi lebih siap dipakai pengguna