Semua yang perlu Anda ketahui tentang node.js 8

Sep 12, 2025
Bagaimana caranya

Rilis utama Node.js terbaru membawa banyak peningkatan signifikan pada komunitas JavaScript, termasuk mesin JavaScript yang diperbarui, NPM versi 5, Google's V8, Node.js API, Async_Hooks, A WhatWG URL Parser, lebih banyak buffer yang aman, dan lebih banyak. Di sini kami akan memperbarui Anda pada fitur-fitur ini dan aspek terpenting lainnya dari rilis ini.

Node.js 8 dirilis dengan nama kode karbon, dan tersedia sekarang dari Situs Node.js. . Ini akan dikerjakan secara aktif selama 18 bulan (tidak ada fitur baru, hanya perbaikan bug, peningkatan keamanan dan pembaruan NPM), sebelum masuk ke mode pemeliharaan. Seperti rilis sebelumnya, selama rilis mode pemeliharaan hanya akan menerima pembaruan keamanan kritis dan perbaikan bug.

  • 20 alat JavaScript untuk meledakkan pikiran Anda

Aman untuk mengatakan bahwa sejak Node.js telah ada, ini adalah salah satu pembaruan terbesar yang pernah diterima runtime - itu mengubah bagaimana add-on asli ditulis dan juga membawa peningkatan keamanan dan kinerja tambahan.

Risingstack. telah membantu perusahaan berhasil dengan node.js selama empat tahun dengan pelatihan, konsultasi atau pengembangan. Salah satu perjuangan terbesar yang kami miliki adalah menambahkan dependensi asli ke proyek.

Sebelum Node.js 8, jika aplikasi tergantung pada modul dengan kode asli, setiap kali versi Node.js baru tiba, sebagai pengelola aplikasi Anda harus mengkompilasi ulang dependensi Anda. Jika Anda beruntung, mereka bekerja pada awalnya.

Proses ini dimungkinkan dengan pemelihara modul kerja yang luar biasa yang dimasukkan ke dalam membuat modul mereka bekerja di versi node.js yang tidak kompatibel, sebagian besar dengan bantuan modul yang disebut NAN (abstraksi asli node.js).

Proses ini jauh dari ideal, karena banyak perusahaan gagal memperbarui dependensi mereka jika tidak dapat dikompilasi, dan itu juga menempatkan beban kerja ekstra besar pada pemelihara modul. Untuk mengatasi masalah ini, API node.js (atau N-API) diperkenalkan.

01. Masukkan API Node.js

Machine agnostic: Native modules now work with Microsoft’s Chakra as well as different Node.js versions

Mesin Agnostik: Modul asli sekarang bekerja dengan Chakra Microsoft serta versi node.js yang berbeda

Node.js API adalah salah satu perbaikan paling signifikan dari node.js 8. Ini membawa ABI (aplikasi biner aplikasi) yang didefinisikan dengan baik ke node.js untuk membuat mesin virtualnya agnostik. Ini berarti bahwa modul asli tidak hanya akan berfungsi dengan versi node.js yang berbeda menggunakan mesin JavaScript Google V8, tetapi dengan Chakra Microsoft juga.

Untuk saat ini, N-API dalam keadaan eksperimental, yang berarti perubahan signifikan dapat terjadi pada implementasi dan API. Dengan kata ini, pemelihara modul asli didorong untuk mencoba antarmuka baru dan memberikan umpan balik.

Jika Anda adalah pemelihara modul, Anda dapat merilis versi N-API dari modul Anda secara paralel dengan versi modul utama Anda. Untuk melakukannya, rekomendasi resmi adalah mempublikasikan versi modul Anda dengan tag N-API ke NPM.

Untuk menerbitkan versi N-API, Anda harus:

  1. Publikasikan versi non-N-API seperti biasa.
  2. Publikasikan versi N-API:
  • Perbarui versi di file paket.json dengan menambahkan tanda hubung dan tag napi. - Jadi jika Anda memiliki 1.0.0 sebelumnya, itu menjadi 1.0.0-napi
  • Publikasikan ke NPM menggunakan NPM Publish --tag n-API

Dengan cara ini Anda memastikan bahwa versi N-API tidak akan menjadi rilis terbaru, jadi jika seseorang menginstal modul Anda, secara default mereka mendapatkan versi non-N-API.

