Apakah ada manfaat kinerja untuk menggunakan salah satunya?
Jawaban saat ini adalah tidak, karena tidak ada mesin browser saat ini yang mengimplementasikan import/export
dari standar ES6.
Beberapa grafik perbandingan http://kangax.github.io/compat-table/es6/ tidak memperhitungkan ini, jadi ketika Anda melihat hampir semua hijau untuk Chrome, berhati-hatilah.import
kata kunci dari ES6 belum diperhitungkan.
Dengan kata lain, mesin browser saat ini termasuk V8 tidak dapat mengimpor file JavaScript baru dari file JavaScript utama melalui arahan JavaScript apa pun.
(Kami mungkin masih beberapa bug saja atau beberapa tahun lagi hingga V8 mengimplementasikannya sesuai dengan spesifikasi ES6.)
Dokumen ini adalah yang kita butuhkan, dan dokumen ini ini yang harus kita patuhi.
Dan standar ES6 mengatakan bahwa dependensi modul harus ada sebelum kita membaca modul seperti dalam bahasa pemrograman C, di mana kita memiliki .h
file (header) .
Ini adalah struktur yang baik dan teruji, dan saya yakin para ahli yang menciptakan standar ES6 memikirkan hal itu.
Inilah yang memungkinkan Webpack atau paket bundler lain untuk mengoptimalkan bundel dalam beberapa kasus khusus , dan mengurangi beberapa dependensi dari bundel yang tidak diperlukan. Tetapi dalam kasus kita memiliki dependensi sempurna ini tidak akan pernah terjadi.
Dibutuhkan waktu hingga import/export
dukungan asli ditayangkan, dan require
kata kunci tidak akan pergi ke mana pun untuk waktu yang lama.
Apa require
?
Ini adalah node.js
cara memuat modul. ( https://github.com/nodejs/node )
Node menggunakan metode tingkat sistem untuk membaca file. Anda pada dasarnya mengandalkan itu ketika menggunakan require
. require
akan berakhir pada beberapa panggilan sistem sepertiuv_fs_open
(tergantung pada sistem akhir, Linux, Mac, Windows) untuk memuat file / modul JavaScript.
Untuk memeriksa apakah ini benar, coba gunakan Babel.js, dan Anda akan melihat bahwa import
kata kunci akan dikonversi menjadi require
.
node --experimental-modules index.mjs
memungkinkan Anda menggunakanimport
tanpa Babel dan berfungsi di Node 8.5.0+. Anda dapat (dan harus) juga mempublikasikan paket npm Anda sebagai ESModule asli , dengan kompatibilitas ke belakang untukrequire
cara lama .