Sunteți un dezvoltator PHP. Vă înțeleg. La fel și eu. Călătoria mea către PHP nu a urmat drumul normal pe care majoritatea dezvoltatorilor PHP îl parcurg în căutarea limbajului de programare perfect. Am început inițial ca dezvoltator Java și am petrecut aproximativ 10 ani trăind pe acel tărâm. Am fost unul dintre acei dezvoltatori Java care, atunci când PHP era introdus într-o conversație, începeam să scot pe gură lucruri precum întreprindere, scalabilitate și alte prostii.

Am început să lucrez la un proiect open source care avea nevoie de un front-end web social acum aproximativ 5 ani, iar echipa trebuia să aleagă un limbaj de programare pentru site. Am explorat Java și majoritatea celorlalte limbaje, dar am optat pentru PHP din mai multe motive. A fost greu să-mi înghit mândria și să încep să programez în PHP, dar ceea ce s-a întâmplat în timpul acelui proiect a fost aproape un miracol. M-am îndrăgostit de acest limbaj și am început să îl folosesc pentru cât mai multe proiecte pe care le puteam găsi, lăsând în același timp rădăcinile mele Java în paragină. PHP mi-a fost de mare folos în ultimii 5 ani, dar eram încă în căutarea acelui sfânt graal al unui limbaj de programare în care să dezvolți rapid, care să fie susținut de întreprinderi, care să fie performant și scalabil, oferind în același timp o comunitate puternică de dezvoltatori. Cred că Node.js satisface toate cerințele mele, fiind în același timp un limbaj care crește și evoluează rapid.

Primul lucru pe care trebuie să îl înțelegeți este că Node.js nu este doar pentru dezvoltatorii hipsteri sau pentru cei care adoptă timpuriu. Acesta este folosit de unele dintre cele mai bine frecventate site-uri web de pe internet în prezent și continuă să cucerească inimile și mințile dezvoltatorilor. Este cu adevărat la un punct în care puteți avea încredere în el chiar și pentru cele mai complicate sisteme.

Node.js este JavaScript##

Dacă vă gândiți că trebuie să învățați un limbaj cu totul nou pentru a fi productivi cu Node.js, probabil că vă înșelați. Majoritatea dezvoltatorilor sunt deja familiarizați cu JavaScript și acesta este limbajul și semantica cu care veți lucra atunci când codificați în Node.js. De fapt, un articol recent publicat de Red Monk, care încearcă să dea sens proiectelor github pentru a determina cele mai populare limbaje, are ca rege JavaScript. Primele trei limbaje sunt următoarele:

  • JavaScript
  • Java
  • PHP

Datorită popularității lui JavaScript și adoptării sale pe scară largă în industria noastră, dacă nu sunteți deja familiarizat cu el, probabil că este timpul să vă aplecați și să începeți să îl învățați.

Dacă Node.js folosește doar JavaScript, ce este mai exact?##

În câteva cuvinte, Node.js este o platformă pentru activități de partea serverului. Folosește limbajul de programare Javascript și are o multitudine de biblioteci disponibile ca module npm. Vă puteți gândi la aceste module npm ca la dependențe de biblioteci care pot fi satisfăcute cu Composer dacă veniți de pe tărâmul PHP. De fapt, sistemul implicit de gestionare a dependențelor pentru PHP (Composer) a fost inspirat de Node.js, conform site-ului oficial. Sunt șanse ca, dacă aveți nevoie de un pic de funcționalitate și nu aveți chef să scrieți singur tot codul, există un modul npm disponibil care oferă deja caracteristicile pe care le căutați.

Aplicațiile Node sunt în mod normal implementate atunci când trebuie să maximizați eficiența prin utilizarea I/O fără blocaj și a evenimentelor asincrone. Un gotcha pe care dezvoltatorii PHP trebuie să îl cunoască este că aplicațiile Node.js rulează într-un singur fir. Cu toate acestea, codul Node.js din backend utilizează mai multe fire de execuție pentru operațiuni precum accesul la rețea și la fișiere. Având în vedere acest lucru, Node este perfect pentru aplicațiile în care se dorește o experiență aproape în timp real.

Începem cu un proiect de probă##

