Apa yang baru dapat Anda harapkan dari Node.js pada tahun 2020?

Node.js berusia 10 tahun pada tahun 2019. Jumlah paket yang tersedia di registri npm telah melampaui angka 1 juta. Setiap tahun, volume unduhan platform Node.js sendiri meningkat sebesar 40%. Tonggak bersejarah lain untuk Node.js adalah bahwa proyek ini bergabung dengan OpenJS Foundation. Berkat ini, kami dapat mengharapkan peningkatan status dan stabilitas proyek, serta, secara umum, perkembangan positif di bidang interaksi antara anggota komunitas JavaScript.



Sangat mudah untuk melihat bahwa dalam waktu singkat, lebih dari setahun, banyak hal menarik terjadi di dunia Node.js. Setiap tahun, Node.js mendapatkan momentum. Kami tidak memiliki alasan untuk mengandalkan hal lain pada tahun 2020.

Dalam rilis Node.js berikutnya kita akan menemukan banyak fitur menarik. Materi ini didedikasikan untuk inovasi paling signifikan dari platform yang mungkin muncul di dalamnya pada tahun 2020.

Inovasi Node.js 13


Pada awal Desember 2019, pada saat penulisan materi ini, Node.js 13 adalah versi terbaru dari platform ini. Sudah ada banyak fitur dan peningkatan baru yang dapat Anda gunakan untuk mulai bereksperimen, bersiap untuk tahun baru. Inilah beberapa di antaranya:

  • Modul ECMAScript.
  • Dukungan WebAssembly.
  • Laporan diagnostik.
  • Dukungan penuh untuk internasionalisasi. Secara khusus, kita berbicara tentang format tanggal, waktu, angka, mata uang.
  • Dukungan untuk protokol QUIC.
  • Meningkatkan kinerja mesin JavaScript V8.

Sebelum kita masuk ke perincian tentang fitur-fitur ini, kita akan berbicara tentang apa yang dapat diharapkan di bidang rilis versi baru Node.js dan dukungan untuk versi platform yang sudah dirilis.

Proses merilis versi baru Node.js pada tahun 2020


Versi utama baru Node.js dirilis setiap 6 bulan. Satu di bulan Oktober, yang lain di bulan April. Mereka disebut "versi saat ini." Pada saat penulisan ini, versi Node.js saat ini adalah yang ke-13, dirilis pada Oktober 2019.

Versi dengan angka ganjil (v9, v11, v13) dirilis setiap Oktober. Mereka relevan untuk waktu yang relatif singkat, mereka tidak dianggap siap untuk digunakan dalam produksi. Mereka dapat dianggap sebagai versi beta dari platform. Mereka dirancang untuk menguji fitur-fitur baru dan perubahan yang akan jatuh ke versi Node.js berikutnya dengan angka genap.

Versi dengan angka genap (v8, v10, v12) dirilis setiap bulan April. Setelah merilis versi seperti itu, rilis pembaruan untuk versi "genap" sebelumnya berhenti. Meskipun versi-versi ini jauh lebih stabil daripada "yang ganjil", pekerjaan aktif terus berlanjut selama 6 bulan berikutnya. Pada saat ini, mereka dapat dianggap sedang dalam kondisi kandidat pelepasliaran.

Setelah versi "genap" selesai dalam waktu 6 bulan, ia memasuki tahap baru dalam siklus hidupnya, berubah menjadi versi LTS (Dukungan Jangka Panjang, dukungan jangka panjang). Versi LTS dari Node.js dianggap siap untuk digunakan dalam produksi. Selama 12 bulan ke depan, perbaikan bug, pembaruan keamanan, dan peningkatan lainnya sedang dirilis untuk versi ini. Semua ini dilakukan dengan mempertimbangkan kelayakan pengoperasian aplikasi yang ada.

Setelah tahap LTS, tahap Pemeliharaan dimulai. Hanya perbaikan bug penting dan pembaruan keamanan yang dirilis saat ini. Tahap pengawalan berlangsung 18 bulan. Setelah waktu ini berlalu, versi yang sesuai pergi ke akhir siklus hidup (EOL, End-of-Life) dan tidak lagi didukung.


Siklus Hidup Versi Node.js

Rencana rilis yang diharapkan untuk versi baru Node.js pada tahun 2020


