Programmering

6 ting, du bør vide om Node.js

JavaScript spiser verden med nye værktøjer og forbedringer, der ankommer i et voldsomt tempo. Med Node.js, et open source runtime-system, der blev opfundet i 2009 af Ryan Dahl, er rækkevidden udvidet til serversiden.

Node.js er blevet meget populær, idet kodere overalt bruger det til at oprette API'er og opbygge en ny matrix af interoperabilitet over Internettet. Joyent har været hovedsponsor for Node.js fra starten. I denne uges New Tech Forum skitserer Ben Wen, vicepræsident for produktmarkedsføring hos Joyent, seks ting, du bør vide om fænomenet, der ryster backend-udvikling. - Paul Venezia

Node.js er et runtime-system til oprettelse af (hovedsagelig) applikationer på serversiden. Det er bedst kendt som et populært middel for JavaScript-kodere til at oprette web-API'er i realtid.

Men Node.js er ikke en JavaScript-ramme; Faktisk har flere forfattere skrevet fremragende rammer specifikt til Node.js, herunder Express.js, Restify.js og Hapi.js. Så hvad er dette fænomen lige ved at finde vej ind i webapplikationer, operativsystemindpakninger, mikrokontroller og robotter?

I sin kerne er Node.js en strippet, meget tilpasselig servermotor - en prototjener, hvis du vil - for ud af boksen gør den ikke noget, før du konfigurerer den. Denne proto-server behandler i en loop, klar til at acceptere og svare på anmodninger. Enhver af disse anmodninger kan selv starte andre anmodninger til en anden del af systemet, såsom at læse en fil fra disken eller at sende et signal om at dreje en motor på en robotarm. Denne sløjfe, kendt som begivenhedssløjfen, er "runtime" -delen.

Node.js leveres med workhorse-stik og biblioteker som dem, der vedrører HTTP, SSL, komprimering, filsystemadgang og rå TCP og UDP. JavaScript, der allerede er indstillet til en webbrowsers event loop-miljø til GUI og netværksbegivenheder, er et godt sprog til tilslutning af disse stik. Du kan snappe stik på begivenhedssløjfen næsten lige så let som du kan snap Lego-dele sammen. Hvis du gør det, kan du oprette en enkel, dynamisk webserver på blot nogle få linjer JavaScript.

Kort sagt er Node.js et runtime-system, der gør det nemt at opbygge et netværk eller andre hændelsesdrevne applikationsservere. Her er de seks ting, du har brug for at vide om det.

1. JSON har vundet

JSON (JavaScript Object Notation) er et praktisk, sammensat, vildt populært dataudvekslingsformat. JSON har aktiveret JavaScript-udviklere til hurtigt at konstruere API'er og fremme interoperabilitet i skala - et nøglemål for Node.js-kodere. JSONs skarpe enkelhed kan udtrykkes i kun fem jernbaneparseringsdiagrammer, især uden den selvbevidste forberedelse af XML og dens planlagte venner (SOAP, XSD, WS- *, RELAX-NG og deres endeløse udvalgsmøder).

JSON og JavaScript har forstærket hinandens betydning. Tilbage i de tidlige dage af Internettet skulle dynamiske data i browseren manipuleres, filtreres og drives af det eneste rimeligt forståelige sprog, der ikke er tilgængeligt, der er tilgængeligt: ​​JavaScript. Uanset dets oprindelige netværkspræsentative format, skulle data samles i et JavaScript-objekt. Afhængigheden af ​​JSON til beskrivelse af generelle formål gav anledning til dokumentorienterede NoSQL-databaser som MongoDB og CouchDB. Det hele er JSON hele tiden i dag.

2. JavaScript er overalt

JavaScript er et quirky, objektorienteret, C-lignende sprog. Det er det eneste valg til at udvikle applikationer i browseren med en ny ramme, der introduceres hver uge for at befordre udviklere. Og med Node.js er JavaScript spildt over på serveren. Konkurrerende implementeringsteam har ført JavaScript-tolke fremad, så Googles V8-motor er respektabelt hurtig - hurtig nok til at være i kernen i Node.js.

JavaScript har også den interne evne til at håndtere begivenhedsløkkemekanismen på en ligetil måde. Andre sprog har denne mulighed, som bruges af deres egne begivenheder. Python har Twisted og Ruby har EventMachine. Men på grund af historien transporteres begge disse event-loop-systemer med relativt nemme måder at lave en bestemt form for performancefejl, mens JavaScript forbliver relativt fri for denne fare.

JavaScript kører også på tværs af mange OS-miljøer, idet det historisk har været nødvendigt at understøtte dem i browseren. Dette sammen med libuv-biblioteket for at hjælpe med at abstrakte nogle af operativsystemforskellene betyder, at Node.js har et bredt fodaftryk.

