Mielőtt mélyen belemerülnénk a Chrome V8 magjába, először tegyük le alapjainkat. Valamennyi rendszerünk mikroprocesszorokból áll, ami éppen a számítógép belsejében ül, és lehetővé teszi, hogy ezt elolvassa.
A mikroprocesszorok apró gépek, amelyek elektromos jelekkel működnek, és végül elvégzik a munkát. A mikroprocesszoroknak adunk utasításokat. Az utasítások azon a nyelven vannak, amelyet a mikroprocesszorok képesek értelmezni. A különböző mikroprocesszorok különböző nyelveket beszélnek. A leggyakoribbak közül az IA-32, x86–64, MIPS és ARM. Ezek a nyelvek közvetlenül érintkeznek a hardverrel, így a beléjük írt kódot gépi kódnak hívják. A számítógépünkre írt kódot konvertáljuk vagy fordítjuk gépi kódgá.
Így néz ki a gépi kód:

Olyan utasításokból áll, amelyeket a rendszer egy adott memóriáján hajtanak végre alacsony szinten. Szerencsésnek érezheti magát, amiért nem kellett mindezt megírnia a program futtatásához!
A magas szintű nyelveket elvonják a gépi nyelvektől. Az alábbi absztrakciós szinten láthatja, hogy a JavaScript mennyire van elvonva a gép szintjétől. A C / C ++ viszonylag sokkal közelebb áll a hardverhez és ennélfogva sokkal gyorsabb, mint a többi magas szintű nyelv.

Most térjünk vissza a V8 motorra: A V8 egy erőteljes, nyílt forráskódú Javascript motor, amelyet a Google biztosít. Mi tehát valójában a Javascript Engine? Ez egy olyan program, amely a Javascript kódot alacsonyabb szintű vagy gépi kódra konvertálja, amelyet a mikroprocesszorok megérthetnek.
Különböző JavaScript motorok vannak, beleértve az Rhino, a JavaScriptCore és a SpiderMonkey programokat. Ezek a motorok megfelelnek az ECMAScript szabványoknak. Az ECMAScript meghatározza a szkriptnyelv szabványát. A JavaScript az ECMAScript szabványokon alapszik. Ezek a szabványok meghatározzák, hogy a nyelvnek hogyan kell működnie és milyen tulajdonságokkal kell rendelkeznie. Az ECMAScriptről itt tudhat meg többet.

A Chrome V8 motor:
- A V8-as motort C ++ nyelven írják, és a Chrome-ban és a Nodejs-ban használják.
- Az ECMAScriptet az ECMA-262 előírások szerint hajtja végre.
- A V8 motor önállóan képes működni, beágyazhatjuk saját C ++ programunkkal.
Értsük meg kicsit jobban az utolsó pontot. A V8 önállóan képes futtatni, és egyúttal hozzáadhatjuk saját funkcióink megvalósítását a C ++ nyelven, hogy új funkciókat adjunk a JavaScript-hez.

Tehát például: print('hello world')
nem érvényes utasítás a Node.js fájlban. Hibát ad, ha lefordítjuk. De hozzáadhatjuk saját nyomtatási funkciónkat a C ++ nyelven a V8 tetejére, amely a Githubnál nyílt forráskódú, így a nyomtatási funkció natívan működik. Ez lehetővé teszi a JavaScript számára, hogy többet értsen, mint amit az ECMAScript szabvány előír, amelyet a JavaScriptnek meg kell értenie.
Ez egy hatékony szolgáltatás, mivel a C ++ programozási nyelvként több funkcióval rendelkezik, mint a JavaScript, mivel sokkal közelebb áll a hardverhez, mint például a merevlemezen található fájlok és mappák kezelése.
Ha lehetővé teszi számunkra, hogy C ++ nyelven írjunk kódot, és elérhetővé tegyük azt a JavaScript számára, akkor további funkciókat adhatunk hozzá a JavaScript-hez.
A Node.js önmagában egy V8 motor C ++ megvalósítása, amely lehetővé teszi a szerver oldali programozást és hálózati alkalmazásokat.
Most nézzük meg a motor belsejében található néhány nyílt forráskódot. Ehhez el kell mennie a v8 / minták / shell.cc mappába.
Itt láthatjuk a végrehajtását a különböző funkciók, mint például Print
, és Read,
amelyek natívan nem áll rendelkezésre Node.js.
Az alábbiakban láthatja a Print
függvény megvalósítását. Amikor a print()
függvényt meghívja a Node.js, visszahívást hoz létre, és a függvény végrehajtásra kerül.
Hasonlóképpen hozzáadhatjuk a különböző új funkciók saját megvalósítását a C ++ - ban a V8-on belül, lehetővé téve a Node.js számára.

Ezt bizony túl sok megfogni egy egyszerű kijelentéshez, és ennyi munkát végez a V8-as motor a motorháztető alatt.
Most már tisztában kell lennie azzal, hogy a Node.js hogyan működik, és mi is valójában a Chrome V8 motor.
Köszönjük, hogy elolvasta ezt a cikket. Kövessük nyomon a Twitter , Linkedin , GitHub , és a Facebook .