Yeni NODE.JS 8 hakkında bilmeniz gereken her şey

Sep 16, 2025
Nasıl Yapılır

NODE.JS'nin en son büyük sürümü, güncellenmiş bir JavaScript motoru, NPM sürüm 5, Google'ın V8, NODE.JS API, Async_hooks, Whatwg URL Ayrıştırıcı, daha güvenli tamponlar ve daha fazlası dahil olmak üzere JavaScript topluluğunda birçok önemli gelişme getiriyor. Burada sizi bu özellikler ve bu sürümün en önemli yönlerini güncelleyeceğiz.

Node.js 8, Carbon kod adı altında serbest bırakılır ve şimdi Node.js sitesi . Bakım moduna girmeden önce 18 ay daha (yeni özellikler, sadece hata düzeltmeleri, güvenlik iyileştirmeleri ve NPM güncellemeleri) aktif olarak çalışacaktır. Önceki sürümlerde olduğu gibi, bakım modu sürümlerinde yalnızca kritik güvenlik güncelleştirmeleri ve hata düzeltmeleri alır.

  • 20 JavaScript Aklınızı Berelemek İçin Araçlar

NODE.js'in etrafında olduğundan beri, bu, çalışma zamanının aldığı en büyük güncellemelerden biridir - doğal eklentilerin nasıl yazıldığı ve ayrıca ek güvenlik ve performans iyileştirmeleri getirdiği değiştiğini söylemektedir.

Risingstack Şirketlerin, eğitim, danışmanlık veya gelişme ile dört yıl boyunca node.js ile başarılı olmalarına yardımcı olmuştur. Sahip olduğumuz en büyük mücadelelerden biri projelere yerli bağımlılıklar ekliyordu.

NODE.JS 8'den önce, eğer başvurular yerel kodlu modüllere bağımlıysa, büyük yeni node.js versiyonları geldiğinde, bağımlılıklarınızı yeniden derlemek zorunda kaldınız. Eğer şanslıysanız, ilk başta çalıştılar.

Bu işlem, modüllerinin uyumsuz NODE.JS sürümlerinde, çoğunlukla NAN adı verilen bir modülün yardımı ile uyumsuz NODE.JS sürümlerinde çalışmalarını sağlayan bu işlem yapıldı.

Bu süreç ideal olmaktan uzaktır, çünkü birçok şirketin derlenemiyorsa, bağımlılıklarını güncelleyemedi ve ayrıca modül koruyucusu üzerinde büyük bir ekstra iş yükü koydu. Bu sorunu çözmek için, NODE.JS API (veya N-API) tanıtıldı.

01. NODE.JS API'sini girin

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

Makine Agnostik: Yerel modüller şimdi Microsoft'un Çakranıyla ve farklı NODE.JS sürümleriyle çalışır.

NODE.JS API, node.js 8'in en önemli gelişmelerinden biridir. Sanal makinesini agnostik yapmak için iyi tanımlanmış bir ABI (Uygulama İkili Arayüzü) getiriyor. Bu, yerel modüllerin yalnızca Google'ın V8 JavaScript motorunu kullanarak ancak Microsoft'un çakrağıyla da farklı NODE.JS sürümleriyle çalışmayacağı anlamına gelir.

Şimdilik, N-API deneysel bir durumda, anlamlı değişiklikler hem uygulama hem de API'ye önemli değişiklikler olabilir. Bununla birlikte, yerli modül bakıcıları yeni arayüzü denemeye ve geri bildirimde bulunmaya teşvik edilir.

Bir modül koruyucusu iseniz, modülünüzün bir N-API sürümünü ana modül sürümünüze paralel olarak bırakabilirsiniz. Bunu yapmak için, resmi öneri modülünüzün bir sürümünü NPI etiketi ile NPM'ye yayınlamaktır.

Bir N-API versiyonunu yayınlamak için:

  1. NON-API olmayan versiyonu normal olarak yayınlayın.
  2. N-API sürümünü yayınla:
  • Bir çizgi ekleyerek package.json dosyasındaki sürümü güncelleyin. napi etiketi - Öyleyse, 1.0.0'ınız varsa, 1.0.0-Napi olur.
  • NPM yayınını kullanarak NPM'yi yayınla - TAG N-API

Bu şekilde N-API sürümünün en son sürüm olmayacağından emin olabilirsiniz, bu nedenle birileri modülünüzü kurarsa, varsayılan olarak N-API olmayan sürümünü alırlar.

Facebook mühendisleri tarafından oluşturulan paket yöneticisi olan İplik, Ekim 2016'da piyasaya sürüldü. Çoğunlukla daha performans ve deterministik hale gelerek, resmi NPM müşterisinin bazı eksikliklerini ele almaya çalıştı. Bu yeniliklerin çoğu NPM 5'te de bulunur.