Pentru restul acestei postări de pe blog, vă voi arăta cum să vă familiarizați cu Node.js venind de la un fundal PHP. Exemplul de aplicație pe care îl vom scrie este un serviciu backend simplu care va furniza locația fiecărui magazin Walmart. Am ales Walmart pentru acest exemplu pentru că, pur și simplu, este Sfântul Graal al tuturor marilor magazine. Dacă Walmart nu o are, nu aveți nevoie de ea.

Până la sfârșitul acestui articol de blog, veți vedea cât de rapid și de ușor este să creați un API bazat pe REST folosind Node.js care este alimentat de populara bază de date MongoDB. Am ales acest exemplu bazat pe REST deoarece crearea unui API backend a devenit rapid un caz de utilizare comună în majoritatea aplicațiilor moderne.

Am plănuit inițial să creez aceeași aplicație atât în PHP, cât și în Node.js pentru a vă ajuta să ușurați tranziția, dar pentru a acoperi toate cadrele și modalitățile diferite de creare a serviciilor bazate pe REST în PHP, ar justifica o carte întreagă și pur și simplu nu poate fi acoperită într-o singură postare pe blog. M-am gândit apoi să folosesc doar cadrul Laravel, deoarece acesta continuă să crească în popularitate. Cu toate acestea, tot aș ajunge doar la un sfert dintre dezvoltatorii PHP. Personal, cadrul meu preferat este CodeIgniter, dar pierde rapid teren și acum reprezintă doar mai puțin de 8% din populația de dezvoltatori PHP. Sitepoint a publicat recent un articol care discută exact acest lucru și oferă următorul grafic care descrie cadrele care arată cele mai promițătoare pentru 2014.

Datorită diferențelor uriașe în ceea ce privește modul de configurare a conexiunilor la baze de date și de creare a serviciilor REST pentru fiecare cadru, voi presupune că știți cum să faceți acest lucru pentru cadrul dvs. în PHP și, în schimb, mă voi concentra doar pe Node.js code.

Crearea aplicației noastre Node.js##

Pentru restul acestei postări, vom crea aplicația de localizare Walmart folosind cadrul LoopBack API de la StrongLoop. Ca un bonus suplimentar, vă voi ghida prin instalarea Node.js pe OSX. Așa că luați o ceașcă de cafea, stați jos, relaxați-vă și haideți să trecem la treabă.

Pasul 1: Instalarea Node.js##

Cel mai simplu mod de a instala Node.js este prin intermediul unuia dintre pachetele binare disponibile pentru majoritatea sistemelor de operare. Îndreptați-vă browserul către următorul URL și descărcați-l pe cel corect pentru sistemul dvs. de operare:

http://nodejs.org/download/

După ce această pagină se încarcă, ar trebui să vedeți următoarele:

Dacă folosiți Mac OSX, faceți clic pe fișierul universal .pkg. Acest lucru va salva programul de instalare pe computerul dvs. local. După ce fișierul a fost descărcat, porniți programul de instalare făcând dublu clic pe fișierul .pkg care a fost descărcat și vi se va prezenta dialogul de instalare:

Completați procesul de instalare utilizând toate valorile implicite și, în final, faceți clic pe butonul de închidere pentru a ieși din program după ce instalarea a fost efectuată cu succes. Destul de ușor, nu-i așa?

Pasul 2: Instalarea LoopBack cu NPM

Acum că avem Node.js instalat pe sistemul nostru local, dorim să instalăm pachetele LoopBack care este furnizat de StrongLoop. LoopBack este un cadru API open source care oferă funcționalități care vă vor face viața mai ușoară pe măsură ce începeți să învățați cum să scrieți și să implementați software scris în Node.js.

Pentru a instala LoopBack, vom folosi comanda npm care face parte din distribuția Node.js de bază. NPM este managerul oficial de pachete pentru instalarea bibliotecilor sau modulelor de care depind aplicațiile dumneavoastră. Având în vedere că această postare este scrisă pentru dezvoltatorii PHP, o modalitate ușoară de a ne gândi la modulele NPM este să le raportăm la Composer. Utilizând sistemul de dependențe Composer, dezvoltatorii au posibilitatea de a specifica dependențele în fișierul composer.json. Odată ce pachetele au fost definite în fișierul composer.json, un dezvoltator PHP trebuie pur și simplu să emită comanda install, care ar trebui să fie similară cu următoarea:

