Articles

hvordan Node.js tager fat på udfordringen med Ryan Dahls Deno

Node.js, open source JavaScript runtime, udgav sin 15.version i sidste uge. Nu i sit 11. år, Node.js er lige så populær som nogensinde, men i 2020 er der opstået en upstart-konkurrent. Deno, en open source JavaScript runtime udgivet i maj, blev oprettet af ingen ringere end Ryan Dahl — den oprindelige forfatter af Node.js. Endnu værre end at have en konkurrent, der kender dit produkt indefra og ud, Deno blev oprettet specifikt for at løse, hvad Dahl opfattede som de vigtigste svagheder ved Node.js-herunder sikkerhedsproblemer, brug af et centraliseret opbevaringssystem (npm) og “heavy-handed tooling.”

for at finde ud af, hvordan den nuværende generation af Node.JS-vedligeholdere beskæftiger sig med den nye udfordrer — og i forlængelse heraf, hvad de gør for at løse Dahls kritik — jeg spurgte Bethany Griggs, en Seniorprogramingeniør hos Red Hat og en Node.medlem af det tekniske styringsudvalg. Griggs har været involveret i noden.JS projekt siden 2016, primært med noden.JS frigive arbejdsgruppe.

Richard MacManus
Richard er seniorredaktør på den nye stak og skriver en ugentlig kolonne om, hvad der er næste på cloud native internet. Tidligere grundlagde han i 2003 og byggede det ind i en af verdens mest indflydelsesrige teknologi nyheder og analyse sites.

Node.JS gør det muligt for udviklere at udføre JavaScript-kode uden for en internetsøgemaskine. Dens oprindelige formål var at skabe dynamiske hjemmesider på en server, før du sender til bro.ser; hvilket betyder JavaScript-koden fik henrettet server-side, snarere end på klienten. Mere generelt, Node.js er blevet standard for backend-programmering (mens lignende React og Angular bruges til frontend). Ideen er, at udviklere kan bruge det samme sprog, JavaScript, til både backend og frontend.

Node.js er også meget skalerbar og har en begivenhedsdrevet programmeringsmodel, som begge har gjort det til en god pasform til cloud-native applikationer.

” Node.js fortsætter med at være en af de førende driftstider for opbygning af cloud native microservices og backend applikationer,” fortalte Griggs mig. Hun tilføjede ,at ” det er også populært for IoT — projekter-et af mine yndlingseksempler er NASA ved hjælp af Node.js til at overvåge space suit data.”

rumdragter til side, Node.js ses ikke længere som den hotte nye ting ved JavaScript-udvikling (næste.js, en frontend React-ramme, har måske taget det mantel). Og sammenlignet med Deno ‘ s banebrydende natur — for eksempel blev Deno skrevet i det trendy nye programmeringssprog, Rust — noden.js-projektet følger en relativt konservativ udviklingsvej i dag. Så det er ingen overraskelse, at version 15 af Node.js er en trinvis opgradering.

Griggs citerede “at kaste som standard på uhåndterede afvisninger” som den mest betydningsfulde opdatering i v15. Dette betyder, at udviklere nu kan få ” tidlig feedback om, at de udelader håndteringen af en fejl i deres applikation.”En værdifuld teknisk opdatering, uden tvivl, men sandsynligvis ikke generere entusiastisk diskussion om tech kvidre.

svar på Ryan Dahls kritik

hvad jeg var mere nysgerrig efter, var om noden.js project team har foretaget nye udviklinger, eller rettelser, for at tackle nogle af de bekymringer, Ryan Dahl har rejst i løbet af de sidste par år?

for et par år siden lavede Dahl en præsentation om hans beklagelse efter at have oprettet Node.js. En stor var, at han ikke gjorde runtime så sikker som han kunne have — noget han adresserede, da han oprettede Deno, som fremmes som værende “sikker som standard.”Denos tilgang til sikkerhed er at sætte sikkerhedsskinner omkring dataadgang; som beskrevet i sin manual, “kræver Deno eksplicitte tilladelser til fil -, netværks-og miljøadgang.”

