Všechno, co potřebujete vědět o novém uzl.js 8

Sep 13, 2025
jak

Nejnovější hlavní vydání Unlom.js přináší mnoho významných zlepšení komunity JavaScriptu, včetně aktualizovaného JavaScript Engine, NPM verze 5, Google V8, UnEre.js API, ASync_hooks, analyzátor Whatwg URL, bezpečnější vyrovnávací paměti a další. Zde vás budeme aktualizovat na těchto funkcích a dalším nejdůležitějším aspektům této verzi.

Node.js 8 je vydán pod kódovým názvem uhlíkem a je nyní k dispozici od Nod.js stránky . Bude aktivně pracovat na dalších 18 měsíců (žádné nové funkce, jen opravy chyb, vylepšení zabezpečení a aktualizace NPM), před vstupem do režimu údržby. Stejně jako u předchozích verzí, během režimu údržby dostanou pouze kritické aktualizace zabezpečení a opravy chyb.

  • 20 JavaScript nástroje pro vyhodit svou mysl

Je bezpečné říci, že protože Unlom.js byl kolem, jedná se o jeden z největších aktualizací, že runtime někdy přijal - mění, jak jsou napsány nativní doplňky a také přináší další zabezpečení a vylepšení výkonnosti.

Risingstack. Pomáhá společnostem uspět s uzlem na čtyři roky s výcvikem, poradenstvím nebo rozvojem. Jeden z největších bojů, které jsme přidali rodné závislosti pro projekty.

Před node.js 8, pokud aplikace byly závislé na modulech s nativním kódem, kdykoli dorazili hlavní nové verze node.js, jako správce aplikace, kterou jste museli znovu zkompilovat své závislosti. Kdybys měl štěstí, pracoval zpočátku.

Tento proces byl umožněn s obrovskými údržbou obrovského pracovního modulu dali do tvorby jejich modulů pracují přes nekompatibilní node.js verze, většinou s pomocí modulu s názvem Nan (node.js nativní abstrakce).

Tento proces není zdaleka ideální, protože mnoho společností nedokázalo dostat své závislosti aktualizované, pokud nemohli být sestaveni, a také obrovskou dodatečnou pracovní zátěž na správce modulů. Pro vyřešení tohoto problému byl zaveden uzl.js API (nebo N-API).

01. Zadejte UnLe.js API

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

Stroj Agnostic: Nativní moduly nyní pracují s Chakrou společnosti Microsoft, stejně jako různé node.js verze

UZOD.JS API je jedním z nejvýznamnějších zlepšení node.js 8. Přináší dobře definovanou abi (aplikační binární rozhraní) na uzl.js, aby se jeho virtuální stroj agnostic. To znamená, že nativní moduly budou fungovat nejen s různými verzemi UnERE.JS pomocí motoru JavaScript Google, ale také s Chakry Microsoft.

Nyní je N-API v experimentálním stavu, což znamená, že významné změny se mohou stát jak implementací, tak i API. S tímto uvedeným, nativní správci modulů jsou povzbuzováni, aby vyzkoušeli nové rozhraní a poskytli zpětnou vazbu.

Pokud jste správce modulu, můžete vydat verzi N-API modulu paralelně s verzí hlavního modulu. Úředním doporučením je, že oficiální doporučení je zveřejnit verzi modulu pomocí značky N-API na NPM.

Chcete-li publikovat verzi N-API, musíte:

  1. Publikovat verzi non-N-API jako normální.
  2. Publikovat verzi N-API:
  • Aktualizujte verzi v souboru Package.json přidáním pomlčky a Napi Tag. - takže pokud jste dříve měli 1.0.0, stává se 1.0.0-NAPI
  • Publikovat na NPM pomocí NPM publikování --tag n-api

Tímto způsobem zajistíte, že verze N-API se nestane nejnovější verze, takže pokud někdo nainstaluje modul ve výchozím nastavení, dostanou non-N-API verzi.

Příze, manažer balení vytvořil inženýři Facebooku, byl vydán v říjnu 2016. Snažil se oslovit některé nedostatky oficiálního klienta NPM, většinou tím, že se stal více performantním a deterministickým. Většina z těchto inovací je také uvedeno v NPM 5.