$ php composer.phar install

Moduli NPM funcționează în același mod și utilizează fișierul package.json pentru a vă permite să specificați dependențele pentru o anumită aplicație. De asemenea, puteți instala dependențele din linia de comandă pentru a le face disponibile pe sistemul dvs. local. Nu vă faceți griji dacă nu înțelegeți încă acest lucru, deoarece vom aborda fișierul package.json mai în detaliu într-un pas ulterior.

Pentru a instala LoopBack, putem emite o singură comandă care va descărca și instala toate dependențele de care avem nevoie pentru pachet. Deschideți fereastra terminalului și emiteți următoarea comandă:

$ npm install -g strongloop

Nota: Este posibil să trebuiască să folosiți sudo, în funcție de instalația dumneavoastră

Ce s-a întâmplat? I-am spus lui npm că dorim să instalăm pachetul strongloop, furnizând în același timp și opțiunea -g. Opțiunea -g face ca pachetul să fie disponibil ca pachet global pentru ca oricine din sistem să îl folosească și este disponibil pentru toate aplicațiile. După ce executați comanda de mai sus, NPM va descărca pachetul, precum și toate dependențele care sunt necesare. În funcție de viteza sistemului dumneavoastră, acest lucru poate dura câteva minute pentru a se finaliza.

Pasul 3: Crearea aplicației noastre##

Crearea unei aplicații folosind LoopBack API este foarte ușoară și directă. Pur și simplu deschideți fereastra terminalului și emiteți următoarea comandă pentru a crea o nouă aplicație numită locatewalmart.

$ slc loopback _-----_ | | .--------------------------. |--(o)--| | Let's create a LoopBack | `---------´ | application! | ( _´U`_ ) '--------------------------' /___A___\ | ~ | __'.___.'__ ´ ` |° ´ Y ` Enter a directory name where to create the project: locatewalmart create locatewalmart/ info change the working directory to locatewalmart

Utilitarul slc va crea acum un nou proiect bazat pe LoopBack numit locatewalmart și va configura proiectul. Când ni se va cere numele aplicației, putem păstra valoarea implicită.

What's the name of your application? locatewalmart

După rularea comenzii de mai sus, se va crea un nou director pentru proiect pentru aplicația dvs. Schimbați în directorul aplicației cu comanda cd:

$ cd locatewalmart

Acum că avem aplicația noastră creată, dorim să adăugăm suport pentru MongoDB ca sursă de date pentru loopback.

Pasul 4: Definirea sursei noastre de date##

Pentru a comunica cu MongoDB, trebuie să adăugăm o sursă de date aplicației noastre. Facem acest lucru rulând:

$ slc loopback:datasource mymongo Enter the data-source name: mymongo Select the connector for mymongo:PostgreSQL (supported by StrongLoop)Oracle (supported by StrongLoop)Microsoft SQL (supported by StrongLoop)❯ MongoDB (supported by StrongLoop)SOAP webservices (supported by StrongLoop)REST services (supported by StrongLoop)Neo4j (provided by community)(Move up and down to reveal more choices)

Etapa 5: Indicarea sursei de date reale##

Pentru a comunica cu MongoDB, trebuie să indicăm sursa de date către instanța MongoDB reală. LoopBack definește toată configurația sursei de date în fișierul datasource.json care se află în directorul root/server al aplicațiilor dumneavoastră. Deschideți acest fișier și adăugați o sursă de date pentru MongoDB, așa cum se arată în următorul cod:

{ "db": { "name": "db", "connector": "memory" }, "mymongo": { "name": "mymongo", "connector": "mongodb" "url": "mongodb://localhost:27017/locatewalmart" }}

Nota: Asigurați-vă că furnizați URL-ul de conectare corect pentru baza de date MongoDB. Pentru acest exemplu, am o bază de date creată local numită locatewalmart pe care vreau să o folosesc pentru sursa mea de date.

Acum că avem baza noastră de date definită, există câteva lucruri suplimentare pe care trebuie să le facem. În primul rând, trebuie să specificăm că aplicațiile noastre depind de pachetul loopback-connector-mongodb. Pentru a specifica o dependență, modificați fișierul package.json, ceea ce este similar cu editarea fișierului composer.json în PHP. Deschideți fișierul package.json care se află în directorul rădăcină al aplicației dvs. și adăugați loopback-connector-mongodb la secțiunea de dependență. După aceea, puteți rula npm install.

