Keluaran JavaScript Node.js 14.0 bahagian pelayan

mengambil tempat melepaskan Node.js 14.0,platform untuk menjalankan aplikasi rangkaian dalam JavaScript. Node.js 14.0 ialah cawangan sokongan jangka panjang, tetapi status ini hanya akan diberikan pada bulan Oktober, selepas penstabilan. Node.js 14.0 akan disokong dijalankan sehingga April 2023. Penyelenggaraan cawangan LTS Node.js 12.0 sebelumnya akan berlangsung sehingga April 2022, dan tahun sebelum cawangan LTS terakhir 10.0 hingga April 2021. Sokongan untuk cawangan pementasan 13.x akan berakhir pada bulan Jun tahun ini.

Utama penambahbaikan:

  • Keupayaan untuk menjana dengan cepat atau apabila berlakunya peristiwa tertentu telah distabilkan laporan diagnostik, yang memaparkan peristiwa yang membantu mendiagnosis masalah seperti ranap sistem, kemerosotan prestasi, kebocoran memori, beban CPU yang berat, output ralat yang tidak dijangka, dsb.
  • Menambahkan sokongan API percubaan Storan Tempatan Async dengan pelaksanaan kelas AsyncLocalStorage, yang boleh digunakan untuk mencipta keadaan tak segerak dengan pengendali berdasarkan panggilan balik dan janji. AsyncLocalStorage membolehkan anda menyimpan data semasa permintaan web sedang diproses, mengingatkan storan setempat-benang dalam bahasa lain.
  • Mesej amaran yang dialih keluar tentang ciri percubaan semasa memuatkan modul Skrip ECMAS 6 disambungkan dan dieksport menggunakan penyata import dan eksport. Pada masa yang sama, pelaksanaan modul ESM itu sendiri kekal sebagai eksperimen.
  • Enjin V8 dikemas kini kepada versi 8.1 (1, 2, 3), yang merangkumi pengoptimuman prestasi baharu dan ciri seperti operator penggabungan logik baharu "??" (mengembalikan operan kanan jika operan kiri adalah NULL atau tidak ditentukan, dan sebaliknya), pengendali "?." untuk semakan sekali sahaja bagi keseluruhan rangkaian sifat atau panggilan (contohnya, "db?.user?.name?.length" tanpa semakan awal), kaedah Intl.DisplayName untuk mendapatkan nama setempat, dsb.
  • Semakan API Aliran telah dijalankan, bertujuan untuk meningkatkan ketekalan API Aliran dan menghapuskan perbezaan dalam gelagat bahagian asas Node.js. Contohnya, gelagat http.OutgoingMessage adalah dekat dengan stream.Writable, dan net.Socket adalah serupa dengan stream.Duplex. Pilihan autoDestroy ditetapkan kepada "benar" secara lalai, yang bermaksud memanggil "_destroy" setelah selesai.
  • Menambahkan sokongan API percubaan ADAKAH SAYA (Antara Muka Sistem WebAssembly), menyediakan antara muka perisian untuk interaksi langsung dengan sistem pengendalian (POSIX API untuk bekerja dengan fail, soket, dll.).
  • Peningkatan keperluan untuk versi minima penyusun dan platform: macOS 10.13 (High Sierra), GCC 6, Windows lebih baharu 7/2008R2.

Mari kita ingat bahawa platform Node.js boleh digunakan untuk sokongan sisi pelayan bagi aplikasi Web dan untuk mencipta program rangkaian pelanggan dan pelayan biasa. Untuk mengembangkan kefungsian aplikasi untuk Node.js, sejumlah besar koleksi modul, di mana anda boleh menemui modul dengan pelaksanaan pelayan dan pelanggan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modul untuk penyepaduan dengan pelbagai rangka kerja web, pengendali WebSocket dan Ajax, penyambung kepada DBMS (MySQL, PostgreSQL, SQLite , MongoDB ), enjin templat, enjin CSS, pelaksanaan algoritma kriptografi dan sistem kebenaran (OAuth), penghurai XML.

Untuk mengendalikan sejumlah besar permintaan selari, Node.js menggunakan model pelaksanaan kod tak segerak berdasarkan pemprosesan acara tidak menyekat dan mentakrifkan pengendali panggil balik. Kaedah yang disokong untuk pemultipleksan sambungan termasuk epoll, kqueue, /dev/poll, dan pilih. Perpustakaan digunakan untuk sambungan multipleks libuv, yang merupakan superstruktur atas libev pada sistem Unix dan lebih IOCP pada Windows. Pustaka digunakan untuk membuat kumpulan benang libeio, untuk melaksanakan pertanyaan DNS dalam mod tidak menyekat disepadukan c-ares. Semua panggilan sistem yang menyebabkan penyekatan dilaksanakan dalam kumpulan benang dan kemudian, seperti pengendali isyarat, menghantar hasil kerja mereka kembali melalui paip yang tidak dinamakan. Pelaksanaan kod JavaScript dipastikan melalui penggunaan enjin yang dibangunkan oleh Google V8 (Selain itu, Microsoft sedang membangunkan versi Node.js dengan enjin Chakra-Core).

Pada terasnya, Node.js adalah serupa dengan rangka kerja Perl AnyEvent, Mesin Acara Ruby, Python Dipintal ΠΈ pelaksanaan peristiwa dalam Tcl, tetapi gelung peristiwa dalam Node.js disembunyikan daripada pembangun dan menyerupai pengendalian acara dalam aplikasi web yang dijalankan dalam penyemak imbas. Apabila menulis aplikasi untuk node.js, adalah perlu untuk mengambil kira spesifik pengaturcaraan dipacu peristiwa, sebagai contoh, dan bukannya melakukan "var result = db.query("select..");" dengan menunggu penyiapan kerja dan pemprosesan keputusan 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