Benang, manajer paket yang dibuat oleh para insinyur Facebook, dirilis pada Oktober 2016. Mencoba mengatasi beberapa kekurangan dari klien NPM resmi, sebagian besar dengan menjadi lebih berkinerja dan deterministik. Sebagian besar inovasi ini ditampilkan dalam NPM 5 juga.

02. Katakan halo ke NPM 5

Sama seperti benang, NPM 5 memperkenalkan mekanisme file kunci - setiap kali Anda menginstal ketergantungan baru ke proyek Anda, itu akan ditambahkan secara otomatis bukan hanya untuk package.json. , tetapi file baru disebut paket-lock.json. demikian juga.

Anda dapat bertanya apa perbedaannya paket-lock.json. dan npm-shrinkwrap.json. , Seperti NPM-Shrinkwrap telah ada di NPM sejak selamanya? Singkat cerita, mereka pada dasarnya sama, tetapi paket-lock.json. secara otomatis dibuat.

Tujuan mereka adalah untuk menggambarkan dengan tepat apa yang harus dibuat NPM Tree NPM. Jika Anda memiliki keduanya, npm-shrinkwrap. akan diutamakan. Berdasarkan rekomendasi NPM, Anda harus menggunakan npm-shrinkwrap.json. Jika Anda ingin menerbitkannya, sehingga konsumen modul Anda akan menggunakannya juga. Di sisi lain, Anda harus menggunakan paket-lock.json secara internal - bahkan memeriksa ke dalam repositori.

Tetapi perbaikan untuk NPM 5 belum berhenti dengan menambahkan file kunci - dengan versi baru, semua modul yang Anda instal secara otomatis disimpan juga, dan mereka akan ditambahkan baik ke Anda package.json. dan paket-lock.json. mengajukan.

Cara kerja NPM Script juga telah berubah sedikit. Pertama-tama, skrip yang sudah diinstal sekarang dijalankan sebelum semuanya, sehingga mereka dapat memodifikasi direktori node_modules sebelum CLI benar-benar membacanya. Selain itu, dua skrip baru telah ditambahkan - prepack dan postpack. Mereka berdua berjalan pada paket NPM dan NPM juga menerbitkan, tetapi tidak pada instalasi NPM.

Di jantung node.js adalah mesin JavaScript yang menafsirkan kode JavaScript Anda, membuat bytecode dari itu dan memungkinkan aplikasi Anda berjalan. Dengan rilis Node.js 8 baru, ini juga diperbarui.

03. Mesin JavaScript yang diperbarui

Big news: Node.js will be able to update the V8 engine without a major release

Berita Besar: Node.js akan dapat memperbarui mesin V8 tanpa rilis utama

Dengan mesin V8 yang diperbarui, peningkatan kinerja utama diperkenalkan - tetapi yang lebih penting, dijamin memiliki antarmuka biner aplikasi yang kompatibel dengan maju. Ini berarti bahwa node.js akan dapat memperbarui mesin V8 tanpa rilis node.js utama.

Ini sangat penting, karena versi baru dari mesin V8 akan memperkenalkan pipa kompiler baru, yang akan memperkenalkan peningkatan kinerja lebih lanjut pada node.js. Pembaruan ini sangat penting sehingga itulah alasan tanggal rilis Node.js 8 asli ditunda.

Pipa saat ini terlalu rumit, dan memperkenalkan fitur bahasa baru biasanya berarti menyentuh banyak bagian dari pipa. Dengan pipa baru, itu akan menjadi jauh lebih sederhana.

Pengapian, penerjemah baru, dan turbofan, kompiler optimalisasi baru, telah dalam pengembangan selama hampir tiga setengah tahun. Mereka adalah fondasi di mana fitur bahasa baru akan dibangun. Mereka termasuk pengalaman bahwa tim V8 di Google yang dikumpulkan dari mengukur aplikasi JavaScript kehidupan nyata.

04. Selamat Datang Kait Async

Untuk lebih memahami apa itu kait async, mari kita mundur dan mulai menggenggam dengan penyimpanan-penyimpanan-lokal terlebih dahulu. Mereka bekerja seperti penyimpanan thread-local di pemrograman berulir, tetapi di node.js ia menggunakan panggilan balik untuk meneruskan konteks.

Bayangkan Anda sedang menulis aplikasi yang mengambil produk dari database, kemudian kemudian Anda ingin mengirimkannya dalam respons HTML Anda:

 Const Createnamespace = membutuhkan ('kelanjutan-penyimpanan lokal'). CreateNamespace