Pada tahun 2020, kita dapat mengharapkan rencana berikut untuk rilis versi baru Node.js:

Januari-Maret 2020

  • Versi saat ini adalah 13.x, pekerjaan aktif sedang berlangsung.
  • Versi 10.x dan 12.x dalam kondisi LTS.

April 2020

  • Versi 14.x menjadi terkini.
  • Bekerja pada versi 13.x berhenti tak lama setelah rilis 14.x.
  • Versi 10.x sedang memasuki fase pemeliharaan.

Oktober 2020

  • Versi 15.x dirilis, yang menjadi saat ini.
  • Versi 14.x sedang memasuki fase LTS.
  • Versi 12.x masuk ke fase pemeliharaan.


Rencanakan untuk rilis versi baru Node.js pada tahun 2020

Harap dicatat bahwa akhir siklus hidup Node.js 8 dijadwalkan untuk akhir 2019. Faktanya adalah bahwa versi platform ini tergantung pada OpenSSL-1.0.2, dan siklus hidup dari versi OpenSSL ini juga berakhir pada akhir 2019. Berencana untuk memigrasi Node.js 8.x aplikasi ke Node.js 10.x atau 12.x jika Anda belum melakukannya.

Modul ECMAScript


Dalam versi 13.2.0 Node.js mendukung kedua modul CommonJS dan modul ECMAScript standar baru (modul ES) tanpa memerlukan alat pihak ketiga. Ini berarti bahwa pengembang akhirnya dapat menggunakan instruksi import dan export , yang sama dengan yang mungkin sudah mereka gunakan ketika membuat proyek front-end dalam JavaScript. Selain itu, penting untuk dicatat bahwa modul ES di Node.js bekerja dalam mode ketat secara default. Akibatnya, untuk mengaktifkan mode ini, Anda tidak perlu menambahkan "use strict"; di awal setiap file "use strict"; .

 //  message async function sendMessage { ... } export { sendMessage }; //  index import { sendMessage } from "./message"; 

Namun, untuk memberi tahu Node.js bahwa pengembang menggunakan modul-ES, sesuatu harus dilakukan. Di sini Anda dapat menggunakan salah satu dari dua metode yang paling umum digunakan. Yang pertama adalah file-file tersebut diberikan ekstensi .mjs . Yang kedua adalah bahwa paket file induk terdekat. package.json menempatkan konstruk "type": "module" .

Semuanya jelas dengan pendekatan pertama - file .js diubah namanya menjadi file .mjs . Saat menggunakan pendekatan kedua, di file root package.json , atau di package.json , ditempatkan di folder yang berisi modul ES, tambahkan properti type dengan module nilai:

 {   "type": "module" } 

Kemungkinan lain mengenai bekerja dengan modul ES adalah memasukkannya ke dalam file root proyek package.json dan mengubah ekstensi file menggunakan modul .cjs ke .cjs .

Secara pribadi, menurut saya bahwa menggunakan .cjs atau .cjs bukanlah ide yang sangat bagus. Oleh karena itu, saya senang melihat bahwa untuk bekerja dengan modul-ES sudah cukup untuk membuat perubahan pada file package.json .

Impor Modul WebAssembly


Node.js sekarang mendukung tidak hanya modul ES, tetapi juga impor modul WebAssembly (modul Wasm). Modul wasm adalah file yang berisi kode dalam format biner portabel, yang dapat diurai lebih cepat dari kode JavaScript yang serupa dan dieksekusi pada kecepatan yang mirip dengan yang asli. Modul Wasm dapat dibuat dengan mengembangkan kode sumber dalam bahasa seperti C / C ++, Go, C #, Java, Python, Elixir, Rust, dan banyak lainnya.

Dukungan untuk modul WebAssembly masih dalam tahap percobaan. Untuk mengaktifkan fitur ini, Anda harus memberikan Node.js tanda perintah khusus ketika memulai aplikasi:

 node --experimental-wasm-modules index.js 

Pertimbangkan sebuah contoh. Misalkan kita memiliki perpustakaan pemrosesan gambar yang diimplementasikan sebagai modul Wasm. Untuk bekerja dengan perpustakaan seperti itu dalam kode JS, Anda dapat melakukan ini:

 import * as imageUtils from "./imageUtils.wasm"; import * as fs from "fs"; ( async () => {   const image = await fs.promises.readFile( "./image.png" );   const updatedImage = await imageUtils.rotate90degrees( image ); } )(); 