Ryan Dahl på JSConf EU 2018.

diplomatisk fortalte Griggs mig den knude.js vil “tage inspiration fra” Deno om dette og andre spørgsmål. Men hun sagde, at noden.JS project “har haft en historie med diskussioner omkring sikkerhedshåndhævelse og begrænsning af adgangen til API’ er fra før Deno blev annonceret.”Hun pegede på et par” eksperimentelle funktioner ” for sikkerhed (eksempel 1, eksempel 2).

Griggs er heller ikke overbevist om, at denos sikkerheds-første tilgang til adgang er rigtig for Node.js. “Til praktiske anvendelser,” sagde hun, “skulle du hurtigt falde tilbage til at give adgang til mange API’ er, så nettoværdien versus kompleksiteten ville være lav.”

selvom der er interesse blandt noden.js projektteam i at eksperimentere med stærkere sikkerhedsfunktioner, ifølge Griggs “der har ikke været en overbevisende sag at vedtage alle de samme kompromiser som Deno.”

hvad angår Dahls kritik af npm som et lukket økosystem for moduler, ser Griggs ingen grund til Node.js for at ændre det.

“med hensyn til hvordan moduler styres, har moduløkosystemet været en stor del af Node’ s succes.js. Mens der er løbende diskussioner omkring integrationen af klienter — de registre, der betjener moduler — har hovedfokus været på at tilføje support til ES6-moduler snarere end at ændre, hvordan de styres.”

i stedet for at bruge npm har Deno valgt at bruge moduler, der henvises til som URL ‘ er eller filstier.

JavaScript på serversiden går stadig stærkt

Med den nuværende popularitet af JavaScript-rammer som næste.js og Gatsby, sammen med stigningen i Jamstack og dens statiske site generation tilgang, jeg spurgte Griggs, om det har påvirket brugssagerne til JavaScript på serversiden?

“der kan være en reduktion i brugen af ting som templating motorer til server-side rendering,” sagde hun, “men Node.js bruges stadig stærkt til at opbygge mikroservices, der understøtter de statiske sider, der kan implementeres ved hjælp af tilgange som Jamstack. Knudepunkt.js fortsætter også med at blive stærkt brugt i de værktøjer, der udgør udviklingsrørledningerne til JavaScript på klientsiden.”

nodens Futures.js og Deno

så hvad er næste for Node.js? I annonceringsindlægget om version 15 skrev Griggs det efter at have fejret tiårsdagen for Node.js sidste år, ” projektet har startet de næste 10 års Node.JS indsats. “

Jeg spurgte Griggs, hvilke slags initiativer projektmedlemmerne ønsker at gennemføre i løbet af det næste årti?

“indtil videre har vi defineret vores prioriteter som udvikleroplevelse, stabilitet, operationelle kvaliteter, Node.js vedligeholder erfaring, og up-to-date teknologi og API ‘ er,” svarede hun.

disse er i øjeblikket skitseret i et GitHub-dokument med titlen værdier og prioriteter. Sikkerhed nævnes en gang som en underkategori af “operationelle kvaliteter” og siger simpelthen: “adressering af sikkerhedssårbarheder på en ansvarlig måde.”

det ser ikke ud som et højt mål for det næste årti, især sammenlignet med Denos mere ambitiøse mål om at forsøge at undgå sårbarheder i første omgang.

men siden Node.js er et stabilt og relativt langvarigt projekt, og henvender sig til nogle meget store virksomhedsprogramleverandører (som Griggs arbejdsgiver, Red Hat), du kan ikke bebrejde vedligeholderne for at være konservative. Selvom det efterlader en åbning for andre at tænke større og dristigere over fremtiden for server-side JavaScript — hvilket er præcis, hvad Dahl og hans Deno-projekt gør.

Red Hat er sponsor for den nye stak.

Feature billede via .