Alternativ, puteți rula pur și simplu:

$ npm install loopback-connector-mongodb --save

Aceasta va actualiza automat fișierul package.json. Secțiunea ar trebui să arate după cum urmează:

"dependencies": { "compression": "^1.0.3", "errorhandler": "^1.1.1", "loopback": "^2.0.0", "loopback-boot": "^2.0.0", "loopback-connector-mongodb": "^1.4.1", "loopback-datasource-juggler": "^2.0.0", "serve-favicon": "^2.0.1" }

Pasul 6: Importul datelor în MongoDB##

Acum că avem sursa noastră de date configurată, trebuie să încărcăm setul de date în baza noastră de date MongoDB.

Primul lucru pe care dorim să îl facem este să descărcăm un fișier JSON care conține toate datele pe care dorim să le returnăm. Puteți prelua acest fișier la următorul URL:

https://dl.dropboxusercontent.com/u/72466829/walmart.json

După ce ați descărcat setul de date, pur și simplu importați-l în baza de date folosind comanda mongoimport, așa cum se arată mai jos:

$ mongoimport --jsonArray -d locatewalmart -c store --type json --file walmart.json -h yourMongoHost --port yourMongoPort -u yourMongoUsername -p yourMongoPassword

Ar trebui să vedeți următoarele rezultate:

connected to: 127.0.0.12014-08-17T13:07:26.301-0400 check 9 31762014-08-17T13:07:26.305-0400 imported 3176 objects

Pasul 7: Crearea modelului nostru Store##

Un model poate fi gândit în aceiași termeni în care vă gândiți la modele în PHP land dacă folosiți un cadru MVC. Este o reprezentare a unui Obiect care, în acest caz, este un magazin Walmart. LoopBack oferă o modalitate convenabilă de a crea obiecte model prin utilizarea liniei de comandă. Deschideți fereastra terminalului, mergeți la dosarul proiectului și emiteți următoarea comandă:

$ slc loopback:model

Aceasta va începe o sesiune interactivă în care puteți defini modelul dumneavoastră. Primul lucru care vă va fi cerut este sursa de date cu care doriți să asociați modelul. Noi vom selecta sursa de date mymongo pe care tocmai am creat-o mai devreme. Apoi se va cere numele plural pentru model. Să-l folosim pe cel implicit (stores) și să apăsăm tasta enter.

 Enter the model name: store Select the data-source to attach store to:db (memory)❯ mymongo (mongodb) Expose store via the REST API? Yes Custom plural form (used to build REST URL):

După ce apăsați tasta enter, vi se va cere să specificați proprietățile modelului store. Vă puteți gândi la acestea ca la var(uri) pe care le definiți pe o clasă în PHP.

Enter an empty property name when done. Property name:

Proprietățile pe care dorim să le adăugăm sunt tipul de magazin, data deschiderii, latitudinea și longitudinea.

 Property name: opendate invoke loopback:property

După ce ați apăsat tasta enter, vi se va cere să furnizați tipul de date pentru fiecare proprietate specificată. Primul element va fi opendate și dorim să selectăm că acesta este de tip date. Selectați data și apăsați tasta enter.

 Property type: string number boolean object array❯ date buffer geopoint (other)

Apoi veți fi întrebat dacă doriți ca această proprietate să fie una obligatorie pentru validarea schemei. Vom introduce „da”.

 Required? (y/N) : y

Apoi vi se va cere tipul de date pentru fiecare proprietate rămasă. Furnizați următoarele răspunsuri:

 Property name: type_store invoke loopback:property Property type: (Use arrow keys)❯ string number boolean object array date buffer geopoint (other) Required? (y/N) : yLet's add another store property.Enter an empty property name when done. Property name: latitude invoke loopback:property Property type: (Use arrow keys)❯ string number boolean object array date buffer geopoint (other) Required? (y/N) : yLet's add another store property.Enter an empty property name when done. Property name: longitude invoke loopback:property Property type: (Use arrow keys)❯ string number boolean object array date buffer geopoint (other) Required? (y/N) : y

Tastați „yes” și apăsați tasta enter.

