Vraag Hoe te beslissen wanneer Node.js te gebruiken?


Ik ben nieuw in dit soort dingen, maar de laatste tijd heb ik veel gehoord over hoe goed Node.js is. Gezien het feit dat ik het leuk vind om met jQuery en JavaScript in het algemeen te werken, vraag ik me af hoe ik moet beslissen wanneer ik Node.js. De webapplicatie die ik in gedachten heb, is zoiets als bitly - neemt wat inhoud, archiveert het.

Van al het huiswerk dat ik de afgelopen dagen heb gedaan, heb ik de volgende informatie verkregen. Node.js

  • is een opdrachtregelprogramma dat kan worden uitgevoerd als een normale webserver en waarmee JavaScript-programma's kunnen worden uitgevoerd
  • maakt gebruik van de geweldige V8 JavaScript-engine
  • is erg goed als je meerdere dingen tegelijkertijd moet doen
  • is op gebeurtenissen gebaseerd, dus al het moois Ajax-achtige dingen kunnen gedaan worden aan de serverkant
  • laat ons code delen tussen de browser en de backend
  • laat ons praten met MySQL

Enkele van de bronnen die ik ben tegengekomen zijn:

Gezien het feit dat Node.js vrijwel out-of-the-box kan worden gebruikt Amazon's EC2 instanties, probeer ik te begrijpen voor wat voor soort problemen Node.js nodig is, in tegenstelling tot de machtige koningen die er zijn PHP, Python en Robijn. Ik begrijp dat het echt afhangt van de expertise die iemand heeft over een taal, maar mijn vraag valt meer in de algemene categorie: Wanneer moet een bepaald raamwerk worden gebruikt en voor welke soort problemen is het bijzonder geschikt?


2200
2018-02-21 05:20


oorsprong


antwoorden:


Je hebt geweldig werk gedaan door een samenvatting te geven van het geweldige aan Node.js. Mijn gevoel is dat Node.js vooral geschikt is voor applicaties waar je een blijvende verbinding van de browser naar de server wilt behouden. Met behulp van een techniek die bekend staat als "Long-polling", u kunt een toepassing schrijven die in realtime updates naar de gebruiker verzendt. Het doen van lange polling op veel van de webreuzen, zoals Ruby on Rails of Django, zou de server enorm belasten, omdat elke actieve klant één serverproces opeet. Deze situatie bedraagt ​​een Tarpit aanval. Wanneer u zoiets als Node.js gebruikt, hoeft de server geen aparte threads te onderhouden voor elke open verbinding.

Dit betekent dat je een kunt maken browser-gebaseerde chat-applicatie in Node.js dat bijna geen systeembronnen nodig heeft om een ​​groot aantal clients te bedienen. Elke keer dat je dit soort van lang-polling wilt doen, is Node.js een geweldige optie.

Het is de moeite waard te vermelden dat Ruby en Python allebei hulpmiddelen hebben om dit soort dingen te doen (eventmachine en gedraaid, respectievelijk), maar dat Node.js doet het uitzonderlijk goed, en van de grond af. JavaScript is uitzonderlijk goed gesitueerd ten opzichte van een op callback gebaseerd concurrency-model en het excelleert hier. Ook is serialiseren en deserialize met JSON native voor zowel de client als de server behoorlijk handig.

Ik kijk uit naar het lezen van andere antwoorden hier, dit is een fantastische vraag.

Het is de moeite waard om erop te wijzen dat Node.js ook ideaal is voor situaties waarin u veel code zult hergebruiken voor de kloof tussen de client en de server. De Meteoorraamwerk maakt dit echt gemakkelijk, en veel mensen suggereren dat dit de toekomst van webontwikkeling kan zijn. Ik kan uit ervaring zeggen dat het heel leuk is om code te schrijven in Meteor, en een groot deel hiervan is om minder tijd te besteden aan het bedenken hoe je je gegevens gaat herstructureren, dus de code die in de browser draait, kan gemakkelijk manipuleer het en geef het terug.

Hier is een artikel over Pyramid en long-polling, dat heel eenvoudig opgezet kan worden met een beetje hulp van gevent: TicTacToe en lang polling met Pyramid.


1359
2018-02-21 05:30



Ik geloof dat Node.js het meest geschikt is voor real-time toepassingen: online games, samenwerkingshulpmiddelen, chatrooms of alles waar wat één gebruiker (of robot? Of sensor?) Met de toepassing onmiddellijk door andere gebruikers moet worden gezien, zonder een pagina verversing.

