π Memahami Struktur Folder Expo di React Native
π Pendahuluan
Ketika kamu menjalankan perintah berikut:
npx create-expo-app MyApp
Expo akan otomatis membuat sebuah folder proyek bernama MyApp.
Di dalamnya terdapat berbagai folder dan file yang sudah diatur untuk memudahkan pengembangan aplikasi React Native.
Berikut contoh struktur folder yang terbentuk:
MyApp/
βββ .expo/
βββ .vscode/
βββ app/
β βββ (tabs)/
β β βββ _layout.tsx
β β βββ explore.tsx
β β βββ index.tsx
β βββ _layout.tsx
β βββ modal.tsx
βββ assets/
β βββ images/
βββ components/
β βββ ui/
β β βββ external-link.tsx
β β βββ haptic-tab.tsx
β β βββ hello-wave.tsx
β β βββ parallax-scroll-view.tsx
β β βββ themed-text.tsx
β β βββ themed-view.tsx
βββ constants/
β βββ theme.ts
βββ hooks/
β βββ use-color-scheme.ts
β βββ use-color-scheme.web.ts
β βββ use-theme-color.ts
βββ node_modules/
βββ scripts/
β βββ reset-project.js
βββ .gitignore
βββ app.json
π§© Penjelasan Tiap Folder dan File
1. .expo/
Berisi:
- Cache proyek
- Metadata hasil build
- File konfigurasi sementara (misalnya data login Expo Go)
β οΈ Catatan: Folder ini dibuat otomatis oleh Expo dan tidak perlu diubah secara manual.
2. .vscode/
Menyimpan pengaturan untuk Visual Studio Code, seperti:
- Format kode otomatis (
settings.json
) - Ekstensi bawaan proyek
Tujuannya agar semua anggota tim memiliki pengaturan editor yang seragam.
3. app/
π±
Inti aplikasi yang berisi semua halaman (screen) dan komponen utama.
File penting di dalamnya:
-
_layout.tsx
β Layout global aplikasi -
index.tsx
β Halaman utama (home screen) -
modal.tsx
β Halaman modal (pop-up)
Subfolder (tabs)/
:
Berisi struktur navigasi tab aplikasi:
-
_layout.tsx
β Layout khusus tab -
explore.tsx
β Halaman tab βExploreβ -
index.tsx
β Halaman tab utama
4. assets/images/
πΌοΈ
Tempat menyimpan file gambar, ikon, atau media lain.
assets/images/logo.png
assets/images/background.jpg
Contoh import di kode:
import logo from '../assets/images/logo.png';
5. components/
βοΈ
Berisi komponen kustom yang digunakan berulang.
Contoh file:
-
hello-wave.tsx
β Animasi sapaan -
haptic-tab.tsx
β Tab dengan efek getar -
themed-text.tsx
,themed-view.tsx
β Mendukung tema terang/gelap
Subfolder ui/
Biasanya berisi elemen UI kecil seperti tombol atau link.
6. constants/
Berisi nilai tetap (konstanta) yang digunakan di seluruh aplikasi.
// constants/theme.ts
export const Colors = {
light: "#ffffff",
dark: "#000000",
};
7. hooks/
π
Berisi custom hooks β fungsi reusable dengan logika tertentu.
Contoh:
-
use-color-scheme.ts
β Mendeteksi mode terang/gelap -
use-theme-color.ts
β Menentukan warna sesuai tema
Contoh penggunaan:
const theme = useThemeColor();
8. node_modules/
π¦
Tempat semua dependensi npm disimpan.
β οΈ Jangan ubah folder ini secara manual.
Folder dibuat otomatis saat menjalankannpm install
.
9. scripts/
Berisi skrip tambahan proyek.
// scripts/reset-project.js
// digunakan untuk menghapus cache dan reset konfigurasi Expo
10. .gitignore
Berisi daftar file dan folder yang tidak disertakan dalam Git.
node_modules/
.vscode/
.expo/
11. app.json
βοΈ
File konfigurasi utama proyek Expo.
{
"expo": {
"name": "MyApp",
"slug": "myapp",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png"
}
}
β Kenapa Folder (tabs)
Menggunakan Tanda Kurung?
Expo (khususnya Expo Router) menggunakan tanda kurung ( )
untuk mengelompokkan routes tanpa memengaruhi URL.
Artinya:
- Folder
(tabs)
tidak muncul di URL - Hanya berfungsi sebagai pengelompokan (grouping)
app/
βββ (tabs)/
β βββ index.tsx
β βββ explore.tsx
β βββ _layout.tsx
βββ settings.tsx
Hasil URL:
File | URL |
---|---|
index.tsx |
/ |
explore.tsx |
/explore |
settings.tsx |
/settings |
π Jadi, URL tidak akan menjadi /tabs/explore
, karena (tabs)
hanya untuk grouping.
π Jika Tanpa Tanda Kurung
app/
βββ tabs/
β βββ index.tsx
β βββ explore.tsx
Maka URL menjadi:
/tabs
/tabs/explore
π Perbandingan
Folder | Efek pada URL | Kegunaan |
---|---|---|
(tabs) |
Tidak muncul di URL | Untuk grouping rute |
tabs |
Muncul di URL | Untuk membuat path sebenarnya |
Top comments (0)