02. Ahoj NPM 5

Stejně jako příze, NPM 5 představil mechanismus zámku - kdykoli instalujete novou závislost projektu, bude přidán automaticky nejen Package.json. Ale nazvaný nový soubor balíček-lock.json. také.

Můžete se zeptat, jaký je rozdíl mezi balíček-lock.json. a NPM-SHRINSWRAP.JSON. , protože NPM-Shrinkwrap byl v NPM od navždy? Dlouhý příběh krátký, jsou v podstatě stejné, ale balíček-lock.json. automaticky vytvoří.

Jejich účelem je popsat přesně to, co je to v závislosti na tom, jaký je pro váš balíček vytvořit. Pokud máte oba, NPM-SHRINSWRAP. bude mít přednost. Na základě doporučení NPM byste měli používat NPM-SHRINSWRAP.JSON. Pokud chcete publikovat, takže spotřebitelé modulu ho také použijí. Na druhou stranu byste měli používat balíček-Lock.json interně - dokonce zkontrolován do repozitářů.

Zlepšení npm 5 však nezastavila s přidáním zámku souboru - s novou verzí, všechny moduly, které instalujete, jsou automaticky uloženy stejně, a budou přidány jak k vašemu Package.json. a balíček-lock.json. soubor.

Práce Skripty NPM se také trochu změnilo. Předinstalované skripty nyní běží před všemi ostatními, takže mohou změnit adresář UnERE_Modules dříve, než ji CLI skutečně čte. Kromě toho byly přidány dvě nové skripty - potah a postback. Oba běží na NPM Pack a NPM publikovat také, ale ne na instalaci NPM.

V srdci node.js je motor JavaScript, který interpretuje váš kód JavaScriptu, vytvoří od něj bytetecode a umožňuje spustit aplikaci. S novým uzl.js 8 vydáním bylo také aktualizováno.

03. Aktualizovaný motor JavaScript

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

Velké novinky: UnERE.JS bude moci aktualizovat motor V8 bez hlavních vydání

S aktualizovaným motorem V8 se zavádí hlavní vylepšení výkonu - ale důležitější je, že je zaručeno, že má aplikaci kompatibilní s vpřed. To znamená, že uzl.js bude moci aktualizovat motor V8 bez hlavního uvolnění uzl.js.

To je rozhodující, protože novější verze motoru V8 zavedou nový kompilátorový potrubí, což představuje další zlepšení výkonu UnERE.JS. Tato aktualizace byla tak důležitá, že to byl důvod, proč byl odložen původní datum vydání UnED.JS 8.JS.

Aktuální potrubí je příliš složitý a zavádění nových jazykových prvků obvykle znamená dotýkat se více částí potrubí. S novým plynovodem se stane mnohem jednodušší.

Zapalování, nový tlumočník a TurboFan, nový optimalizační kompilátor, byly ve vývoji téměř tři a půl roku. Jsou základem, na kterých budou vybudovány nové jazykové funkce. Zahrnují zkušenosti, které Tým V8 v aplikaci Google shromáždil od měření aplikací v reálném životě JavaScript.

04. Vítejte Async háčky

Chcete-li lépe pochopit, co jsou ASync háčky, pojďme se vrátit zpět a rychle se dostanete s pokračováním lokálního úložiště. Pracují jako lokální úložiště s vláknem ve závitovém programování, ale v node.js používá zpětné volání pro propuštění kontextu.

Představte si, že píšete aplikaci, která načítá produkt z databáze, poté později jej chcete odeslat ve své odpovědi HTML:

 CONST CREATENAMESPACE = Vyžadovat ("Pokračovat-Local-Storage"). CreateNamespace