Ik moet ook vermelden dat Socket.IO in combinatie met Node.js je real-time latency nog verder reduceert dan mogelijk is met long polling. Socket.IO zal in het slechtste geval terugvallen op lange polling en in plaats daarvan web-sockets of zelfs Flash gebruiken als deze beschikbaar zijn.

Maar ik moet ook vermelden dat zowat elke situatie waarin de code kan blokkeren vanwege threads, beter kan worden behandeld met Node.js. Of in elke situatie waarin u de toepassing nodig hebt om door gebeurtenissen te worden uitgevoerd.

Ook zei Ryan Dahl in een lezing dat ik er ooit bij was dat de benchmarks van Node.js nauw aansluiten bij Nginx voor reguliere oude HTTP-verzoeken. Dus als we met Node.js bouwen, kunnen we onze normale bronnen behoorlijk effectief bedienen en wanneer we het evenementgerelateerde spul nodig hebben, is het klaar om ermee te werken.

Bovendien is het allemaal JavaScript. Lingua Franca op de hele stapel.


410
2018-02-21 06:43



Redenen om NodeJS te gebruiken:

  • Het draait Javascript, dus je kunt het gebruiken dezelfde taal op server en client, en delen zelfs een code tussen hen (bijvoorbeeld voor formuliervalidatie, of om weergaven aan beide zijden weer te geven.)

  • De single-threaded gebeurtenisgestuurd systeem is snel zelfs bij het verwerken van veel verzoeken tegelijkertijd, en ook eenvoudig, in vergelijking met traditionele multi-threaded Java of ROR-raamwerken.

  • De steeds groter wordende pool van pakketjes toegankelijk via NPM, inclusief client- en serverzijbibliotheken / -modules, evenals opdrachtregelprogramma's voor webontwikkeling. De meeste hiervan worden gemakkelijk gehost op github, waar je soms een probleem kunt melden en het binnen enkele uren kunt vinden! Het is fijn om alles onder één dak te hebben, met gestandaardiseerde probleemrapportage en eenvoudig forken.

  • Het is de defacto standaardomgeving geworden waarin je kunt rennen Javascript-gerelateerde tools en andere webgerelateerde tools, waaronder taaklopers, minifiers, beautifiers, linters, preprocessors, bundlers en analyseprocessors.

  • Het lijkt redelijk geschikt voor prototyping, agile ontwikkeling en snelle product-iteratie.

redenen niet om NodeJS te gebruiken:

  • Het draait Javascript, die geen controle van het type compilatie heeft. Voor groot, complex cruciaal voor de veiligheid systemen, of projecten inclusief samenwerking tussen verschillende organisaties, een taal die stimuleert contractuele interfaces en biedt statische typecontrole kan u wat foutopsporingstijd besparen (en explosies) op lange termijn. (Hoewel de JVM vastzit nullGebruik alstublieft Haskell voor uw kernreactoren.)

  • Bovendien zijn veel van de pakketten in NPM een beetje rauw, en nog steeds in een snelle ontwikkeling. Sommige bibliotheken voor oudere frameworks hebben een decennium van testen en bugfixing ondergaan en zijn erg stal tegen deze tijd. Npmjs.org heeft geen mechanisme om pakketten te beoordelen, wat heeft geleid tot een wildgroei van pakketten die min of meer hetzelfde doen, waarvan een groot percentage niet langer wordt onderhouden.

  • Geneste callback hel. (Natuurlijk zijn er 20 verschillende oplossingen hieraan ...)

  • De steeds groeiende verzameling pakketten kan een NodeJS-project laten verschijnen radicaal anders van de volgende. Er is een grote verscheidenheid aan implementaties vanwege het enorme aantal beschikbare opties (bijvoorbeeld Express /Sails.js/Meteoor/Derby). Dit maakt het soms moeilijker voor een nieuwe ontwikkelaar om op een Node-project in te springen. Vergelijk dat met een rails ontwikkelaar die toetreedt tot een bestaand project: hij moet snel vertrouwd kunnen raken met de app, omdat alle Rails-apps worden aangemoedigd om een vergelijkbare structuur.

  • Omgaan met bestanden kan een beetje vervelend zijn. Dingen die triviaal zijn in andere talen, zoals het lezen van een regel uit een tekstbestand, zijn dat wel raar genoeg om te doen met Node.js dat daar een StackOverflow-vraag over is met 80+ upvotes. er is geen eenvoudige manier om één record tegelijk te lezen vanuit een CSV-bestand. Enz.