Felicitări! tocmai ați creat primul dvs. obiect model folosind LoopBack împreună cu Node.js. Pentru a vedea ce a fost creat de fapt sub acoperire, deschideți fișierul store.json care se află în directorul root/common/models din directorul aplicației dumneavoastră. Găsiți intrarea stores care va arăta astfel:

{ "name": "store", "base": "PersistedModel", "properties": { "opendate": { "type": "date", "required": true }, "type_store": { "type": "string", "required": true }, "latitude": { "type": "string", "required": true }, "longitude": { "type": "string", "required": true } }, "validations": , "relations": {}, "acls": , "methods": }

Cum puteți vedea, avem un model creat și proprietățile pe care le-am definit sunt atribuite modelului store. Câmpul public specifică faptul că dorim să expunem acest model lumii prin intermediul unui serviciu web REST.

Corelarea modelului cu sursa de date este definită în model-config.json sub folderul rădăcină/server al aplicației. Câmpul datasource specifică sursa de date pe care acest model o va folosi pentru operațiile CRUD.

"store": { "dataSource": "mymongo", "public": true }

Pasul 8: Testați API-ul bazat pe REST##

Încercați să ghiciți ce? Tocmai ați creat primul dvs. serviciu web bazat pe REST folosind Node.js. Nu a fost atât de rău, nu-i așa? Haideți să o verificăm îndreptând browserul nostru către aplicația pe care tocmai am creat-o. Puteți face acest lucru accesând următoarea adresă URL:

http://0.0.0.0:3000/api/stores/

Vă va fi prezentată o reprezentare JSON a tuturor magazinelor Walmart pe care le-am importat în baza de date, așa cum se arată în următoarea imagine:

Utilizând StrongLoop Explorer##

Ei bine, asta este grozav. Avem un punct final REST care va returna toate magazinele Walmart din baza de date, dar lucrurile par să fie încă puțin deficitare, deoarece nu avem o interfață de gestionare pentru a lucra cu datele sau pentru a verifica dacă toate operațiunile CRUD funcționează. Din fericire, StrongLoop oferă un browser convenabil care vă va permite să explorați toate punctele finale pe care le are aplicația dumneavoastră. Pentru a testa acest lucru, deschideți browserul și accesați următorul URL:

http://0.0.0.0:3000/explorer/

După ce pagina Explorer s-a încărcat, extindeți stores API pentru a vedea toate operațiile disponibile care sunt permise asupra obiectului model. Acest lucru este prezentat în următoarea imagine:

Ca exemplu de ceea ce puteți face cu Explorer, extindeți API /stores/findOne și faceți clic pe legătura Try it out! care va interoga baza de date și va returna o înregistrare, așa cum se arată în imaginea următoare:

Mai departe, adăugând o reprezentare pe hartă##

Frumos, am creat un endpoint bazat pe REST care va returna o listă cu toate magazinele Walmart din baza noastră de date. Pentru a ilustra și mai mult viteza cu care se pot dezvolta aplicații complete cu StrongLoop, haideți să construim un front-end responsiv care conține o hartă cu ace pentru fiecare magazin Walmart.

Pasul 1: Creați directorul public##

În mod implicit, așa cum este specificat în fișierul app.js al proiectului, orice fișier din directorul public situat în directorul rădăcină al aplicației va fi servit solicitantului. Cu toate acestea, este posibil ca acest director să nu existe în mod implicit, așa că trebuie să îl creăm. Deschideți terminalul și treceți în directorul rădăcină al aplicației dvs. și lansați următoarea comandă:

$ mkdir public

Pasul 2: Creați harta responsivă##

Următorul lucru pe care trebuie să-l facem este să creăm o reprezentare frumoasă a datelor. Din moment ce avem latitudinea și longitudinea fiecărui magazin, ar fi grozav să exprimăm acest conținut cu ajutorul unei hărți pe care utilizatorul o poate glisa, mări și micșora, etc. Această sarcină este de fapt mult mai ușoară decât v-ați aștepta dacă profităm de unele biblioteci existente. La finalul creării acestei vizualizări responsive, rezultatul va arăta în felul următor:

În plus, utilizatorul va putea mări la un nivel foarte detaliat al hărții pentru a vedea cel mai apropiat Walmart, așa cum se arată în următoarea imagine:

