Node.js er et godt runtime-miljø - og her er hvorfor du skal bruge det

En introduktion til det skalerbare, udvidelige, let tilgængelige, selvforsynende og meget effektive runtime-miljø

Node.js er et runtime-miljø på tværs af platforme til JavaScript, som er gratis og open source. Det er fuld stack, så det kan bruges til at udvikle både klientsiden og serversiden af ​​en applikation.

Hvem bruger Node.js? Node.js er et populært tech stack-valg for virksomheder, der udvikler onlinespil, instant messengers, sociale medieplatforme eller videokonferenceværktøjer. Det er perfekt egnet til realtidsapplikationer, der har brug for opdatering af appdataene konstant.

Før jeg begynder at nævne fordelene ved Node.js, skal jeg forklare noget. Der er en vis terminologi, der skal afklares for os alle at være på samme side. Hvis du er opmærksom på disse begreber, er du velkommen til at rulle dem forbi ned.

Googles V8-motor er den motor, som Node.js implementeres med. Oprindeligt blev det udviklet af Google og for Google. V8 blev skrevet i C ++ og havde til formål at kompilere JS-funktioner til maskinkode. Den samme motor bruges af Google Chrome. Det er kendt for imponerende høje hastigheder og konstant forbedret ydelse.

Begivenhedsbaseret model står for processen med at opdage begivenheder, så snart de finder sted og håndterer dem henholdsvis. Du kan bruge Promises, Async / Await og callbacks til håndtering af begivenheder. For eksempel præsenterer dette uddrag håndtering af skrivning af csv-filer ved hjælp af Promise event-modellen.

