Analogi Sederhana
Bayangkan kamu punya restoran:
export default
→ Menu utama restoran
→ Setiap restoran punya satu hidangan andalan yang paling terkenal.export const
→ Menu tambahan
→ Restoran juga punya beberapa hidangan lain yang bisa dipesan.
Misalnya, di restoran Jepang:
- Hidangan utama (
export default
) → Sushi - Hidangan tambahan (
export const
) → Ramen, Takoyaki, Matcha Latte
Saat pelanggan datang:
- Kalau mereka pesan “menu utama”, mereka akan otomatis dapat Sushi, tanpa harus menyebut nama spesifiknya.
- Kalau mereka pesan hidangan tambahan, mereka harus menyebut nama makanannya dengan benar.
Perbedaan export default
vs export const
dalam Kode
Sekarang, kita buat contoh nyata dalam kode JavaScript.
File: restaurant.js
// Menu utama restoran (export default)
export default function sushi() {
return "This is the best sushi in town!";
}
// Menu tambahan (export const)
export const ramen = () => "Enjoy your hot ramen!";
export const takoyaki = () => "Delicious Takoyaki!";
File: app.js
import sushi, { ramen, takoyaki } from "./restaurant.js";
console.log(sushi()); // Output: This is the best sushi in town!
console.log(ramen()); // Output: Enjoy your hot ramen!
console.log(takoyaki()); // Output: Delicious Takoyaki!
Perbedaan yang Terlihat
- Ekspor default (
sushi
) diimpor tanpa{}
dan bisa dinamai apa saja saat diimpor.import sushiSpecial from "./restaurant.js"; console.log(sushiSpecial()); // Output: This is the best sushi in town!
- Ekspor named (
ramen
,takoyaki
) harus diimpor dengan{}
dan namanya tidak bisa diubah.
(Kita bisa mengganti namanya denganimport { ramen as hotRamen } from "./restaurant.js"; console.log(hotRamen()); // Output: Enjoy your hot ramen!
as
, tetapi tetap harus pakai{}
.)
Perbandingan Lebih Detail
Fitur | export default |
export const |
---|---|---|
Jumlah ekspor per file | Hanya satu | Bisa lebih dari satu |
Cara mengimpor | import bebasNama from "file.js" |
import { namaAsli } from "file.js" |
Bisa ganti nama? | Ya, bebas diubah saat impor | Tidak langsung, harus pakai as |
Perlu {} saat impor? |
Tidak | Ya |
Kapan Menggunakan export default
dan export const
?
Situasi | Gunakan export default |
Gunakan export const |
---|---|---|
Jika modul hanya memiliki satu fitur utama | ✅ | ❌ |
Jika modul memiliki banyak fitur independen | ❌ | ✅ |
Jika ingin bebas mengganti nama saat impor | ✅ | ❌ |
Jika ingin impor beberapa fitur dari satu file | ❌ | ✅ |
Contoh di Dunia Nyata
-
Ekspor default cocok untuk satu fitur utama
- React.js menggunakan
export default
untuk komponen utama:export default function Button() { return <button>Click me</button>; }
import Button from "./Button.js"; // Bebas mengganti nama
- React.js menggunakan
-
Ekspor named cocok untuk banyak fungsi
- Lodash atau utility functions sering menggunakan
export const
:export const add = (a, b) => a + b; export const subtract = (a, b) => a - b;
import { add, subtract } from "./math.js"; // Harus pakai nama yang sesuai
- Lodash atau utility functions sering menggunakan
Kesimpulan
- Gunakan
export default
jika modul hanya memiliki satu hal utama yang akan digunakan.
(Misalnya: satu fungsi utama, satu class utama, satu komponen utama.) - Gunakan
export const
jika modul memiliki banyak hal yang bisa diekspor dan digunakan secara terpisah.
(Misalnya: beberapa fungsi helper, beberapa variabel konfigurasi, beberapa kelas.)
Mudah dipahami kan?
0 Comments