Pada April 2022, rilis NodeJS Node v18 dikeluarkan. Pembaruan Node v18 telah menjadi salah satu pembaruan yang paling dinanti sejak Node v14, yang menambahkan API penyimpanan lokal async, Antarmuka Sistem Perakitan Web (WASI), dan dukungan untuk Modul ECMAScript.

Pemutakhiran v18 menambahkan berbagai peningkatan pada NodeJS, termasuk API pengambilan yang diaktifkan secara global secara default, dukungan API aliran web, dan modul runner pengujian inti. Di sini kami membahas sebagian besar perubahan signifikan pada NodeJS di v18.

1. Ambil API

Fetch API menyediakan antarmuka untuk mengakses dan memanipulasi permintaan dan respons HTTP. Sebelum NodeJS v18, permintaan HTTP yang dibuat dengan NodeJS memerlukan perpustakaan pihak ketiga seperti aksio dan pengambilan simpul atau yang rumit http atau https kemasan.

NodeJS v18 membuat fetch API tersedia dalam lingkup global secara default. API pengambilan global menghilangkan kebutuhan akan perpustakaan pihak ketiga seperti aksio dan kode verbose yang terkait dengan https paket saat mengambil sumber daya secara asinkron di seluruh jaringan.

instagram viewer

Berikut adalah contoh penggunaan API:

konstan getData = tidak sinkronfungsi () {
mencoba {
konstan res = menunggu ambil("https://example.com/users");
konstan data = menunggu res.json();
menghibur.log (data);
} menangkap (kesalahan) {
menghibur.catatan('Ada yang salah, ${kesalahan}`);
}
};
getData();

Itu dapatkan data fungsi di atas mengirimkan DAPATKAN permintaan untuk mengambil sumber daya dari " https://example.com/users". Fetch API juga mengambil parameter kedua opsional, objek opsi. Objek opsi harus berisi detail tentang permintaan. Sebagai contoh:

konstan data pengguna = {
nama: "Jon Snow",
usia: 25,
jenis kelamin: "M",
};
konstan data pos = tidak sinkronfungsi (data) {
mencoba {
konstan res = menunggu ambil("https://contoh.com/pengguna", {
metode: "POS",
tubuh: JSON.stringify (data),
});
konstan data tanggapan = menunggu res.json();
menghibur.catatan(
`Permintaan berhasil, Berikut detailnya: ${responseData}`
);
} menangkap (kesalahan) {
menghibur.catatan(`Permintaan tidak berhasil, Berikut detailnya: ${kesalahan}`);
}
};
postData (data pengguna);

Meskipun API pengambilan masih eksperimental, itu harus bekerja dengan baik untuk sebagian besar pengguna.

2. Dukungan untuk Web Streams API

Pikirkan aplikasi multimedia atau real-time; ini adalah kasus penggunaan inti dari web-streams API. Web stream API adalah sekumpulan antarmuka yang memungkinkan perincian terprogram dari sumber daya besar yang diterima melalui jaringan menjadi potongan-potongan kecil, kemudian memprosesnya sedikit demi sedikit.

Contoh aliran adalah badan respons yang dikembalikan oleh yang berhasil mengambil meminta. Badan respons bertipe Aliran yang Dapat Dibaca.

NodeJS v18 mengekspos dan eksperimental implementasi API aliran web. Dengan pembaruan ini, API aliran web sekarang tersedia di klien dan server, membuat pengembangan lebih mudah.

Anda dapat menemukan daftar aliran yang saat ini didukung di catatan rilis resmi.

3. Modul Pelari Uji

Di versi NodeJS sebelumnya, pengujian tanpa library pihak ketiga dilakukan dengan built-in menegaskan Perpustakaan.

Itu menegaskan library membuatnya mudah untuk menulis tes sederhana, tetapi memiliki batasan signifikan yang membuatnya sulit untuk bekerja dengan beberapa rangkaian tes. Keterbatasan ini mendorong kebutuhan perpustakaan pihak ketiga seperti Jest untuk menjalankan tes yang lebih maju.

NodeJS v18 menghilangkan kebutuhan akan perpustakaan pihak ketiga dengan pengenalan modul runner pengujian inti milik NodeJS sendiri. Test runner mendukung fitur seperti subtests, test skipping, callback test, dll., seperti Jest.

Untuk menggunakan test runner, Anda harus mengimpor menegaskan dari menegaskan dan uji dari simpul: tes. Perhatikan "simpul:" awalan; itu adalah protokol baru Node yang membedakan paket inti node dari paket yang dibuat pengguna.

konstanmenegaskan = membutuhkan("menegaskan");
konstan tes = memerlukan("simpul: uji");

Berikut adalah contoh pengujian sederhana menggunakan modul test runner:

uji("Periksa apakah stringnya sama", (t) => {
tegaskan.strictEqual("uji", "uji");
});

Hasil tes yang ditampilkan oleh pelari tes akan di TAP (Uji Protokol Apa Pun) format. Perhatikan bahwa fitur ini masih eksperimental dan dapat berubah sewaktu-waktu.

4. Peningkatan dan Perbaikan Lainnya

Pembaruan Node v18 juga menampilkan pembaruan mesin v8 ke versi 10.1. Mesin v8 adalah runtime JavaScript yang digunakan oleh NodeJS untuk mengeksekusi JavaScript.

Pembaruan v8 membuat metode lariktemukanTerakhir dan temukanIndeksTerakhir tersedia di NodeJS dan meningkatkan kinerja bidang kelas dan metode kelas pribadi.

NodeJS juga mengekspos API berikut pada lingkup global dalam pemutakhiran Node v18:

  • Gumpal
  • Saluran Brodcast

Upgrade ke Node v18

Dengan menggunakan Node v18, Anda dapat menguji seluruh aplikasi tanpa pustaka eksternal, mengambil sumber daya secara asinkron tanpa pustaka eksternal, dan mengaktifkan aliran web di server Anda.

Namun, perlu dicatat bahwa fitur-fitur ini masih eksperimental dan dapat berubah kapan saja. Anda dapat meningkatkan ke NodeJS v18 menggunakan tautan unduhan resmi.