02. NPM 5'e Hello Deyin 5

Tıpkı iplik gibi, NPM 5 bir kilit dosya mekanizması getirdi - ne zaman projenize yeni bir bağımlılık kurarsanız, otomatik olarak sadece eklenecek package.json , ama denilen yeni bir dosya paket-lock.json Aynı zamanda.

Farkın ne arasında olduğunu sorabilirsiniz paket-lock.json ve npm-shrinkwrap.json NPM-Shrinkwrap'ın sonsuza dek nPM'de olduğu gibi? Uzun lafın kısası, esasen aynıdır, fakat paket-lock.json otomatik olarak oluşturulur.

Amaçları, NPM'nin paketiniz için NPM'nin hangi bağımlılık ağacının oluşturduğu tam olarak tanımlamaktır. İkiniz de varsa, npm-shrinkwrap öncelikli olacak. NPM'nin tavsiyesine göre, kullanmalısınız. npm-shrinkwrap.json Yayınlamak istiyorsanız, modül tüketicileriniz de kullanacak. Öte yandan, package-lock.json'u dahili olarak kullanmalısınız - hatta havuzlar halinde kontrol edildi.

Ancak NPM 5'teki iyileştirmeler, bir kilit dosyası ekleme ile durdurulmamış - yeni sürümle, yüklüyorsanız tüm modüller otomatik olarak kaydedilir ve her ikisine de ekleneceklerdir. package.json ve paket-lock.json dosya.

NPM komut dosyaları çalışması da biraz değişti. Öncelikle, önceden yüklenmiş komut dosyaları şimdi her şeyden önce çalıştırın, böylece CLI aslında okumadan önce NODE_MODULES dizinini değiştirebilirler. Bunun yanı sıra, iki yeni komut dosyası eklendi - prepack ve posta çantası. İkisi de NPM Pack ve NPM'de de yayınlanıyor, ancak NPM kurulumunda değil.

NODE.JS'nin kalbinde, JavaScript kodunuzu yorumlayan JavaScript motorudur, ByTecode oluşturur ve uygulamanızın çalışmasına izin verir. Yeni node.js 8 sürümüyle, bu da güncellendi.

03. JavaScript motoru güncellendi

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

Büyük Haberler: node.js, V8 motorunu büyük bir sürüm olmadan güncelleyebileceklerdir.

Güncelleştirilmiş V8 motoru ile, büyük performans iyileştirmeleri tanıtılır - ancak daha da önemlisi, ileri uyumlu bir uygulama ikili arayüze sahip olması garanti edilir. Bu, node.js'in V8 motorunu büyük bir node.js sürümü olmadan güncelleyebileceği anlamına gelir.

Bu çok önemlidir, çünkü V8 motorunun yeni sürümleri, NODE.JS.'de daha fazla performans iyileştirmeleri sunacak olan yeni bir derleyici boru hattı tanıtacaktır. Bu güncelleme o kadar önemliydi ki orijinal node.js 8 sürüm tarihinin ertelendiği nedendi.

Mevcut boru hattı çok karmaşık ve yeni dil özellikleri tanıtmak genellikle boru hattının birden fazla bölümüne dokunmak anlamına gelir. Yeni boru hattıyla, çok daha basit hale gelecektir.

Kontak, yeni tercüman ve Turbofan, yeni optimizasyon derleyicisi, neredeyse üç buçuk yıl boyunca gelişmiştir. Onlar yeni dil özelliklerinin inşa edileceği temeldir. Google'daki V8 ekibinin gerçek hayattaki JavaScript uygulamalarını ölçmesinden toplandıkları deneyimi içerir.

04. Hoşgeldin Async Hooks

Asenkron kancalarının ne olduğunu daha iyi anlamak için, bir adım atalım ve önce devam eden yerel depolama ile başa çıkın. Dişli programlamada iplik-lokal depolama gibi çalışırlar, ancak node.js in bağlamı geçmek için geri çağrıları kullanır.

Bir ürünü veritabanından getiren bir uygulama yazdığınızı, daha sonra HTML yanıtınıza göndermek istediğinizi hayal edin:

 Const CreatenAspace = Gereksinim ('Süreklilik-Yerel Depolama'). CreatenAspace
