Ada sesuatu yang saya pikir sangat membingungkan ketika bekerja React
.
Ada banyak contoh yang tersedia di internet yang menggunakan .js
file dengan reaksi tetapi banyak lainnya menggunakan .jsx
file.
Saya telah membaca tentang .jsx
file dan pengertian saya adalah mereka membiarkan Anda menulis tag html di dalam file Anda javascript
. Tetapi hal yang sama dapat ditulis dalam .js
file juga.
Jadi apa perbedaan sebenarnya antara kedua ekstensi ini .js
dan .jsx
?
.jsx
bukan persyaratanDalam sebagian besar kasus, itu hanya kebutuhan untuk transpiler / bundler, yang mungkin tidak dikonfigurasi untuk bekerja dengan file JSX, tetapi dengan JS! Jadi, Anda terpaksa menggunakan file JS bukan JSX.
Dan karena reaksi hanyalah pustaka untuk javascript, tidak ada bedanya bagi Anda untuk memilih antara JSX atau JS. Mereka benar-benar dipertukarkan!
Dalam beberapa kasus, pengguna / pengembang mungkin juga memilih JSX daripada JS, karena penyorotan kode, tetapi sebagian besar editor yang lebih baru juga melihat sintaks reaksi dengan benar dalam file JS.
sumber
Tag JSX (
<Component/>
) jelas bukan javascript standar dan tidak memiliki arti khusus jika Anda memasukkannya ke dalam<script>
tag telanjang misalnya. Karenanya semua Bereaksi file yang mengandung mereka adalah JSX dan bukan JS.Secara konvensi, titik masuk dari aplikasi Bereaksi biasanya. Js bukan .jsx meskipun berisi komponen Bereaksi. Mungkin juga .jsx. File JSX lainnya biasanya memiliki ekstensi .jsx.
Bagaimanapun, alasan ada ambiguitas adalah karena pada akhirnya ekstensi tidak terlalu penting karena transpiler dengan senang hati mengunyah segala jenis file selama mereka sebenarnya JSX.
Saran saya adalah: jangan khawatir tentang itu.
sumber
var elem = <div>Text</div>;
bukan elemen html standar; itu tidak mendukungappendChild
,classList
dan mungkin fitur html lainnya. Jika Anda ingin tag html langsung di javascript, lebih baik menggunakan templat literal (backtick`
) bersama denganinnerHtml
atauouterHtml
.Selain fakta yang disebutkan bahwa tag JSX bukan javascript standar, alasan saya menggunakan ekstensi .jsx adalah karena dengan itu Emmet masih berfungsi di editor - Anda tahu, plugin yang berguna yang memperluas kode html, misalnya ul> li ke
sumber
"emmet.includeLanguages": { "javascript": "javascriptreact" }
:, tapi ya, saya setuju bahwa kode JSX harus menggunakan ekstensi .jsx jika memungkinkan.Seperti yang disebutkan lainnya
JSX
bukanlah ekstensi Javascript standar. Lebih baik menyebutkan titik masuk Aplikasi Anda berdasarkan.js
dan untuk komponen lainnya, yang dapat Anda gunakan.jsx
.Saya memiliki alasan penting mengapa saya menggunakan
.JSX
semua nama file komponen. Sebenarnya, dalam proyek skala besar dengan banyak kode, jika kita mengatur semua komponen React dengan.jsx
ekstensi, itu akan lebih mudah saat menavigasi ke file javascript yang berbeda di seluruh proyek (seperti helpers, middleware, dll.) Dan Anda tahu ini Komponen Bereaksi dan bukan tipe lain dari file javascript.sumber
JSX bukan JavaScript standar, berdasarkan panduan gaya Airbnb 'eslint' dapat mempertimbangkan pola ini
sebagai peringatan, jika Anda menamai file Anda MyComponent.jsx itu akan berlalu, kecuali jika Anda mengedit aturan eslint Anda dapat memeriksa panduan gaya di sini
sumber