const session = createnamespace ('my-app-sesi')
const db = membutuhkan ('./ db.js')
Fungsi Onrequest (Opsi, Selanjutnya) {
  db.fetchuserbyid (opsi.id, fungsi (kesalahan, pengguna) {
    if (error) {
      kembali berikutnya (kesalahan)
    }
    session.set ('pengguna', pengguna)
    lanjut()
  }) 

Kemudian, jika Anda ingin mengakses objek pengguna, yang perlu Anda lakukan adalah mengambilnya dari penyimpanan lokal:

 Const getnamespace = membutuhkan ('kelanjutan-penyimpanan-lokal'). Getnamespace
sesi const = getnamespace ('saya sesi')
const render = membutuhkan ('./ render.js')
Fungsi finish (respons) {
  const user = session.get ('pengguna')
  render ({user: user}). pipa (respons)
} 

Teknik ini banyak digunakan oleh penyedia pemantauan kinerja aplikasi, seperti Trace oleh Risingstack, untuk menjaga konteks eksekusi dan mengumpulkan informasi pemantauan dari sistem produksi.

Dengan kait async, fitur serupa dipindahkan ke inti node.js - ini membantu melacak permintaan dan penangan asinkron melalui siklus hidup mereka. Itu async_hooks. Modul menyediakan API untuk mendaftarkan panggilan balik melacak masa pakai sumber daya asinkron yang dibuat di dalam aplikasi node.js.

05. Dukungan janji yang ditingkatkan

Sebelum Node.js 8, jika Anda ingin menggunakan modul inti dalam aplikasi yang menggunakan janji, Anda harus membungkus modul inti secara manual sehingga dapat digunakan dengan cara yang sama. Itu tampak seperti ini:

const fs = membutuhkan ('fs')
fungsi readfilepromise (... args) {
  kembalikan janji baru ((tekad, tolak) = & gt; {
    fs.readfile (... args, (err, hasil) = & gt; {
      if (err) {
        Kembali (ERR)
      }
      Menyelesaikan (Hasil)
    })
  })
}
readfilepromise ('./ package.json', 'UTF-8')
  . Kemudian ((res) = & gt; konsol.log (res))
  .catch ((err) = & gt; konsol.log (err)) 

Dengan node.js 8, metode pembantu baru ditambahkan ke modul inti Util, util.promisifikasi. Ini memungkinkan Node.js Standard Callback-Style API untuk dibungkus dalam fungsi yang mengembalikan janji.

Dengan menggunakan fungsi ini, cuplikan di atas disederhanakan dan menjadi ini:

 const fs = membutuhkan ('fs')
Const Promistify = membutuhkan ('Util'). Menjanjikan
readfilepromise = menjanjikan (fs.readfile)
readfilepromise ('./ package.json', 'UTF-8')
  . Kemudian ((res) = & gt; konsol.log (res))
  .catch ((err) = & gt; konsol.log (err)) 

06. Buffer yang lebih aman

Sebelum Node.js versi 8, buffer dialokasikan menggunakan buffer (nomor) baru konstruktor tidak menginisialisasi ruang memori dengan nol. Akibatnya, instance buffer baru dapat berisi informasi sensitif, yang mengarah pada masalah keamanan serius - bahkan modul populer seperti luwak, WS atau modul permintaan dipengaruhi.

Tapi bagaimana kita sampai di sana? Ketika JavaScript dipindahkan dari browser ke sisi server, ada kebutuhan untuk pemrosesan data yang cepat dan mudah - sehingga kelas buffer ditambahkan. Buffer adalah array data biner yang bisa berubah. Ketika digunakan dengan konstruktor yang meminta ukuran buffer baru, itu hanya memesan ruang memori, tetapi tidak membersihkannya.

Karena server Anda dapat melayani banyak pengguna secara bersamaan (tidak seperti browser Anda), ada kemungkinan bahwa ruang memori yang baru dialokasikan berisi informasi sensitif dari pengguna lain (bahkan kata sandi!), Dan berpotensi terkena penyerang.

Meskipun itu adalah keputusan yang disengaja untuk meningkatkan kinerja penciptaan buffer baru, bagi kebanyakan dari kita, itu bukan penggunaan yang dimaksud - bahkan jika didokumentasikan. Karena itu, dimulai dengan node.js 8, buffer dialokasikan menggunakan buffer baru (nomor) atau buffer (nomor) akan secara otomatis diisi dengan nol.

07. Perubahan debugging

Sebelum node.js 8, jika Anda ingin men-debug aplikasi node.js Anda, salah satu solusi termudah adalah memulai debugger bawaan, menggunakan node debug index.js. Dengan node.js 8, ini dihapus dan diganti oleh node-inspektur. Anda masih dapat menggunakan Debugger CLI, tetapi akan segera dihapus.

Mulai sekarang, Anda harus menggunakan node --inspect index.js. , atau node. --inspect-brk index.js Jika Anda ingin debugger memasang breakpoint pada baris pertama aplikasi. Setelah Anda menjalankannya, Anda akan menerima tautan WebSocket yang dapat digunakan Google Chrome untuk menghubungkan debugger-nya.

Anda harus menuju ke Chrome: // Periksa Di browser Chrome Anda, dan secara otomatis akan mengenali aplikasi Node.js yang sedang berjalan, memungkinkan Anda untuk terhubung. Setelah Anda terhubung ke proses Anda, Anda akan mendapatkan debugger Chrome untuk memeriksa aplikasi Node.js yang sedang berjalan.

08. Memperkenalkan kode kesalahan statis

Sebelumnya, jika Anda ingin memeriksa kesalahan yang Anda terima dalam runtime dan bertindak sesuai, dalam banyak kasus Anda harus memeriksa pesan kesalahan. Ini rawan kesalahan, karena pesan kesalahan mungkin telah diubah dengan versi Node.js baru.

Dengan node.js 8, kode kesalahan statis telah ditugaskan untuk sebagian besar kesalahan - itu masih merupakan kemajuan kerja, tetapi setelah selesai, kode kesalahan ini tidak akan berubah, bahkan jika pesan dalam kesalahan tidak .

Misalnya, yang baru diperkenalkan Apa API URL akan melempar dan Err_invalid_url. Kesalahan dalam cuplikan berikut, karena parameter bukan URL yang valid:

 Const URL = memerlukan ('URL'). URL
const miurl = url baru ('/ foo') 

Seperti yang Anda lihat, rilis pembaruan Node.js 8 telah membawa banyak perbaikan baru dan menarik bagi komunitas JavaScript. Untuk mulai bereksperimen dengan semua fitur baru ini sendiri, pergilah ke nodejs.org. , Unduh biner node.js 8 dan mulai main dengan toolset baru Anda!

Artikel ini awalnya muncul di Net Magazine. Masalah 296. Beli di sini .

Artikel terkait:

  • 20 modul node.js yang perlu Anda ketahui
  • 30 ekstensi krom untuk desainer dan devs web
  • 3 Cara atas untuk Membangun Prototipe Situs Web

Bagaimana caranya - Artikel Terpopuler

Cara Mengunduh Foto Instagram: Semua yang Perlu Anda Ketahui

Bagaimana caranya Sep 12, 2025

(Kredit Gambar: Joseph Foley di Instagram) Unduh Gambar Instagram. - Unduh Foto In..


Cara menambahkan animasi ke SVG dengan CSS

Bagaimana caranya Sep 12, 2025

[Gambar: Desainer Web] Ketika datang untuk menjiwai dengan SVG, satu turn-off besar dapat menjadi ide untuk macet di ..


Bangun chatbot bertenaga AI

Bagaimana caranya Sep 12, 2025

Intelijen buatan (AI) memungkinkan kita untuk menciptakan cara baru dalam melihat masalah yang ada, mulai dari memikirkan kembali..


Jadikan aplikasi Anda offline dengan pekerja layanan

Bagaimana caranya Sep 12, 2025

Halaman 1 dari 2: Halaman 1: Pemuatan Lebih Cepat Halaman 1: Pemuatan Leb..


Buat efek teks uap animasi

Bagaimana caranya Sep 12, 2025

Menambahkan efek ke teks dapat menambah tingkat keterlibatan dan minat yang sama sekali baru. Efek seperti Tipografi Kine..


cat ke mesh 3D dengan alat polipain Zbrushcore

Bagaimana caranya Sep 12, 2025

Polisict in. ZBrushcore adalah alat yang fantastis yang memungkinkan Anda untuk menambahkan warna dan tekstur ke m..


Apa yang baru dalam Angular 4?

Bagaimana caranya Sep 12, 2025

Halaman 1 dari 2: Langkah 1-10. Langkah 1-10. ..


Cara Menggunakan Fitur 'Pertandingan Font' Photoshop

Bagaimana caranya Sep 12, 2025

Desainer dan kreatif dari semua bidang seperti Magpies dalam selera mereka untuk mengumpulkan barang-barang cerah dan mengkilap. ..


Kategori