Codul pentru vizualizarea web a aplicației profită de proprietățile de longitudine și latitudine pe care le-am definit pe obiectul nostru model și le-am importat în baza de date. De asemenea, vom folosi populara bibliotecă Leaflet pentru crearea hărții și plasarea pinilor, sau a markerilor, pe hartă.

Pentru a crea această hartă, creați un nou fișier în directorul public numit locatewalmart.html și adăugați următorul cod JavaScript:

<!doctype html><html lang="en"><head> <title>Walmart Stores</title> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.css" /><!--> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.ie.css" /><!--><script src="https://code.jquery.com/jquery-2.0.0.min.js"></script><link href='http://fonts.googleapis.com/css?family=oswald' rel='stylesheet' type='text/css'><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /><style type="text/css">body { padding: 0; margin: 0;}html, body, #map { height: 100%; font-family: 'oswald';}.leaflet-container .leaflet-control-zoom { margin-left: 13px; margin-top: 70px;}#map { z-index: 1;}#title { z-index: 2; position: absolute; left: 10px; }</style></head><body><h1>Walmart Stores</h1><div></div><script src="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.js"></script><script>center = new L.LatLng(39.83, -98.58);zoom = 5;var map = L.map('map').setView(center, zoom);var markerLayerGroup = L.layerGroup().addTo(map);L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {maxZoom: 18,attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'}).addTo(map);function getPins(e){url = "http://0.0.0.0:3000/api/stores";$.get(url, pinTheMap, "json")}function pinTheMap(data){//clear the current pinsmap.removeLayer(markerLayerGroup);//add the new pinsvar markerArray = ;var lastNumber = 0;for (var i = 0; i < data.length; i++){store = data;if(store.latitude.length > 0 && store.longitude.length>0) {markerArray.push(L.marker());}}markerLayerGroup = L.layerGroup(markerArray).addTo(map);}map.whenReady(getPins)</script></body></html>

După cum puteți vedea, codul este doar HTML și JavaScript standard. Partea interesantă este funcția getPins(e), unde facem un apel REST la API-ul pe care l-am creat anterior în această postare pe blog. Apoi iterăm peste fiecare magazin și creăm un pin având în vedere latitudinea și longitudinea fiecărui magazin. Destul de ingenios, nu-i așa?

Concluzie##

În această postare pe blog v-am arătat cum să creați un serviciu web bazat pe REST care returnează o listă de magazine Walmart din Statele Unite. După ce am creat serviciul web folosind Loopback, am adăugat o reprezentare front-end a datelor. Cu foarte puțină muncă, am reușit să dezvoltăm o aplicație complet funcțională mult mai repede decât ar putea cineva să o facă cu limbajul pe care îl alege în prezent. Am discutat, de asemenea, despre unele dintre asemănările dintre Node.js și PHP. Deși consider în continuare că PHP este un limbaj grozav, personal am constatat că Node.js este un următor limbaj grozav de învățat, având în vedere ecosistemul bogat de biblioteci și viteza cu care pot crea aplicații.

Am inclus un tabel rapid la care vă puteți referi atunci când comparați Node.js cu PHP.

Caracteristică

PHP

Node.js

IDE excelent

Da, alegere multiplă cu IntelliJ, Zend Studio, Netbeans, etc

Da, alegeri multiple cu Eclipse, Visual Studio, Codenvy, etc.

Gestionarea dependențelor

Composer, PEAR

NPM

Enterprise Ready

Da

Da

Ecosistem mare de biblioteci

Da, dar uneori greu de găsit

Da

Cadre comune

CodeIgniter, CakePHP, Laravel, etc.

Express, Meteor, etc

Suport pentru baze de date

Da

Da

Non-blocaj IO

Nu

Da

Testare cadre

Da

Da

Real-…aplicații în timp real

Da, cu procese suplimentare, cum ar fi Apache WebSocket etc.

Da

Server web încorporat

Nu, majoritatea oamenilor îl folosesc împreună cu Apache

Da

  • Pregătit să dezvolte API-uri în Node.js și să le conectați la datele dumneavoastră? Consultați cadrul LoopBack din Node.js. L-am făcut ușor de început, fie local, fie pe cloud-ul dvs. preferat, cu o simplă instalare npm.

Lasă un răspuns

Adresa ta de email nu va fi publicată.