CONST Session = CreateNamespace ('My-App-Session')
CONST DB = Vyžadovat ('./ db.js')
funkce onrequest (možnosti, další) {
  db.fetchuserbyid (options.ID, funkce (chyba, uživatel) {
    Pokud (chyba) {
      vrátit se další (chyba)
    }
    Session.set ('Uživatel', User)
    další()
  }) 

Později, pokud chcete přistupovat k uživatelskému objektu, vše, co musíte udělat, je chytit z místního úložiště:

 CONST GETNAMESPACE = Vyžadovat ("Pokračovat-Local-Storage '). GetNamespace
CONST Session = Getnamespace ('moje relace')
const render = požadovat ("./ render.js ')
Funkce Function (odpověď) {
  CONST User = session.get ('Uživatel')
  Vykreslení ({User: User}). Potrubí (odpověď)
} 

Tato technika je rozsáhle využívána poskytovateli monitorování výkonnosti aplikací, jako je například trasování RISINGSTECK, pro udržení kontextu provedení a shromažďování informací o monitorování z výrobních systémů.

S ASync háčky se podobná funkce přesunuta do jádra node.js - pomáhá sledovat asynchronní požadavky a obsluhy prostřednictvím svého životního cyklu. . \ T async_hooks. Modul poskytuje rozhraní API pro registraci zpětných volání Sledování životnosti asynchronních zdrojů vytvořených uvnitř uzl.js aplikace.

05. Vylepšená slibná podpora

Před node.js 8, pokud jste chtěli používat základní moduly v aplikaci, která používá sliby, musíte ručně zabalit základní moduly, aby mohly být použity stejně. Vypadalo to něco takového:

CONST FS = Vyžaduje ('FS')
Funkce ReadFilePromise (... Args) {
  vrátit nový slib ((vyřešit, odmítnout) = & gt; {
    FS.Readfile (... Args, (Err, výsledek) = & gt; {
      Pokud (err) {
        Return Resolve (Err)
      }
      vyřešit (výsledek)
    })
  })
}
ReadfilePromise ('./ Package.json', 'UTF-8')
  .then ((res) = & gt; console.log (res))
  .catch ((err) = & gt; console.log (err)) 

S node.js 8, nová metoda pomocníka se přidá do modulu Util Core, Util.promisify. To umožňuje standardní UnEl.js volajícího volebního volebního rozhraní API zabalené do funkce, která vrátí sliby.

Pomocí této funkce je výše uvedený úryvek zjednodušeno a stane se to:

 CONST FS = Vyžadovat ('FS')
CONST promliče = Vyžadovat ('util'). Promisifikace
ReadfilePromise = Promisify (FS.Readfile)
ReadfilePromise ('./ Package.json', 'UTF-8')
  .then ((res) = & gt; console.log (res))
  .catch ((err) = & gt; console.log (err)) 

06. bezpečnější vyrovnávací paměti

Před node.js verze 8, vyrovnávací paměť přidělené pomocí nové buffer (číslo) konstruktoru neinicializovaly paměťový prostor s nulami. V důsledku toho by nové instance vyrovnávací paměti mohly obsahovat citlivé informace, což vedlo k vážným bezpečnostním problémům - byly ovlivněny i populární moduly, jako je mongoose, WS nebo modul žádosti.

Ale jak jsme se tam dostali? Když byl JavaScript přesunut z prohlížeče na stranu serveru, byla potřeba rychlého a snadného zpracování dat, takže byla přidána třída vyrovnávací paměti. Vyrovnávací paměť je mutná pole binárních dat. Při použití s ​​konstruktorem, který požádá o velikost nového vyrovnávací paměti, jen si vyhrazuje paměťový prostor, ale nevyčistil ji.

Vzhledem k tomu, že váš server může sloužit více uživatelům současně (na rozdíl od vašeho prohlížeče), je možné, že čerstvě přidělené paměťové prostory obsahuje citlivé informace od ostatních uživatelů (sudé hesla!) A může být potenciálně vystaven útočníkovi.

Zatímco to bylo záměrným rozhodnutím o zvýšení výkonu nové vyrovnávací paměti, pro většinu z nás, to nebylo zamýšlené použití - i kdyby byl dokumentován. Z tohoto důvodu, počínaje node.js 8, bude vyrovnávací paměť přidělené pomocí nové vyrovnávací paměti (číslo) nebo vyrovnávací paměti (číslo) automaticky vyplněny nuly.

07. Změny v ladění

Před node.js 8, pokud jste chtěli ladit své aplikace node.js, jedna z nejjednodušších řešení bylo zahájit vestavěný ladicí program, pomocí uzlu ladění index.js. S uzl.js 8, to je odstraněno a nahrazeno inspektorem uzlu. Stále můžete používat ladicí program CLI, ale bude brzy odstraněny.

Od nynějška byste měli používat uzel --inspect index.js. nebo uzel --inspect-brk index.js Pokud chcete debugger dát na první řádek pro první řádek aplikace. Jakmile jej spustíte, obdržíte odkaz na server, který Google Chrome může použít k připojení svého ladicího programu.

Měli byste se vydat na Chrome: // kontrolovat Ve vašem prohlížeči Chrome a automaticky rozpoznává běžící aplikaci UnEl.js, což umožňuje připojení. Poté, co jste připojeni k procesu dostanete debugger Chrome, chcete-li zkontrolovat běžící aplikace UnERE.js.

08. Zavedení statických chybových kódů

Dříve, pokud jste chtěli zkontrolovat chybu, kterou jste obdrželi v runtime a jednat proto, ve většině případů, kdy jste museli zkontrolovat chybovou zprávu. Toto bylo náchylné k chybě, protože chybové zprávy se mohou změnit s novými verzemi node.js.

S uzl.js 8, statické chybové kódy byly přiřazeny k většině chyb - je to stále postup práce, ale jakmile je dokončeno, tyto chybové kódy se nezmění, i když zpráva v chybě dělá .

Například nově zavedený Whatwg URL API. bude hodit Err_invalid_Url. Chyba v následujícím úryvku, protože parametr není platná adresa URL:

 CONST URL = Vyžadovat ("URL"). URL
CONST Myurl = Nová adresa URL ('/ foo') 

Jak vidíte, vydání Unde.js 8 aktualizace přineslo spoustu nových a vzrušujících vylepšení komunity JavaScriptu. Chcete-li začít experimentovat se všemi těmito novými vlastnostmi, hlavu nodejs.org. , Stáhněte si node.js 8 binární a začněte hrát s novým nástrojem!

Tento článek se původně objevil Čistý časopis Vydání 296. Koupit to tady .

Související články:

  • 20 modulů node.js, které potřebujete vědět
  • 30 Chrome rozšíření pro web designéry a devs
  • 3 nahoru Způsoby vybudování prototypu webových stránek

jak - Nejoblíbenější články

Jak používat gravitaci skica

jak Sep 13, 2025

(Image Credit: Gravitace skica) Gravitace Skica, návrhový a modelovací nástroj pro VR kreativy, pokračoval v zá..


Jak nakreslit osobu

jak Sep 13, 2025

V jakémkoli druhu umělce jste, pochopení toho, jak nakreslit osobu je zásadní dovednost. Mistr lidské podobě, a když je čas začít vytvářet vla..


Afinitní návrhář: Jak používat omezení

jak Sep 13, 2025

Afinitní návrhář je populární Vektorové umění nástroj. Stejně jako verze Mac a Windows, Seri..


Vytvořte 3D krajinu v 6 jednoduchých krocích

jak Sep 13, 2025

Vytvoření kusu 3D umění S přirozenou krajinou se může zdát jako výzva, ale pokud používáte správné n..


Vytvořte tkázový textový efekt s JavaScriptem

jak Sep 13, 2025

Zavedení účinků na text a typografie mohou přidat zcela nový pohled na uživatelská zkušenost na webových..


10 Tipy pro modelování tvrdého povrchu

jak Sep 13, 2025

Tento obraz Brunel's Great Eastern Paní z roku 1858 je na trvalém zobrazení na novém muzeu ve výši 7 milionů liber v Brist..


Nakreslete tužku portrét psa

jak Sep 13, 2025

Při kreslení pet portréty, nemusíte jen vědět Jak nakreslit zvířata : Úkolem je zachycení osobnosti toho..


Barva chlupatý pet portrét

jak Sep 13, 2025

Naše hotová kočka portrét Malování domácí zvířata a. kreslení zvířat Může to bý..


Kategorie