Platform JavaScript bahagian pelayan Node.js 21.0 tersedia

Node.js 21.0 telah dikeluarkan, platform untuk menjalankan aplikasi rangkaian dalam JavaScript. Cawangan Node.js 21.0 akan disokong selama 6 bulan. Dalam beberapa hari akan datang, penstabilan cawangan Node.js 20 akan selesai, yang akan menerima status LTS dan akan disokong sehingga April 2026. Penyelenggaraan cawangan LTS Node.js 18.0 sebelum ini akan berlangsung sehingga September 2025, dan tahun sebelum cawangan LTS terakhir 16.0 hingga April 2024.

Penambahbaikan utama:

  • API Ambil telah diisytiharkan stabil, direka untuk memuatkan sumber melalui rangkaian dan memudahkan penulisan kod JavaScript universal yang sesuai untuk bekerja pada bahagian pelayan dan klien. Pelaksanaan adalah berdasarkan kod daripada klien HTTP/1.1 undici dan sedekat mungkin dengan API serupa yang disediakan dalam penyemak imbas. API termasuk kaedah fetch() dan objek Headers. Permintaan dan Respons, mewakili pengepala HTTP, permintaan dan respons. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = tunggu res.json(); console.log(data); }
  • Sokongan untuk API WebStreams, yang menyediakan akses kepada aliran data yang diterima melalui rangkaian, telah distabilkan. API memungkinkan untuk menambah pengendali anda sendiri yang berfungsi dengan data apabila maklumat tiba melalui rangkaian, tanpa menunggu keseluruhan fail dimuat turun. Objek yang tersedia dalam Node.js termasuk ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream dan DecompressionStream.
  • Menambah pelaksanaan eksperimen klien WebSocket, serasi dengan penyemak imbas. Untuk mendayakan sokongan WebSocket, bendera "--experimental-websocket" disediakan.
  • Menambahkan mod percubaan untuk menggunakan pelaksanaan lalai modul JavaScript ESM (Modul ECMAScript, digunakan dalam modul untuk penyemak imbas) dan bukannya CommonJS (khusus untuk Node.js). Perubahan tidak menjejaskan modul yang formatnya ditakrifkan secara eksplisit melalui medan "jenis" dalam package.json, ditentukan melalui bendera "--input-type" atau jelas disebabkan sambungan fail (.mjs untuk ESM, .cjs untuk CommonJS). Walau bagaimanapun, modul yang tidak ditakrifkan secara eksplisit sebagai CommonJS (contohnya, mempunyai sambungan ".js") akan dianggap sebagai modul ESM apabila mod baharu didayakan. Untuk mengaktifkan tetapan modul baharu, bendera "--experimental-default-type" telah dicadangkan.
  • Enjin V8 telah dikemas kini kepada versi 11.8, digunakan dalam Chromium 118, yang kini menyokong kaedah ArrayBuffer.prototype.transfer, keupayaan untuk menyusun tatasusunan (kaedah groupBy) dan arahan WebAssembly untuk pemprosesan pemalar (i32.add, i32.sub, i32.mul, i64 .add, i64.sub dan i64.mul).
  • Sokongan untuk pengendali GlobalPreload telah dihentikan, memihak kepada pendaftaran dan memulakan panggilan untuk mengkonfigurasi modul.
  • Pilihan "flush" telah ditambahkan pada fungsi fs.writeFile untuk memaksa data disiram ke pemacu selepas setiap operasi tulis.
  • Prestasi kod yang dipertingkatkan berkaitan dengan penghuraian URL, ambil API, strim, node:fs dan HTTP.
  • Menambahkan objek navigator global. Contohnya, untuk mendapatkan data tentang bilangan teras CPU, anda boleh menggunakan sifat navigator.hardwareConcurrency.
  • Dalam parameter β€œβ€”test”, sokongan untuk topeng glob telah ditambahkan untuk memilih ujian untuk dijalankan (contohnya, anda boleh menentukan β€œβ€”test **/*.test.js.”).
  • Pengurus pakej yang digabungkan npm 10.2.0 dan penghurai llhttp 9.1.2 telah dikemas kini.
  • Sokongan untuk Visual Studio 2019 dan versi macOS yang lebih lama daripada 11.0 telah dihentikan.

Platform Node.js boleh digunakan untuk penyelenggaraan pelayan aplikasi Web dan untuk mencipta program rangkaian pelanggan dan pelayan biasa. Untuk mengembangkan fungsi aplikasi untuk Node.js, koleksi modul yang besar telah disediakan, di mana anda boleh mencari modul dengan pelaksanaan HTTP, SMTP, XMPP, DNS, FTP, IMAP, pelayan dan klien POP3, modul untuk penyepaduan dengan pelbagai rangka kerja web, pengendali WebSocket dan Ajax , penyambung DBMS (MySQL, PostgreSQL, SQLite, MongoDB), enjin templat, enjin CSS, pelaksanaan algoritma kripto dan sistem kebenaran (OAuth), penghurai XML.

Untuk memastikan pemprosesan sejumlah besar permintaan selari, Node.js menggunakan model pelaksanaan kod tak segerak berdasarkan pengendalian acara tanpa sekatan dan takrifan pengendali panggil balik. Kaedah yang disokong untuk pemultipleksan sambungan ialah epoll, kqueue, /dev/poll, dan pilih. Untuk pemultipleksan sambungan, perpustakaan libuv digunakan, yang merupakan tambahan untuk libev pada sistem Unix dan IOCP pada Windows. Pustaka libeio digunakan untuk mencipta kumpulan benang, dan c-ares disepadukan untuk melaksanakan pertanyaan DNS dalam mod tidak menyekat. Semua panggilan sistem yang menyebabkan penyekatan dilaksanakan di dalam kumpulan benang dan kemudian, seperti pengendali isyarat, memindahkan hasil kerja mereka kembali melalui paip (paip) yang tidak dinamakan. Pelaksanaan kod JavaScript disediakan melalui penggunaan enjin V8 yang dibangunkan oleh Google (selain itu, Microsoft sedang membangunkan versi Node.js dengan enjin Chakra-Core).

Pada terasnya, Node.js adalah serupa dengan Perl AnyEvent, Mesin Acara Ruby, rangka kerja Python Twisted dan pelaksanaan acara Tcl, tetapi gelung acara dalam Node.js disembunyikan daripada pembangun dan menyerupai pengendalian acara dalam aplikasi web yang berjalan. dalam pelayar. Apabila menulis aplikasi untuk node.js, anda perlu mempertimbangkan khusus pengaturcaraan dipacu peristiwa, sebagai contoh, dan bukannya melakukan "var result = db.query("select..");" dengan menunggu penyiapan kerja dan pemprosesan hasil seterusnya, Node.js menggunakan prinsip pelaksanaan tak segerak, i.e. kod diubah menjadi "db.query("select..", function (result) {result processing});", di mana kawalan akan serta-merta beralih kepada kod selanjutnya, dan hasil pertanyaan akan diproses apabila data tiba.

Sumber: opennet.ru

Tambah komen