Ik hou van NodeJS, het is snel en wild en leuk, maar ik ben bang dat het weinig interesse heeft in bewijsbare correctheid. Laten we hopen dat we uiteindelijk het beste van beide werelden kunnen samenvoegen. Ik ben benieuwd om te zien wat Node in de toekomst zal vervangen ... :)


209
2017-11-25 21:47



Om het kort te maken:

Node.js is goed geschikt voor applicaties die veel gelijktijdige verbindingen hebben en elk verzoek heeft maar heel weinig CPU-cycli nodig, omdat de event-loop (met alle andere clients) tijdens het uitvoeren van een functie wordt geblokkeerd.

Een goed artikel over de gebeurtenislus in Node.js is Mixu's technische blog: de gebeurtenissenlus van node.js begrijpen.


208
2018-01-15 01:48



Ik heb een echt voorbeeld in de wereld waar ik Node.js. Het bedrijf waar ik werk kreeg een klant die een eenvoudige statische HTML-website wilde hebben. Deze website is voor het verkopen van één artikel met behulp van PayPal en de klant wilde ook een teller hebben die het aantal verkochte items toont. De verwachting is dat de klant enorm veel bezoekers op deze website heeft. Ik besloot om de teller te maken met Node.js en de Express.js kader.

De toepassing Node.js was eenvoudig. Verkrijg het aantal verkochte items van a Redis database, verhoog de teller wanneer het item wordt verkocht en dien de tellerwaarde aan gebruikers via de API.

Enkele redenen waarom ik in dit geval voor Node.js heb gekozen

  1. Het is heel licht en snel. Er zijn meer dan 200000 bezoeken op deze website geweest in drie weken en minimale serverbronnen hebben dit allemaal kunnen verwerken.
  2. De teller is heel eenvoudig te maken om in realtime te zijn.
  3. Node.js was eenvoudig te configureren.
  4. Er zijn veel modules gratis beschikbaar. Ik heb bijvoorbeeld een Node.js-module gevonden voor PayPal.

In dit geval was Node.js een geweldige keuze.


127
2018-05-31 06:34



De belangrijkste redenen om uw volgende project te starten met behulp van Node ...

  • Alle coolste kerels zitten erin ... zo moet wees leuk.
  • Je kunt aan de koeler hangen en veel Knoopavonturen hebben om over op te scheppen.
  • Je bent een cent pincher als het gaat om cloud hosting-kosten.
  • Ik heb dat gedaan met Rails
  • U haat IIS-implementaties
  • Je oude IT-baan wordt nogal saai en je zou willen dat je in een glimmende nieuwe opstartfase zat.

Wat te verwachten ...

  • Je voelt je veilig en vertrouwd met Express zonder alle serverbloatware die je nooit nodig hebt.
  • Loopt als een raket en schaalt goed.
  • Je droomt het. U hebt het geïnstalleerd. De repopulatie van het knooppuntpakket npmjs.org is het grootste ecosysteem van open-sourcebibliotheken ter wereld.
  • Je hersenen zullen de tijd verdraaien in het land van geneste callbacks ...
  • ... totdat je leert je te houden Promises.
  • Sequelize en Paspoort zijn je nieuwe API-vrienden.
  • Het debuggen van voornamelijk async-code zal umm ... interessant .
  • Tijd voor alle Noders om te beheersen getypte tekst.

Wie gebruikt het?


105
2018-06-12 13:24



Er gaat niets boven Silver Bullet. Aan alles is wat geld verbonden. Het is alsof je olieachtig voedsel eet, je gezondheid in gevaar brengt en gezond voedsel niet met kruiden zoals oliehoudend voedsel komt. Het is een individuele keuze of ze gezondheid of specerijen willen zoals in hun voedsel. Dezelfde manier waarop Node.js in een specifiek scenario wordt gebruikt. Als uw app niet in dat scenario past, moet u dit niet overwegen voor uw app-ontwikkeling. Ik zet gewoon mijn gedachten op hetzelfde:

Wanneer moet u Node.JS gebruiken

  1. Als uw server-side code zeer weinig CPU-cycli vereist. In een andere wereld doe je een niet-blokkerende bewerking en je hebt geen zwaar algoritme / taak die veel CPU-cycli verbruikt.
  2. Als je een Javascript-achtergrond hebt en comfortabel in het schrijven van Single Threaded-code net als JS aan de clientzijde.