const createCsvWriter = require('csv-writer').createObjectCsvWriter; const path = ‘logs.csv”; const header = [ { id: 'id', title: 'id’ }, { id: 'message', title: 'message' }, { id: 'timestamp', title: 'timestamp' } ]; const data = [ { 'id': 0, 'message': 'message1', 'timestamp': 'localtime1' }, { 'id': 1, 'message': 'message2', 'timestamp': 'localtime2' }, { 'id': 2, 'message': 'message3', 'timestamp': 'localtime3' } ]; const csvWriter = createCsvWriter({ path, header }); csvWriter .writeRecords(data) .then( ()=> console.log('The CSV file was written successfully!') ) .catch( err => console.error("Error: ", err) );

Ikke-blokerende håndtering af input / output-anmodning er den måde, Node.js behandler anmodninger på. Normalt udføres kode sekventielt. En anmodning kan ikke behandles, før den forrige er færdig. I den ikke-blokerende model behøver anmodninger ikke at vente i en linje. På denne måde er den enkelte trådning i Node.js den mest effektive, behandlingen af ​​anmodningen stemmer overens, og svartiden er kort.

npm er en Node.js pakkehåndtering og en åben markedsplads for forskellige JS-værktøjer. Det er den største software-registreringsdatabase i verden. I øjeblikket har den over 836.000 biblioteker.

Så hvorfor udvikler Node.js? Lad os se, hvad fordelene ved Node.js er.

2 min

JavaScript

Node.js er JavaScript-baseret. JavaScript er et af de mest populære og enkleste kodningssprog i it-verdenen. Det er let at lære for begyndende udviklere. Selv folk uden kendskab til JavaScript, men med en vis grundlæggende teknisk baggrund, kan læse og forstå koden.

Mere end det, puljen af ​​JavaScript-talenter er stor, så som virksomhedsejer har du fuld frihed til at vælge det team, du vil arbejde med.

Skalerbarhed

Node.js-applikationer er let skalerbare både vandret og lodret. Vandret tilføjes nye noder let til det eksisterende system. Vertikalt kan yderligere ressourcer let føjes til de eksisterende noder.

Når du udvikler en applikation med Node.js, behøver du ikke oprette en stor monolitisk kerne. I stedet kan du udvikle et sæt moduler og mikrotjenester, der hver kører i sin egen proces. Alle disse små tjenester kommunikerer med lette mekanismer og omfatter din applikation. Tilføjelse af en ekstra mikroservice er så simpelt som det kan blive. På denne måde bliver udviklingsprocessen meget mere fleksibel.

Udvidelse

Blandt andre fordele ved Node.js er der muligheden for at integrere det med en række nyttige værktøjer. Node.js kan let tilpasses og udvides.

Det kan udvides med indbyggede API'er til udvikling af HTTP- eller DNS-servere. For at lette front-end-udvikling med gamle versioner af Node eller browser kan Node.js integreres med en JS-kompilator Babel.

Til enhedstest fungerer det perfekt med for eksempel Jasmine. Til implementeringsovervågning og fejlfindingsformål fungerer det godt med Log.io.

Sådanne værktøjer som Migrat, PM2 og Webpack kan bruges til henholdsvis datamigrering, processtyring og modulbundt. Derudover udvides Node.js med rammer som Express, Hapi, Meteor, Koa, Fastify, Nest, Restify og mange andre.

Tilgængelighed

Node.js er open source. Skaberen har givet alle ret til at lære, udvikle og distribuere teknologien til ethvert formål. Node.js-miljøet er hundrede procent gratis. Færdige moduler, libs og kodeeksempler er open source, så du kan konfigurere din applikation nemt og gratis. Evnen til at lære at arbejde med Node.js som også tilgængelig for alle, der er villige til at tilegne sig denne teknologi.

Selvforsyning

Der er mange praktiske opbevaringssteder med forskellige færdige moduler. Standard-ppm-manager npm tilbyder også en række ekstra biblioteker og værktøjer. Disse letter udviklingsprocessen betydeligt.

Node.js-teknologi kan også bruges til at udvikle både front-end og back-end med det samme sprog. Du kan arbejde med det samme team, indtil det endelige produkt er implementeret. Det forenkler kommunikationen og sparer dig for mange organisatoriske opgaver.

Du kan endda bruge Node.js som en platform til maskinlæring og kunstig intelligens træning.

const tf = require('@tensorflow/tfjs-node'); const trainData = [ { input: [-120, -100, -60, -40, -60, -80, -80, -60, -40, -60, -80, -100].map(value => Math.abs(value)), output: [1]}, { input: [-82, -63, -45, -55, -77, -98, -122, -90, -55, -44, -61, -78].map(value => Math.abs(value)), output: [0]}, . . . { input: [-80, -60, -40, -60, -80, -100, -120, -100, -60, -40, -60, -80].map(value => Math.abs(value)), output: [0]}, ]; const model = tf.sequential(); model.add(tf.layers.dense({inputShape: [12], units: 12, activation: 'sigmoid'})); model.add(tf.layers.dense({units: 1, activation: 'sigmoid'})); const preparedData = tf.tidy(() => { tf.util.shuffle(arr); const inputs = arr.map(d => d.input) const outputs = arr.map(d => d.output); const inputTensor = tf.tensor2d(inputs, [arr.length, arr[0].input.length]); const labelTensor = tf.tensor2d(outputs, [arr.length, 1]); const inputMax = inputTensor.max(); const inputMin = inputTensor.min(); const labelMax = labelTensor.max(); const labelMin = labelTensor.min(); const normalizedInputs = inputTensor.sub(inputMin).div(inputMax.sub(inputMin)); const normalizedOutputs = labelTensor return { inputs: normalizedInputs, outputs: normalizedOutputs, inputMax, inputMin, labelMax, labelMin, } }); model.compile({ optimizer: tf.train.adam(), loss: tf.losses.meanSquaredError, metrics: ['mse'], }); const batchSize = 32; const epochs = 50; const trainedModel = model.fit(inputs, outputs, { batchSize, epochs, shuffle: true, });

Universalitet

Node.js er på tværs af platforme. For eksempel kan en Node.js-udvikler oprette en desktop-applikation på tværs af platforme til Windows, Linux og Mac. Hvad mere er, Node.js er ikke kun til mobil-, desktop- og webudvikling. Fordelene ved Node.js anvendes aktivt i udviklingen af ​​cloud- eller IoT-løsninger.

Enkelhed

Node.js har en lav indgangstærskel. Det er ret simpelt at erhverve for folk med kendskab til JavaScript. Det er også nødvendigt at påpege, at den lave indgangstærskel direkte oversættes til et alt for stort antal specialister af lav kvalitet.

Automatisering

Node.js giver mulighed for at automatisere gentagne operationer, planlægge handlinger eller dele ændringsposter. Node.js grupperer automatisk funktioner og holder din kode i orden. Derudover er der et omfattende indbygget bibliotek med UI-skabeloner eller klar til brug-funktionalitet.

Høj ydeevne, hastighed og ressourceeffektivitet

I Node.js fortolkes JavaScript-koden ved hjælp af Googles V8 JS-motor. Google investerer meget i sin motor, så ydelsen forbedres konstant.

Node.js executes code outside a web browser, which greatly improves the performance and resource-efficiency of an application. Also, it allows using features that are not available for the browser, such as a direct file system API, TCP sockets etc.

The code execution is speedy and several requests can be processed simultaneously since Node.js runtime environment supports the non-blocking event-driven input/output operations. Node.js also offers the feature of single module caching, which allows the application to load faster and be more responsive.

Community Support

Among the advantages of using Node.js, developers mention the global developer community. There is an immense number of active developers who contribute to open-source, develop and support the framework, and share their learning insights or coding experience with others.

Node.js is well-supported on GitHub, and it is more popular there than, for example, React. Moreover, such companies as IBM, PayPal, eBay, Microsoft, Netflix, Yahoo!, LinkedIn, or NASA support and actively use Node.js.

However…

It would not be fair to list only the benefits of Node.js without mentioning the drawbacks of Node.js. Presenting a one-sided point of view is not a healthy practice. I want you to understand that no solution is perfect, and Node.js is no exception.

Repositories are extended, but sometimes, they resemble a landfill. There are a lot of unnecessary, overly complicated, or incomprehensible modules. The language has some confusing features, which are difficult to understand. Some modern libs and frameworks are overloaded. My takeaway is as follows: measure is a treasure. If you know well what you are working with and how to do it best, Node,js is the tool you need. Why do we use Node js? Because there are a lot of useful features, the code is easy to understand, and the solutions can be effective. Otherwise – oh well. Anton Trofimov

Do you have an idea for a Node.js project?

My company KeenEthics is an experienced Node.js development company. In case you need a free estimate of a similar project, feel free to get in touch.

Hvis du har haft glæde af artiklen, skal du fortsætte med Node.js Inject: How to Conduct and Why to Use eller Express.js Security Tips.

PS

Et kæmpe råb til Volodia Andrushchak og Anton Trofimov, softwareudviklere med fuld stack @ KeenEthics for at hjælpe mig med artiklen.

Den originale artikel, der blev offentliggjort på KeenEthics-bloggen, kan findes her: Hvad er fordelene ved Node.JS?