Const Oturum = CreateNamesPace ('My-App-Oturum ")
Const DB = gerektirir ('./ db.js')
İşlev Onrequest (Seçenekler, Sonraki) {
  db.fetchuserbyid (options.id, işlev (hata, kullanıcı) {
    if (error) {
      İleri İade (Hata)
    }
    Session.set ('Kullanıcı', Kullanıcı)
    Sonraki()
  }) 

Daha sonra, kullanıcı nesnesine erişmek istiyorsanız, yapmanız gereken tek şey yerel depolamadan almak:

 Const GetNamesPace = İste ('Devam Eden Depolama'). GetNamesPace
Const Oturum = GetNamesPace ('Seansım')
Const Render = İste ('./ Render.js')
fonksiyon bitirmek (yanıtı) {
  Const Kullanıcı = Oturum. ('Kullanıcı')
  render ({user: user}). Boru (yanıt)
} 

Bu teknik, uygulama performans izleme sağlayıcıları tarafından RisingStack tarafından izleme gibi, yürütme bağlamını tutmak ve üretim sistemlerinden izleme bilgilerini toplamak için kullanılır.

Asenkron kancalarla, benzer bir özellik node.js çekirdeğine taşınır - asenkron istekleri ve işleyicileri yaşam döngüsü ile takip etmenize yardımcı olur. async_hooks Modül, bir NODE.JS uygulamasında oluşturulan eşzamansız kaynakların ömrünü izleyen geri çağrıları kaydetmek için bir API sağlar.

05. Geliştirilmiş Söz Desteği

NODE.JS 8'den önce, çekirdek modülleri vaatleri kullanan bir uygulamada kullanmak isterseniz, çekirdek modülleri el ile sarmak zorunda kaldınız, böylece aynı şekilde kullanılabilirler. Böyle bir şeye baktı:

Const FS = gerektirir ('FS')
Fonksiyon ReadFilePromise (... args) {
  Yeni vaadi iade edin ((çözünür, reddet) = & gt; {
    fs.readfile (... args, (err, sonuç) = & gt; {
      if (err) {
        Dönüş Çözüm (Err)
      }
      Çözünür (Sonuç)
    })
  })
}
ReadFilePromise ('./ package.json', 'UTF-8')
  .THEN (((res) = & gt; console.log (res))
  .catch ((err) = & gt; console.log (err)) 

NODE.JS 8 ile, UTIL CORE MODULE, UTIL.PROMISIFY için yeni bir yardımcı yöntemi eklenir. Standart node.js geri arama tarzı API'lerin, vaatleri döndüren bir fonksiyona sarılmasını sağlar.

Bu işlevi kullanarak, yukarıdaki snippet basitleştirilir ve şöyle olur:

 Const FS = gerektirir ('FS')
Const PROMISIFY = GEREKLİ ('UTIL'). PROMISIFY
ReadFilePromise = PROMISIFY (fs.readfile)
ReadFilePromise ('./ package.json', 'UTF-8')
  .THEN (((res) = & gt; console.log (res))
  .catch ((err) = & gt; console.log (err)) 

06. Daha güvenli tamponlar

NODE.JS sürüm 8'den önce, yeni tampon (sayı) yapıcısını kullanarak tahsis edilen tamponlar, Zero'larla bellek alanını sıfırlamadı. Sonuç olarak, yeni tampon örnekleri hassas bilgiler içerebilir, ciddi güvenlik sorunlarına yol açabilir - Mongoose, WS veya istek modülü gibi popüler modüller bile etkilenmiştir.

Ama oraya nasıl gittik? JavaScript tarayıcıdan sunucu tarafına taşındığında, hızlı ve kolay veri işleme için bir ihtiyaç vardı - bu yüzden tampon sınıfı eklendi. Tampon, uygun bir ikili veri dizisidir. Yeni arabelleğin boyutunu soran yapıcı ile birlikte kullanıldığında, sadece bellek alanını saklıdır, ancak temizlemedi.

Sunucunuz aynı anda birden fazla kullanıcıya hizmet edebileceği için (tarayıcınızın aksine), taze ayrılan hafıza alanının diğer kullanıcılardan (hatta şifreler!) Hassas bilgiler içermesi ve potansiyel olarak bir saldırgana maruz kalması mümkündür.

Yeni tampon yaratımının performansını artırmak için kasıtlı bir karardı, çoğumuz için, belgelenmiş olsa bile amaçlanan kullanım değildi. Bu nedenle, node.js 8 ile başlayarak, yeni tampon (sayı) veya tampon (sayı) kullanılarak tahsis edilen tamponlar otomatik olarak sıfırlarla doldurulur.

07. Hata ayıklama değişiklikleri

NODE.JS 8'den önce, NODE.JS uygulamalarınızı hata ayıklamak istiyorsanız, en kolay çözümlerden biri, Düğüm hata ayıklayıcısını kullanarak yerleşik hata ayıklayıcısını başlatmaktı. indeks.js. NODE.JS 8 ile bu, bu kaldırılır ve node denetçisi ile değiştirilir. Cli hata ayıklayıcısını hala kullanabilirsiniz, ancak kısa bir süre sonra kaldırılacaktır.

Bundan sonra, düğüm kullanmalısınız. - index.jspect veya düğüm --inspect-brk index.js Hata ayıklayıcının uygulamanın ilk satırına bir kesme noktası koymasını istiyorsanız. Bunu çalıştırdıktan sonra, Google Chrome'un hata ayıklayıcısını bağlamak için kullanabileceği bir WebSocket bağlantısı alacaksınız.

Başa gitmelisin Chrome: // İnceleme Chrome tarayıcınızda ve çalışan NODE.JS uygulamasını otomatik olarak tanıyacak ve bağlanmanızı sağlayacaktır. Sürecinize bağlı olduktan sonra, Chrome'ün hata ayıklayıcısını, koşu node.js uygulamanızı incelemek için alacaksınız.

08. Statik hata kodlarını tanıtmak

Önceden, çalışma zamanında aldığınız bir hatayı kontrol etmek ve buna göre davranmak istiyorsanız, çoğu durumda hata mesajını kontrol etmek zorunda kaldınız. Bu, hata mesajları yeni NODE.JS sürümleriyle değişmiş olabilirken hata oldu.

NODE.JS 8 ile, statik hata kodları hataların çoğuna atanmıştır - hala devam eden bir çalışma, ancak bittiğinde, hatadaki mesajın mesajı olsa bile bu hata kodları değişmez. .

Örneğin, yeni tanıtıldı Whatwg URL API atacak Err_invalid_url Aşağıdaki snippet'te hata, parametre geçerli bir URL değildir:

 Const URL = gerektirir ('URL'). URL
Const Myurl = Yeni URL ('/ foo') 

Gördüğünüz gibi, NODE.JS 8 güncellemesinin serbest bırakılması, JavaScript topluluğunda bol miktarda yeni ve heyecan verici bir gelişme getirmiştir. Bu yeni özelliklerle kendiniz denemeye başlamak için, nodejs.org , node.js 8 ikili indirin ve yeni araç setinizle oynamaya başlayın!

Bu makale başlangıçta ortaya çıktı net dergisi Sayı 296. Buradan satın al .

İlgili Makaleler:

  • 20 node.js bilmeniz gereken modüller
  • Web tasarımcıları ve devs için 30 krom uzantısı
  • Bir web sitesi prototipi oluşturmanın en iyi yolu

Nasıl Yapılır - En Popüler Makaleler

Daha gerçekçi rakamlar nasıl çizilir

Nasıl Yapılır Sep 16, 2025

Bu şekilde çizim öğreticisinde, özellikle göğüslerin sıkıştırma ve yerçekimin etkileri nedeniyle şekli nasıl deği..


Apple'ın Fotoğraf App Mastering için 10 İpuçları

Nasıl Yapılır Sep 16, 2025

MacOS fotoğrafları uygulaması iPhoto olarak hayata başladı: dijital fotoğrafları yönetmek için bir tüketici uygulaması..


3 kolay adımda boyamak için bir tahta hazırlayın

Nasıl Yapılır Sep 16, 2025

En hızlı paylaşacağım boyama tekniği Bir panelin 'gessoing' için kullanıyorum ve pürüzsüz bir bitiş. B..


Bir kompozisyonda dinamik hareket oluşturun

Nasıl Yapılır Sep 16, 2025

Çiziminize başlamadan önce, hangi tür hareketin yakalanmak istediğinize karar vermek önemlidir. Gözde meşgul olabilen bir..


Bıçak aracı usta

Nasıl Yapılır Sep 16, 2025

Bazen temel bilgilere geri dönmek, oyununuzun üstünde kalmak için hayatidir, çünkü yeteneklerinizi yenilemek, tutkunuzu ye..


Etkileşimli PDFS'ye Video Eklenmeli

Nasıl Yapılır Sep 16, 2025

Bir resim bin kelimeye bedeldir ve bir video bir milyon değerindedir. Video, baskı veya statik görüntülerden daha hızlı bilgi aktarabilir. Aksi takdirde durdurulan belgeleri devreye gi..


Adobe InDesign kullanarak bir tipografik poster yapın

Nasıl Yapılır Sep 16, 2025

Adobe InDesign, Tip'i ağır kullanan her şeyi tasarlarken kullanmak için harika bir programdır. Bu InDesign öğretici boyunc..


3D Saç ve Kürk Nasıl Oluşturulur

Nasıl Yapılır Sep 16, 2025

Herhangi bir kürkle ilk kez çalıştığınızda kolayca boğulabilirsiniz. 3d sanat yazılım. Bu eğitimde, mo..


Kategoriler