Ekstensi File .jsx vs .js
Saat membuat aplikasi React, kita akan sering menemukan file dengan ekstensi:
.jsx
atau:
.js
Keduanya dapat digunakan untuk menyimpan kode React, termasuk JSX. Perbedaan utamanya lebih berkaitan dengan konvensi proyek dan konfigurasi build tools, bukan kemampuan browser.
1. Apa Itu .jsx?
.jsx merupakan ekstensi file yang umum digunakan untuk file yang berisi JavaScript dengan JSX.
Contoh:
function Header() {
return (
<header>
<h1>My Website</h1>
</header>
);
}
export default Header;
File tersebut dapat disimpan sebagai:
Header.jsx
Penggunaan .jsx membantu developer mengetahui bahwa file tersebut kemungkinan besar berisi JSX.
2. Apa Itu .js?
.js merupakan ekstensi standar untuk file JavaScript.
Namun, dalam banyak proyek React, file .js juga dapat berisi JSX.
Contoh:
function Header() {
return (
<header>
<h1>My Website</h1>
</header>
);
}
export default Header;
File tersebut dapat disimpan sebagai:
Header.js
Jadi, .js tidak selalu berarti file tersebut hanya berisi JavaScript tanpa JSX.
3. Apakah Browser Mendukung .jsx?
Browser tidak menjalankan JSX secara langsung.
Misalnya:
function App() {
return <h1>Hello React!</h1>;
}
Browser tidak dapat langsung memahami sintaks JSX tersebut.
Kode JSX harus terlebih dahulu diproses oleh build tools atau development tools.
Secara sederhana:
File JSX
│
▼
Build Process
│
▼
JavaScript
│
▼
Browser
Dalam proyek React modern, tools seperti Vite dapat melakukan proses transformasi tersebut.
4. .jsx Bukan Syarat React
Penggunaan .jsx bukan merupakan persyaratan wajib dari React.
Kita dapat memiliki:
App.jsx
atau:
App.js
keduanya dapat digunakan untuk component React selama build tools proyek mendukungnya.
Contoh:
// App.jsx
function App() {
return <h1>Hello React!</h1>;
}
dan:
// App.js
function App() {
return <h1>Hello React!</h1>;
}
Keduanya dapat berisi React Component.
5. Mengapa Banyak Proyek Menggunakan .jsx?
Penggunaan .jsx sering dipilih sebagai konvensi agar developer dapat langsung mengetahui jenis file tersebut.
Misalnya:
src/
├── App.jsx
├── Header.jsx
├── Product.jsx
└── Footer.jsx
Dari nama file tersebut, kita dapat memperkirakan bahwa file-file tersebut berisi JSX atau React Component.
Sedangkan file yang hanya berisi JavaScript biasa dapat menggunakan:
utils.js
api.js
helpers.js
Contoh:
src/
├── App.jsx
├── Header.jsx
├── Product.jsx
├── api.js
└── helpers.js
Namun, ini hanyalah konvensi. Aturan sebenarnya tetap bergantung pada konfigurasi proyek.
6. Import File dengan Ekstensi
Ketika menggunakan component dari file lain, kita menggunakan import.
Contoh:
import Header from "./Header.jsx";
Pada beberapa proyek, kita juga dapat menulis:
import Header from "./Header";
Keduanya dapat bekerja tergantung pada konfigurasi module resolver dan build tools yang digunakan.
7. Import dengan Ekstensi Lengkap
Contoh:
import Header from "./Header.jsx";
atau:
import helper from "./helpers.js";
Pada konfigurasi tertentu, penulisan ekstensi lengkap mungkin diperlukan.
8. Import Tanpa Ekstensi
Pada konfigurasi proyek tertentu, ekstensi dapat dihilangkan.
Contoh:
import Header from "./Header";
Build tools akan mencari file yang sesuai, misalnya:
Header.jsx
atau:
Header.js
tergantung konfigurasi resolver.
9. Contoh Struktur Proyek
Misalnya kita memiliki struktur:
src/
├── App.jsx
├── Header.jsx
├── Product.jsx
└── utils.js
Di dalam App.jsx:
import Header from "./Header";
import Product from "./Product";
import { calculatePrice } from "./utils";
Build tools akan menangani proses resolusi file tersebut sesuai konfigurasi proyek.
10. Apakah Harus Selalu Menggunakan .jsx?
Tidak.
Anda dapat menggunakan .jsx jika ingin membedakan file yang berisi JSX dari file JavaScript biasa.
Contoh:
App.jsx
Header.jsx
Product.jsx
Sedangkan:
api.js
utils.js
helpers.js
Namun, ada juga proyek yang menggunakan .js untuk hampir semua file:
App.js
Header.js
Product.js
Keduanya merupakan pendekatan yang valid selama didukung oleh build tools proyek.
11. Konvensi yang Sering Digunakan
Salah satu pola yang mudah dipahami adalah:
src/
├── components/
│ ├── Header.jsx
│ ├── Footer.jsx
│ └── ProductCard.jsx
│
├── utils/
│ └── formatPrice.js
│
├── App.jsx
└── main.jsx
Dengan pola tersebut:
.jsx→ biasanya digunakan untuk file yang berisi JSX..js→ biasanya digunakan untuk JavaScript biasa.
Namun, sekali lagi, ini merupakan konvensi, bukan aturan mutlak React.
Poin Penting
.jsx
Digunakan sebagai ekstensi yang umum untuk file yang berisi JSX.
App.jsx
.js
Merupakan ekstensi JavaScript dan juga dapat digunakan untuk file yang berisi JSX jika build tools mendukungnya.
App.js
Browser
Browser tidak memahami JSX secara langsung.
JSX
↓
Build Process
↓
JavaScript
↓
Browser
Import
Ekstensi dapat ditulis lengkap:
import App from "./App.jsx";
atau dapat dihilangkan:
import App from "./App";
tergantung konfigurasi proyek.
Kesimpulan
Perbedaan .jsx dan .js dalam proyek React bukan berarti React hanya dapat menggunakan .jsx.
Keduanya dapat digunakan untuk membuat React Component selama konfigurasi build tools mendukungnya.
Secara umum:
.jsx → JavaScript yang berisi JSX
.js → JavaScript, dan dapat juga berisi JSX
Yang perlu dipahami adalah browser tidak menjalankan JSX secara langsung. JSX diproses terlebih dahulu oleh build tools seperti Vite sebelum akhirnya dikirim sebagai JavaScript yang dapat dijalankan oleh browser.
Jadi, ketika membuat project React, ikuti konvensi dan konfigurasi project yang sedang digunakan agar penamaan file dan syntax import tetap konsisten.