Google V8 JavaScript Runtime Engine + TypeScript: Förbättringar på Node.js-server


Node.js webbserverns standard introducerades 2009 av Ryan Dahl och har därefter blivit en viktig aspekt av samtida JavaScript-utvecklingsplattformar. Apache-webbservrar fungerar på basis av gängade processer, medan Node.js-servrar fungerar med händelsloppar. Med många samtidiga användare blir trådad samtid "läckande" på Apache, medan Node.js-servrar använder återuppringningar för att eliminera väntetider för extremt snabb samtidighet. JavaScript fungerar genom design på basis av händelsöglor som Dahl transkriberade till en runtime-miljö på serversidan för att bygga en webbserver med en icke-blockerande I / O-förfrågningsbehandlingsstruktur. Detta gör att Node.js-applikationsprogrammerare kan skripta mycket samtidiga program på samma hårdvara som strömmar data med snabbare hastigheter och samtidigt stöder TCP, DNS, & HTTP utan Apache. Användningen av bitade förfrågningar / svar, keep-live-funktioner och bekanta API: er som fungerar på ett plattformsoberoende sätt har lett till framgången för Node.js som en webbserverstandard, även om den också innehåller ett Python-beroende. Nästan 10 år senare har Dahl dekonstruerat de misstag som fortfarande finns i Node.js för att starta om en ny plattform skriven i Rust / Go som fungerar med TypeScript & Google V8 runtime-motor i en säker sandlådemiljö.

Deno 2018: Experimental, Developmental, & Begränsad till TypeScript-support

Den första utgåvan av Deno 2018 väckte mycket positiv uppmärksamhet i JavaScript-utvecklingsgemenskapen eftersom den uppfanns av den ursprungliga skaparen av Node.js. Dahl presenterade ett seminarium vid Javascript-konferensen JSConf.EU 2018 med titeln "10 saker jag beklagar om Node.js". Dahl beklagade att många av de strukturella frågor som han har hittat i ramverket inte längre kan ändras eftersom så många olika JavaScript-projekt är baserade på Node.js-stiftelsen som den för närvarande är designad. Från denna dubbla insikt fortsatte Dahl att koda en beta-version av Deno.

“Att använda Node är en typ av naglar-på-svarta tavlan för mig. Jag ser felen som jag introducerade på arenorna’t verkligen buggar vid denna tidpunkt de’det är bara hur det fungerar men det är buggar och det gjordes designfel som bara inte kan korrigeras nu för där’s så mycket mjukvara som använder den.”

Dahl tillbringade enligt uppgift 2017 som medlem av Google Brain Residency-programmet och arbetade med TensorFlow och problem relaterade till videoupparbetning. För att förstå perspektivförändringen för Node.js-plattformen rekommenderas det att jämföra de två videorna:

Ryan Dahl: Original Node.js-presentation (2009)

  • "…V8: Google
  • libev: event loop bibliotek
  • libeio: tråd poolbibliotek
  • http-parser: en ragel HTTP-parser
  • evcom: stream socket-biblioteket ovanpå libev
  • udns: icke-blockerande DNS-upplösare…"

Läs mer om utformningen av den ursprungliga Node.js webbservern.

10 saker jag beklagar om Node.js – Ryan Dahl – JSConf EU (2018)

  • "Stöder TypeScript ur rutan.
  • Använder en ny version av V8.
  • Inget paket.json.
  • Ingen npm.
  • Inte uttryckligen kompatibel med Node.
  • Importerar endast referenskällkods-webbadresser.
  • Filsystem och nätverksåtkomst kan kontrolleras för att köra sandlådekod.
  • Enkel körbar."

Läs mer om Deno: En säker TypeScript-runtime byggd på V8.

Problem i Node.js: webbsäkerhet, moduler, index.js, & byggprocessen

Dahl förklarade upptäckten när han introducerade Deno vid JSConf.EU-evenemanget "JavaScript på serversidan krävde en händels loop för att lyckas" var den största delen av Node.js som antogs i stor utsträckning inom IT-praxis. Dahl lämnade Node.js-projektet 2012 efter protokollen för HTTP & SSL-stöd hade upprättats. Vid den tiden hade Node.js en liten kärna, Windows Server-stöd och ett stabilt API-system, samt ett växande ekosystem av externa moduler via NPM. Under de senaste sex månaderna startade Dahl igen kodningen på plattformen med olika mål.

När det gäller ånger om Node.js webbserverprojekt uttalade Dahl:

  • ångra: ingen användning av löften för asynch / vänta
  • ångra: webbsäkerhet, skrivbehörigheter, & filåtkomst
  • ångra: Build-systemet (GYP / GN / Python)
    —> bättre skulle ha varit ett Foreign Function Interface (FFI)
  • ångra: JSON & NPM-centralförvarsberoenden
  • ångra: node_moduler för tunga & krävs ofta utan förlängning
  • ångra: Index.js komplicerar modulens laddningssystem & alltför "söt"

Sammantaget medgav Dahl att han fortfarande gillar Node.js, I / O-strukturen, & programmering på plattformen, men byggde Deno runtime-miljö för att hantera dessa ånger med en ny produkt.

Installera Deno med Bash:

alias file_server ="deno \

https://deno.land/x/net/file_server.ts –allow-net"

Uppgradera till den senaste publicerade versionen av Deno:

file_server – ladda om

Läs mer om Deno Web Server Runtime Environment för TypeScript.

Deno: Major Product Watch för Node.js, JavaScript, & TypeScript-stöd

Deno använder JavaScript som en säker sandlåda och låter användare välja ett säkert nätverk under körning. Det tillåter inte godtyckliga inbyggda funktioner att bindas in i V8. Istället görs alla systemsamtal genom meddelanden som passerar. Deno stöder för närvarande inte kompatibilitet med andra Node.js-moduler utan fokuserar istället enbart på TypeScript-stöd. Alla importerade filer måste kräva en filändelse & använd V8-stillbilder för snabbare starttider vid sammanställningen. Dahl programmerar för närvarande Deno i C ++, Go, & Rost. Många av framstegen & ändringar som introducerats av Deno har en god möjlighet att återinkorporeras i Node.js-projektet. Deno är ett viktigt projekt att se för framtiden för JavaScript, TypeScript, & Node.js utveckling.

Nod EventMachine :: run (): "Som en asynkron händelsedriven JavaScript-runtime är Node utformad för att bygga skalbara nätverksapplikationer … Detta är i motsats till dagens vanligaste samtidighetsmodell där OS-trådar används. Trådbaserat nätverk är relativt ineffektivt och mycket svårt att använda. Dessutom är Node-användare fri från oro för att låsa in processen eftersom det inte finns några lås. Nästan ingen funktion i Node utför direkt I / O, så processen blockeras aldrig. Eftersom ingenting blockerar, är skalbara system mycket rimliga att utveckla i Node … Noden liknar designen och påverkas av system som Ruby’s Event Machine eller Pythons Twisted. Node tar händelsemodellen lite längre. Den presenterar en händelsslinga som en runtime-konstruktion istället för som ett bibliotek." Läs mer om Node.js.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me