Rilis JavaScript Node.js 14.0 sisi server

ambil tempat melepaskan Node.js 14.0, platform untuk menjalankan aplikasi jaringan dalam JavaScript. Node.js 14.0 termasuk dalam cabang dukungan panjang, tetapi status ini hanya akan ditetapkan pada bulan Oktober, setelah stabilisasi. Dukungan untuk Node.js 14.0 akan tersedia dilakukan hingga April 2023. Pemeliharaan cabang Node.js 12.0 LTS sebelumnya akan berlangsung hingga April 2022, dan cabang 10.0 LTS sebelumnya hingga April 2021. Dukungan untuk cabang pementasan 13.x akan berakhir pada bulan Juni tahun ini.

Utama perbaikan:

  • Kemampuan untuk menghasilkan dengan cepat atau ketika peristiwa tertentu terjadi telah distabilkan laporan diagnostik, yang mencerminkan peristiwa yang membantu mendiagnosis masalah seperti kerusakan, penurunan kinerja, kebocoran memori, beban CPU yang tinggi, keluaran kesalahan yang tidak terduga, dll.
  • Menambahkan dukungan API eksperimental Penyimpanan Lokal Asinkron dengan implementasi kelas AsyncLocalStorage yang dapat digunakan untuk membuat keadaan asinkron dengan penangan berdasarkan callback dan janji. AsyncLocalStorage memungkinkan Anda menyimpan data saat permintaan web sedang diproses, seperti Penyimpanan Thread-Lokal dalam bahasa lain.
  • Menghapus peringatan fitur eksperimental saat boot modul Skrip ECMA 6 terhubung dan diekspor menggunakan pernyataan impor dan ekspor. Pada saat yang sama, implementasi modul ESM masih bersifat eksperimental.
  • Mesin V8 diperbarui ke versi 8.1 (1, 2, 3), yang memperkenalkan pengoptimalan kinerja baru dan menambahkan fitur baru seperti operator gabungan logis baru "??" (mengembalikan operan kanan jika operan kiri NULL atau tidak terdefinisi, dan sebaliknya), tanda "?." untuk pemeriksaan satu kali terhadap seluruh rantai properti atau panggilan (misalnya, "db?.user?.name?.length" tanpa pemeriksaan awal), metode Intl.DisplayName untuk mendapatkan nama yang dilokalkan, dll.
  • Streams API telah dirombak untuk meningkatkan konsistensi Streams API dan mengatasi perbedaan perilaku bagian inti Node.js. Misalnya, perilaku http.OutgoingMessage mirip dengan stream.Writable, dan net.Socket mirip dengan stream.Duplex. Opsi autoDestroy diatur ke "true" secara default, artinya "_destroy" akan dipanggil setelah selesai.
  • Menambahkan dukungan API eksperimental WSASI (Antarmuka Sistem WebAssembly) yang menyediakan antarmuka pemrograman untuk interaksi langsung dengan sistem operasi (POSIX API untuk bekerja dengan file, soket, dll.).
  • Peningkatan persyaratan untuk versi minimum kompiler dan platform: macOS 10.13 (High Sierra), GCC 6, Windows lebih baru dari 7/2008R2.

Ingatlah bahwa platform Node.js dapat digunakan baik untuk pemeliharaan server aplikasi Web maupun untuk membuat program jaringan klien dan server biasa. Untuk memperluas fungsionalitas aplikasi untuk Node.js, diperlukan upaya besar kumpulan modul, di mana Anda dapat menemukan modul dengan implementasi server dan klien HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modul untuk integrasi dengan berbagai kerangka web, penangan WebSocket dan Ajax, konektor ke DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), mesin templat, mesin CSS, implementasi algoritma kripto dan sistem otorisasi (OAuth), parser XML.

Untuk memastikan pemrosesan permintaan paralel dalam jumlah besar, Node.js menggunakan model eksekusi kode asinkron berdasarkan penanganan peristiwa non-pemblokiran dan definisi penangan panggilan balik. Metode yang didukung untuk koneksi multiplexing adalah epoll, kqueue, /dev/poll, dan select. Perpustakaan digunakan untuk koneksi multiplexing libuv, yang merupakan suprastruktur atas gratis pada sistem Unix dan melalui IOCP pada Windows. Perpustakaan digunakan untuk membuat kumpulan thread libeio, untuk melakukan kueri DNS dalam mode non-pemblokiran terintegrasi kekuatiran. Semua panggilan sistem yang menyebabkan pemblokiran dieksekusi di dalam kumpulan thread dan kemudian, seperti penangan sinyal, mentransfer hasil pekerjaannya kembali melalui pipa (pipa) yang tidak disebutkan namanya. Eksekusi kode JavaScript disediakan melalui penggunaan mesin yang dikembangkan oleh Google V8 (Selain itu, Microsoft sedang mengembangkan varian Node.js dengan mesin Chakra-Core).

Pada intinya, Node.js mirip dengan framework. Perl Acara Apa Pun, Mesin Acara Ruby, Python Memutar ΠΈ penerapan peristiwa di Tcl, tetapi perulangan peristiwa di Node.js disembunyikan dari pengembang dan menyerupai penanganan peristiwa dalam aplikasi web yang berjalan di browser. Saat menulis aplikasi untuk node.js, Anda perlu mempertimbangkan spesifikasi pemrograman berbasis peristiwa, misalnya, daripada melakukan "var result = db.query("select..");" dengan menunggu penyelesaian pekerjaan dan pemrosesan hasil selanjutnya, Node.js menggunakan prinsip eksekusi asynchronous, yaitu. kode diubah menjadi "db.query("pilih..", fungsi (hasil) {hasil pemrosesan});", di mana kontrol akan langsung diteruskan ke kode selanjutnya, dan hasil kueri akan diproses saat data tiba. .

Sumber: opennet.ru

Tambah komentar