Men den største kraft for JavaScript-migration til serversiden er menneskelig. Programmører skal gøre mindre mental kontekstskift mellem en webbrowser og serveren. Der er endda bestræbelser på at forene miljøer mellem klient og server, så koden kan køre lige godt begge steder, hvilket yderligere forenkler modellen og fører til øget produktivitet.

3. Deling tilskyndes

Etos i Node.js-fællesskabet er "del glædeligt." Det er skræmmende nemt at dele pakker med bibliotekode - teknisk, kulturelt, proceduremæssigt og lovligt. Node Package Manager er inkluderet i Node.js og er vokset til et lager på næsten 50.000 pakker, hvilket gør det sandsynligt, at en anden udvikler allerede har pakket en løsning på dit problem eller endda nogle mindre almindelige.

Node.js 'namespace-filosofi er i det væsentlige fraværet af en, der lader enhver forfatter offentliggøre under et ubrugt modulnavn i det delte offentlige lager. Deling af kode under MIT open source-licensen anbefales stærkt i samfundet, hvilket også gør krydsbestøvning af kode relativt bekymringsfri (og advokatfri) set fra et intellektuelt ejendomsperspektiv. Endelig er samfundet stærkt engageret i at binde interessante C-biblioteker som computersyn (OpenCV) og Tesseract open source optisk tegnbibliotek. Sidstnævnte muliggør for eksempel weekendprojekter som Imdex, der behandler billeder fra Internettet, så de automatisk kan søges efter skrevet indhold.

4. Node Package Manager fungerer bredt

Apropos administration af biblioteksafhængigheder fortjener Node Package Manager at blive kaldt ud. Node Package Manager er roden til næsten alle implementeringssystemer til Node.js og ligger til grund for de mange PaaS (platform-as-a-service) udbydere til Node.js, hvilket faktisk gør det noget let at flytte mindre applikationer mellem udbydere. Dens enkle, pålidelige pakkehåndtering har ladet Node-økosystemet vokse ekstremt godt i nyere historie, til det punkt, at den underliggende offentlige service nu skal skaleres til det næste niveau.

5. 'Batterier ikke inkluderet' minimalisme

Node.js applikationer og Node.js Core selv er opdelt i små moduler, der er sammensat og delt. Hver pakke og værktøj kan afgrænses tæt og fremstilles til at være håndterbare. Disse kan derefter bages sammen - ofte uden for meget unødvendig æltning. Den lave barriere, ubekymrede karakter ved at oprette et modul tilskynder også eksperimenter i samfundet, og der er en hel del overlapning og eksperimentering i pakkepopulationen. Når de udføres godt, håndterer hver pakke typisk en opgave (f.eks. Node-optimist.js: 'letvægts [kommandolinie] indstillingsparsing').

6. Instrumentering

Endelig er Node.js godt instrumenteret til produktionsbrug. Hvad det betyder er, at der er værktøjerne til at hjælpe med at bringe en applikation til fuld produktionsberedskab og ydeevne. Som med enhver modningsteknologi er der områder, hvor mere dokumentation, værktøjer og bedste praksis kan være nyttige. Men da Node.js bevæger sig mod sin næste store udgivelse, er den på forholdsvis solid fod.

Knude i sammenhæng

Hvis du kender JavaScript, er Node.js en skånsom rampe til asynkron computing til internettet. Og det sker bare, at Node.js er egnet til at løse webproblemer nøjagtigt af denne type: udfordringer med integration og lim med kaskadekald til API efter API.

Hvor fungerer Node.js ikke så godt? Det er ikke helt hensigtsmæssigt på steder, hvor en enkelt trådberegning vil være tilbageholdelsen, som nogle slags på hinanden følgende tilnærmelse eller klassificering. I disse tilfælde er det mere effektivt for Node.js at droppe anmodningen til et uafhængigt bibliotek, der er dedikeret til opgaven, hvor den kan distribueres over hundreder eller tusinder af processorer.

Node.js modnes hurtigt og bliver implementeret i flere og mere missionskritiske og indtægtskritiske systemer, såsom e-handel Black Friday-infrastrukturer. Det er let at komme i gang med Node.js, og alligevel er Node.js dybt nok til at håndtere moderne webkompleksiteter. Hvis du bygger dit næste generations websted - især API'er til mobil- og webintegration - eller hvis du opretter noget nyt, der afhænger af selve de underliggende tjenester, er Node.js et runtime-system, der meget godt kan fungere for dig.

New Tech Forum giver et middel til at udforske og diskutere nye virksomhedsteknologier i hidtil uset dybde og bredde. Valget er subjektivt baseret på vores valg af de teknologier, som vi mener er vigtige og af største interesse for læserne. accepterer ikke markedsføringssikkerhed til offentliggørelse og forbeholder sig retten til at redigere alt bidraget indhold. Send alle henvendelser til [email protected]

Denne artikel, "6 ting, du bør vide om Node.js", blev oprindeligt offentliggjort på .com. For at få de seneste nyheder om forretningsteknologi, følg .com på Twitter.