Wanneer NIET gebruiken Node.JS

  1. Uw serververzoek is afhankelijk van een zwaar CPU-verbruik algoritme / taak.

Schaalbaarheidsoverwegingen met Node.JS

  1. Node.JS zelf gebruikt niet alle kern van het onderliggende systeem en het heeft standaard één thread, je moet zelf logica schrijven om de multi-core processor te gebruiken en multi threaded maken.

Node.JS Alternatieven

Er zijn echter andere opties om te gebruiken in plaats van Node.JS Vert.x lijkt veelbelovend en heeft veel extra functies zoals polygot en betere schaalbaarheidsoverwegingen.


60
2018-04-05 17:17



Een ander geweldig ding dat I denk Niemand heeft het gehad over Node.js is de geweldige community, het pakketbeheersysteem (npm) en het aantal modules dat bestaat dat je kunt opnemen door ze simpelweg in je package.json-bestand op te nemen.


41
2018-06-06 17:42



Mijn punt: nodejs is geweldig voor het maken van realtime systemen zoals analyses, chat-apps, apis, advertentieservers, etc. Verdorie, ik maakte mijn eerste chat-app met nodejs en socket.io onder de 2 uur en ook dat tijdens het examen week!

Bewerk

Het is alweer een aantal jaren geleden dat ik nodejs begon te gebruiken en ik heb het gebruikt bij het maken van veel verschillende dingen, waaronder statische bestandsservers, eenvoudige analyses, chat-apps en nog veel meer. Dit is mijn kijk op wanneer nodejs te gebruiken

Wanneer te gebruiken

Bij het maken van een systeem dat de nadruk legt op concurrency en snelheid.

  • Sockets alleen servers zoals chat-apps, irc apps, etc.
  • Sociale netwerken die de nadruk leggen op realtime middelen zoals geolocatie, videostream, audiostream, enz.
  • Kleine hoeveelheden gegevens snel verwerken zoals een analytische webapp.
  • Zoals het blootstellen van een REST alleen api.

Wanneer niet gebruiken

Het is een zeer veelzijdige webserver zodat je het overal kunt gebruiken, maar waarschijnlijk niet op deze plaatsen.

  • Eenvoudige blogs en statische sites.
  • Net als een statische bestandsserver.

Houd in gedachten dat ik alleen maar muggenzifterig ben. Voor statische bestandsservers is apache beter, vooral omdat het op grote schaal beschikbaar is. De nodejs-community is in de loop van de jaren groter en volwassener geworden en het is veilig om te zeggen dat nodejs bijna overal kunnen worden gebruikt als je je eigen hostingkeuze hebt.


37
2018-05-06 13:52



Het kan worden gebruikt waar

  • Toepassingen die zeer door gebeurtenissen worden aangedreven en zwaar verbonden zijn met I / O
  • Toepassingen die een groot aantal verbindingen met andere systemen verwerken
  • Real-time toepassingen (Node.js is vanaf de grond af ontworpen voor real-time en om eenvoudig te zijn gebruiken.)
  • Toepassingen die scads van informatie die van en naar andere bronnen streamen, combineren
  • Veel verkeer, schaalbare applicaties
  • Mobiele apps die met platform-API en database moeten praten, zonder veel gegevens te hoeven verwerken analytics
  • Bouw netwerkapplicaties uit
  • Toepassingen die vaak met de achterkant moeten praten

Op Mobile-front vertrouwden prime-time bedrijven op Node.js voor hun mobiele oplossingen. Bekijk waarom?

LinkedInis een prominente gebruiker. Hun volledige mobiele stack is gebouwd op Node.js. Ze gingen van het draaien van 15 servers met 15 instanties op elke fysieke machine, naar slechts vier instanties - die het dubbele verkeer aankunnen!

eBay lanceerde ql.io, een webquerytaal voor HTTP-API's, die Node.js als runtime-stack gebruikt. Ze waren in staat om een ​​regulier Ubuntu-werkstation van ontwikkelaarskwaliteit te tunen om meer dan 120.000 actieve verbindingen per proces node.js te verwerken, waarbij elke verbinding ongeveer 2 kB geheugen kost!

Walmart re-engineerde zijn mobiele app om Node.js te gebruiken en duwde de JavaScript-verwerking naar de server.

Lees meer bij: http://www.pixelatingbits.com/a-closer-look-at-mobile-app-development-with-node-js/


30
2017-07-03 07:17