Di sini kami mengimpor modul dan menggunakan fungsi yang tersedia di dalamnya.

Modul Wasm di Node.js dapat diimpor menggunakan pernyataan import() dinamis import() :

 "use strict"; const fs = require("fs"); ( async () => {   const imageUtils = await import( "./imageUtils.wasm" );   const image = await fs.promises.readFile( "./image.png" );   const updatedImage = await imageUtils.rotate90degrees( image ); } )(); 

Antarmuka Sistem WebAssembly


Teknologi WebAssembly, seperti JavaScript, dikembangkan dengan mempertimbangkan keamanan. Kode Wasm berjalan di lingkungan yang aman, kadang-kadang disebut kotak pasir. Ini memungkinkan Anda untuk melindungi sistem operasi yang menjalankannya dari kode tersebut. Namun, dalam beberapa kasus, modul Wasm yang berjalan di lingkungan Node.js hanya bisa mendapat manfaat dari kemampuan melakukan panggilan sistem.

Di sinilah Antarmuka Sistem WebAssembly (Antarmuka Sistem WebAssembly, WASI) memasuki adegan. WASI dirancang sebagai antarmuka standar untuk mengakses sistem yang menjalankan kode Wasm. Sistem tersebut dapat mencakup aplikasi host, sistem operasi, dan sebagainya.

Anda dapat menemukan komit terbaru di repositori Node.js yang memperkenalkan dukungan WASI awal. Faktanya, antarmuka sistem WebAssembly adalah salah satu fitur menarik dari Node.js, yang penampilannya dapat diharapkan pada tahun 2020.

Dukungan Laporan Diagnostik


Laporan diagnostik adalah dokumen JSON yang ditujukan untuk orang-orang yang berisi informasi tentang operasi mekanisme perangkat lunak. Informasi tersebut dapat meliputi tumpukan panggilan fungsi, informasi tentang sistem operasi, data pada modul yang dimuat dan indikator berguna lainnya yang bertujuan membantu mendukung aplikasi. Laporan serupa dapat dibuat ketika pengecualian ditangani, kesalahan kritis terjadi. Mereka dapat dihasilkan oleh sinyal dari proses atau menggunakan API process.report baru. Node.js dapat dikonfigurasi sehingga laporan diagnostik disimpan di folder yang ditentukan menggunakan nama file yang ditentukan.

Sekarang fitur ini bersifat eksperimental. Untuk mengaktifkannya, Anda harus memberikan Node.js tanda khusus ketika memulai aplikasi:

 node --experimental-report --report-uncaught-exception --report-filename=./diagnostics.json index.js 

Memperluas dukungan untuk internasionalisasi


Node.js 13.x termasuk versi lengkap perpustakaan ICU ( International Components for Unicode ). ICU adalah proyek populer yang matang. Di antara banyak fitur perpustakaan ini, dukungan untuk memformat angka, tanggal, mata uang, dan output waktu dalam format lokal dapat dicatat. Dia mampu melakukan perhitungan yang berkaitan dengan interval waktu, mampu membandingkan string dan teks transcode dari Unicode ke pengkodean lain dan sebaliknya.

Beberapa fitur baru Node.js lainnya


Berikut adalah beberapa fitur Node.js yang lebih menarik, yang penampilannya dapat diharapkan pada tahun 2020:

  • Dukungan untuk protokol QUIC. QUIC adalah protokol Internet modern yang dengannya Anda dapat menjalin komunikasi yang andal dan produktif antar aplikasi.
  • Peningkatan dukungan untuk Python 3. Pada tahun 2020, kita harus dapat membangun modul Node.js dan modul asli menggunakan Python 3.
  • Versi terbaru dari mesin JS V8. Versi 7.8 dan 7.9 dari mesin V8 akan memberikan peningkatan kinerja aplikasi dan dukungan Wasm.
  • Thread Pekerja API yang Stabil. Worker Threads API memungkinkan Anda memparalelkan komputasi intensif.

Pembaca yang budiman! Apa yang paling Anda harapkan dari platform Node.js pada tahun 2020?


Source: https://habr.com/ru/post/id479270/


All Articles