A NODE.JS legfrissebb nagyszerű kibocsátása számos jelentős javulást eredményez a JavaScript-közösség számára, beleértve a frissített JavaScript-motort, az NPM 5. verzióját, a Google V8, NODE.JS API, ASYNC_HOOKS, A ASYNC_HOOKS, a WHUWG URL elemző, biztonságosabb pufferek és így tovább. Itt frissítjük Önt ezeken a funkciókról és a kiadás másik legfontosabb szempontjairól.
A node.js 8 a Kódnév Carbon alatt jelenik meg, és most elérhető a Node.js webhely . Aktívan 18 hónapig aktívan dolgozik (nincs új funkció, csak hibajavítás, biztonsági javítások és NPM frissítések), mielőtt a karbantartási módba kerülne. Az előző kiadásokhoz hasonlóan, a karbantartás során üzemmód kikapcsol csak akkor kap kritikus biztonsági frissítések és hibajavítások.
Biztonságos azt mondani, hogy mivel a node.js már körül volt, ez az egyik legnagyobb frissítés, amelyet a futásideje valaha kapott - megváltoztatja, hogy a natív kiegészítők hogyan íródnak, és további biztonságot és teljesítményfejlesztést is hoznak.
Risingstack Segítség volt a vállalatoknak a NODE.JS-vel, négy évig képzéssel, tanácsadással vagy fejlesztéssel. Az egyik legnagyobb küzdelem, amellyel natív függőséget adtunk a projektekhez.
A NODE.JS 8-kor, ha az alkalmazások a natív kóddal rendelkező moduloktól függenek, amikor az új NODE.JS verziók megérkeztek, az alkalmazás fenntartójaként újra kellett volna fordítania a függőségeket. Ha szerencsés voltál, először dolgozott.
Ezt a folyamatot lehetővé tette a hatalmas munkamodul karbantartókkal, amelyek a moduljaikat az inkompatibilis csomópontokon dolgozták, főként Nan nevű modul segítségével (node.js natív absztrakciók) segítségével.
Ez a folyamat messze nem ideális, mivel sok vállalat nem sikerült frissíteni a függőségeiket, ha nem tudták összeállítani, és hatalmas extra munkaterhelést is helyeznek a modul karbantartásaira. A probléma megoldásához a NODE.JS API (vagy N-API) bevezetésre került.
A NODE.JS API az egyik legjelentősebb javulás a csomópont.js 8. Js egy jól definiált ABI (alkalmazás bináris felület) a node.js-hez, hogy virtuális gép agnosztikus legyen. Ez azt jelenti, hogy a natív modulok nemcsak különböző csomópontokkal működnek a Google V8 JavaScript motorján, hanem a Microsoft Chakra segítségével is.
Most az N-API kísérleti állapotban van, ami jelentős változások történhetnek mind a végrehajtás, mind az API esetében. Ezzel kapcsolatban az őshonos modul-karbantartókat arra ösztönzik, hogy kipróbálják az új felületet, és visszajelzést adjanak.
Ha modul karbantartó, akkor a modul N-API verzióját a fő modul verziójával párhuzamosan engedheti el. Ehhez a hivatalos ajánlás az, hogy közzéteszi a modul egy verzióját az N-API címkével az NPM-hez.
Az N-API verzió közzététele:
Így biztosítja, hogy az N-API verzió nem lesz a legújabb kiadások, így ha valaki telepíti a modult, alapértelmezés szerint megkapja a nem N-API verziót.
A fonalat, a Facebook mérnökei által létrehozott csomagkezelőt 2016 októberében szabadították fel. Megpróbálta foglalkozni a hivatalos NPM-ügyfél néhány hiányosságaival, többnyire előbbi, és determinisztikus. Az újítások többsége az NPM 5-ben is szerepel.
Csakúgy, mint a fonal, az NPM 5 bemutatta a zárfájl-mechanizmust - amikor újonnan függ a projekthez, automatikusan hozzáadódik, nem csak az csomag.json , de egy új fájl hívott csomag-lock.json is.
Megkérdezheti, hogy mi a különbség csomag-lock.json és npm-shrinkwrap.json , mivel az NPM-Shrinkwrap NPM-ben volt, mivel örökké? Hosszú történet rövid, lényegében ugyanaz, de csomag-lock.json automatikusan létrejön.
Céljuk, hogy pontosan leírja, hogy a függőségi fa NPM-nek meg kell teremtenie a csomagot. Ha mindkettőnk van, NPM-Shrinkwrap elsőbbséget élvez. Az NPM ajánlása alapján kell használni npm-shrinkwrap.json Ha azt szeretné közzétenni, így a modul fogyasztók is fogják használni. Másrészt a csomag-lock.json belsőleg - még a tárolókra is ellenőrizni kell.
Az 5-ös NPM 5-hez való javítások nem álltak meg egy zárfájl hozzáadásával - az új verzióval, az összes telepítésű modulok automatikusan mentésre kerülnek, és mindkettőnek hozzá kell adni őket csomag.json és csomag-lock.json fájl.
Az NPM Scripts Way módja egy kicsit megváltozott. Először is, az előtelepített szkriptek mostantól minden más előtt futnak, így módosíthatják a Node_modules könyvtárat, mielőtt a CLI ténylegesen elolvassa. Emellett két új szkriptet adtak hozzá - előrecsomagolás és postacsács. Mindketten az NPM Pack és az NPM-en is megjelennek, de nem az NPM telepítésen.
A NODE.js szívében a JavaScript-motor, amely értelmezi a JavaScript-kódot, létrehozza a Bytecode-t, és lehetővé teszi az alkalmazás futtatását. Az új NODE.JS 8 kiadással ez is frissült.
A frissített V8 motorral nagyobb teljesítménynövelések kerülnek bevezetésre - de még fontosabb, garantáltan előre kompatibilis alkalmazás bináris interfész. Ez azt jelenti, hogy a NODE.JS képes lesz frissíteni a V8-ot a nagy csomópont nélkül.
Ez kulcsfontosságú, mivel a V8 motor újabb verziói új fordítóvezetéket vezetnek be, amely további teljesítménynöveléseket fog bevezetni a NODE.JS.-hez. Ez a frissítés olyan fontos volt, hogy ez volt az oka az eredeti csomópont.js 8 kiadási dátumot elhalasztották.
Az aktuális csővezeték túl bonyolult, és az új nyelvi funkciók bevezetése általában azt jelenti, hogy megérinti a csővezeték több részét. Az új csővezeték segítségével sokkal egyszerűbb lesz.
Gyújtás, az új tolmács és a turbó, az új optimalizáló fordító, közel három és fél éve fejlődnek. Ezek az alapítvány, amelyen új nyelvi funkciók épülnek fel. Ezek közé tartozik a tapasztalat, hogy a V8-as csapat a Google gyűjtött mérési valós JavaScript alkalmazásokat.
Ahhoz, hogy jobban megértsük, mi az aszinkron horgok, vegyünk egy lépést hátra, és először megragadják a folytatás helyi tárolását. Úgy működnek, mint a menetes programozás menetes programozásában, de a csomópontokban.
Képzeld el, hogy írjon egy olyan alkalmazást, amely egy terméket kap az adatbázisból, majd később szeretné elküldeni a HTML-válaszban:
CONSTECENAMESTACE = szükséges (folytatás-helyi tárolás "). CreateNamespace
CONST Session = CreateMespace ("My-App-Session")
CONST DB = igényel ("./ db.js")
Onrequest funkció (opciók, következő) {
db.fetchuserbyid (Options.ID, Funkció (hiba, felhasználó) {
Ha (hiba) {
Visszatérés a következő (hiba)
}
session.set ('felhasználó, felhasználó)
következő()
})
Később, ha elérni szeretné a felhasználói objektumot, mindössze annyit kell tennie, hogy megragadja a helyi tárhelyet:
CONST GAMESSACE = igényel (folytatás-helyi tárolás). Gamespace
CONST Session = Gamespace ('My Session')
const render = szükség ('./ render.js ")
Funkció befejezése (válasz) {
const felhasználó = session.get ('felhasználó)
render ({felhasználó: felhasználó}). Cső (válasz)
}
Ezt a technikát széles körben alkalmazzák az alkalmazás teljesítményellenőrzési szolgáltatók, mint például az RisingStack nyomkövetése, a végrehajtás kontextusának megtartása és a gyártási rendszerek ellenőrzési információinak gyűjtése.
Az aszinkron horgokkal hasonló tulajdonságot mozgatunk a NODE.JS Core-hoz - segít nyomon követni az aszinkron kéréseket és a kezelőket az életciklusukon keresztül. A async_hookss A modul egy API-t biztosít a Visszahívások regisztrálása, amely nyomon követi az aszinkron erőforrások élettartamát, amely a node.js alkalmazáson belül létrehozott.
A (z) NODE.JS 8.HS 8, ha azt akarta használni a magmodulokat az ígéreteket használó alkalmazásban, kézzel kellett volna csomagolnia a magmodulokat, így ugyanúgy használható. Úgy nézett ki, mint ez:
CONST FS = szükséges ('FS')
Funkció Readfilepromise (... Args) {
Új ígéret visszaadása ((megoldja, elutasítja) = & gt; {
Fs.readfile (... args, (hibás, eredmény) = & gt; {
ha (hibás) {
Visszatérési megoldás (hibás)
}
megoldás (eredmény)
})
})
}
Readfilepromise ('./ csomag.json', 'UTF-8')
.hen ((res) = & gt; console.log (res))
.catch ((err) = & gt; console.log (hibás))
A NODE.JS 8-val új helper módszert adunk az util magmodulhoz, az UTIL.Promisify-hez. Lehetővé teszi a Standard Node.js visszahívási stílusú API-ket, amelyeket egy ígéreteket ad meg.
Ezzel a funkcióval a fenti krém egyszerűsödik, és ez lesz:
CONST FS = szükséges ('FS')
const promisify = szükséges ("util"). Promisify
Readfilepromise = Promisify (Fs.readfile)
Readfilepromise ('./ csomag.json', 'UTF-8')
.hen ((res) = & gt; console.log (res))
.catch ((err) = & gt; console.log (hibás))
A NODE.JS 8. verzió előtt az új puffer (szám) konstruktorral kiosztott pufferek nem tudták inicializálni a memóriaterületet a nullákkal. Ennek eredményeképpen az új puffer példányok érzékeny információkat tartalmazhatnak, ami komoly biztonsági problémákat okoz - még a népszerű modulok, például a mongoóz, ws vagy a kérésmodul érintettek.
De hogyan jutunk oda? Ha a JavaScriptet a böngészőből a szerver oldalára költöztük, gyors és egyszerű adatfeldolgozásra volt szükség - így a pufferosztályt hozzáadták. A puffer a bináris adatok mutálja. Ha az új puffer méretét kérő konstruktorhoz használják, akkor csak fenntartotta a memóriahelyet, de nem tisztította meg.
Mivel a szerver képes szolgálni több felhasználó egyidejűleg (ellentétben a böngészőben), akkor lehetséges, hogy a frissen kiosztott memóriát tartalmaz érzékeny adatokat a többi felhasználó számára (még jelszavak!), És potenciálisan kitett támadó.
Bár szándékos döntés volt az új puffer létrehozásának teljesítményének növelése, a legtöbbünk számára nem volt a tervezett felhasználás - még akkor is, ha dokumentálták. Emiatt a NODE.JS 8-as verzióval kezdődően az új puffer (szám) vagy puffer (szám) által kiosztott pufferek automatikusan tele vannak nullákkal.
A NODE.JS 8 előtt, ha hibakeresését akarta hibáztatni, az egyik legegyszerűbb megoldás az volt, hogy elindítsa a beépített hibakeresőt, a csomópont hibakeresésével index.js. A NODE.JS 8-mal ezt eltávolítják és kicserélik a csomópont-felügyelővel. Még mindig használhatja a CLI hibakeresőt, de hamarosan eltávolodik.
Mostantól a csomópontot kell használnia - Innspect index.js vagy csomópont - ININSPECT-BK index.js Ha azt szeretné, hogy a hibakeresés megszakítsa az alkalmazás első sorát. Miután futtatta, megkapja a websocket kapcsolatot, amelyet a Google Chrome használhat a hibakereső csatlakoztatásához.
Meg kell fejezned Chrome: // ellenőrzése A Chrome böngészőjében, és automatikusan felismeri a futó csomópontot, amely lehetővé teszi, hogy csatlakozzon. Miután csatlakozott a folyamathoz, megkapja a Chrome hibakeresését, hogy megvizsgálja a futó csomópontot.
Korábban, ha azt akarta, hogy ellenőrizze a futásidejű hibát, és ennek megfelelően cselekedjen, a legtöbb esetben ellenőriznie kell a hibaüzenetet. Ez hiba volt, mivel a hibaüzenetek új csomópontokkal változhatnak.
A (z) NODE.JS 8-val a legtöbb hibára hozzárendelték a statikus hibakódokat - még mindig munka-in-haladás, de ha befejeződött, ezek a hibakódok nem fognak megváltozni, akkor is, ha az üzenet a hiba nem működik .
Például az újonnan bevezetett Whatwg url api dobja Err_invalid_url Hiba a következő részletekben, mivel a paraméter nem érvényes URL:
CONFT URL = szükséges ('URL'). URL
CONST MYURL = Új URL ('/ FOO')
Mint látható, a kibocsátás a node.js 8 frissítés hozott számos új és izgalmas fejlesztéseket JavaScript közösség. Az új funkciókkal való kísérletezés megkezdéséhez menj át az összes új funkcióval nodejs.org , Töltse le a Node.js 8 bináris és kezdje el játszani az új eszközzel!
Ez a cikk eredetileg megjelent net magazin Kiadás 296. Vásárolja meg itt .
Kapcsolódó cikkek:
(Kép hitel: Aaron Blaise) Tanulás, hogyan kell felhívni az állatokat az integrált része az illusztrációnak. A..
(Kép hitel: Framer) Tervezőként mindig van kérdés arról, hogy milyen prototípuskészítő eszközöket kell ha..
(Kép hitel: Alex Blake / Facebook) A Facebook adatvédelmi beállításai egy kicsit paradoxonnak tűnhetnek. A Face..
Ha olyan projekteken dolgozik, mint az App Design vagy a Branding biztosíték, fontos, hogy a különböző elemek között konz..
Ehhez a műhelyhez létrehozok egy belső hátteret, amely vonallal és texturált festékstílussal rendelkezik. A festési foly..
Gyakran ez a legegyszerűbb hatások, amelyek a legszembetűnőbbek, és a neon szöveg egy ilyen projekt. Ez is könnyebb olyan ..
Az impresszionista grafika friss és spontán volt, és merész ecsetvonásokkal hajtották végre, amelyek nem mutatnak túl sok..
Az ügynökség megfelelő neve nem könnyű; Sokan olyan csapdába esnek, hogy a cégüket úgy hívják, mint a "csokoládé bi..