Programmēšana

Pilns Node.js ietvaru ceļvedis

Node.js ir JavaScript izpildlaiks, kas veidots uz Chrome V8 JavaScript dzinēja un ir piemērots gan darbvirsmas, gan servera lietotņu ieviešanai. Node.js izmanto notikumu virzītu, nebloķējošu I / O modeli, kas padara to vieglu un efektīvu salīdzinājumā ar vītņotiem serveriem, piemēram, Apache, IIS un tipisko Java serveri.

Kamēr tu var Tīmekļa serveri vai lietotni pilnībā ieviešot vienkāršā Node.js kodā, sistēma var ievērojami samazināt uzrakstāmā koda daudzumu. Šajā ceļvedī mēs pārskata Node.js izstrādātājam pieejamo ietvaru gammu.

Mēs sākam ar minimālistiskiem Sinatra līdzīgiem ietvariem, piemēram, Express, pāriet uz vairāk domājošiem Rails līdzīgiem ietvariem, piemēram, Sails.js, pēc tam pāriet uz pilnas kaudzes ietvariem ar sastatņu un noturības bibliotēkām, piemēram, Meteor. Visbeidzot, mēs aptveram REST API ietvarus, piemēram, LoopBack, un dažas “citas” bibliotēkas mērķiem, kas neietilpst mūsu galvenajās kategorijās (piemēram, ORM, IoT un statisko vietņu ģenerēšana).

Ņemiet vērā, ka klasifikācijas nav labi nodalītas. Ir vairākas sistēmas, kuras var uzskatīt par piederīgām vairākām kategorijām.

Ņemiet vērā, ka ir vairāk Node.js MVC projektu, nekā esmu šeit uzskaitījis. Dažos gadījumos es izslēdzu projektus, kas vairs nav aktīvi. Citās vietās es izslēdzu ietvarus, kas, neskatoties uz nepārtrauktu darbību, nekad nav piesaistījuši ievērojamu izstrādātāju interesi. Mans mērķis nav pastāstīt jums par katru iespējamo projektu, bet gan palīdzēt jums noteikt projektus, kas varētu būt jūsu vērtēšanas laika vērti.

MVC ietvari Node.js

MVC (modeļa skata-kontrolieris) ir paradigma, kas paredzēta, lai tīri sadalītu darbvirsmas vai tīmekļa lietojumprogrammas funkcionalitāti. Modelis pārvalda pamatā esošo datu struktūru. Skats pārvalda to, kas tiek parādīts lietotājam. Un kontrolieris pārvalda to, kas notiek, atbildot uz lietotāju pieprasījumiem.

Rails ir pilnvērtīgs, ar “viedokļiem” domāts MVC tīmekļa ietvars, kuru 2004. gadā izveidoja Deivids Heinemeiers Hanssons (pazīstams arī kā DHH), lai Ruby sniegtu iespēju izveidot klātbūtni tīmeklī. Rails pieņem, ka jūs izmantojat datu bāzi, vērtē konvenciju par konfigurāciju un labi mērogo. Rails līdzīgie Node.js MVC ietvari ir tie, kas ir pilnībā aprīkoti.

Sinatra ir tukša pamata, mazāk vērtēta MVC balstīta tīmekļa sistēma, kuru 2007. gadā izveidoja Bleiks Mizeranijs un kuru pašlaik uztur Konstantīns Haase. Sinatra izmantoja pretēju Rails pieeju, jo tajā ir tikai tas, kas nepieciešams tīmekļa lietojumprogrammai, galvenokārt maršruti, kā ievietot savu lietotni tīmeklī, izmantojot DSL (domēna specifisko valodu) virs “plaukta” slāņa. Rack ir abstrakcijas slānis, kura pamatā ir Node.js EventEmitterun nodrošina vienkāršu veidu, kā rīkoties ar kopu atbalstu.

Sinatra līdzīgie Node.js MVC ietvari ir tie, kas sākas vienkārši un ļauj pēc vajadzības pievienot komponentus. Daudzi no Sinatra līdzīgajiem Node.js MVC ietvariem faktiski vērtē pēc konfigurācijas, tāpēc līnija starp šiem un Rails līdzīgajiem ietvariem ne vienmēr ir skaidra.

Saistītais video: Node.js padomi un ieteikumi

Šajā paskaidrojuma videoklipā uzziniet vairākas metodes, kas var uzlabot jūsu mezglu izstrādes pieredzi.

Sinatram līdzīgi MVC ietvari vietnei Node.js

Diēta

Diet rēķina sevi kā niecīgu, modulāru Node.js tīmekļa ietvaru, kas ir piemērots ātru, mērogojamu lietotņu un API izveidošanai. Diētas pamata serveris izskatās ļoti daudz kā pamata Express serveris:

// Izveidojiet lietotni

var serveris = pieprasīt (‘diēta’)

var app = serveris ()

app.listen (‘// localhost: 8000’)

// Kad tiek pieprasīts // localhost: 8000 /, atbildiet ar tekstu “Sveika pasaule!”

app.get (‘/’, funkcija ($) {

$ .end (‘Sveika pasaule!’)

  })

Diētai ir struktūra, kas atbalsta virtuālo mitināšanu bez papildu moduļiem vai konfigurācijas. Diētas servera gadījumi darbojas kā virtuālie resursdatori. Vienkārši lieciet viņiem klausīties dažādās ostās.

Maršrutēšana diētas laikā ne tikai apstrādā noteiktus ceļus ar anonīmām funkcijām, kā tas ir app.get () iepriekš, bet var izveidot arī starpprogrammatūru:

// Reģistrējiet augšupielādes ceļa starpprogrammatūras funkcijas

app.post (‘/ upload / picture’, augšupielādēt, apgriezt, saglabāt, pabeigt)

Node.js pēc noklusējuma ir divi argumenti, pieprasījumu un atbildi, veidojot HTTP (-u) serveri, izmantojot http.createServer (). Diēta apvieno šos divus objektus vienā signāla objektā, ko attēlo dolāra zīme $. Jūs varat redzēt app.get () virs parauga, ka signāla objekts ir arguments funkcijai, ar kuru rīkojas gūt pieprasījumus saknes ceļā. Diēta atbalsta arī Node.js moduļus un var tos izmantot kā starpprogrammatūru, kā parādīts app.post () piemērs iepriekš.

Izteikt

Express ir minimāla un elastīga Node.js tīmekļa lietojumprogrammu sistēma, kas nodrošina stabilu funkciju kopumu vienas, vairāku lapu un hibrīdu tīmekļa lietojumprogrammu veidošanai. Express API nodarbojas ar tīmekļa lietojumprogrammu, HTTP pieprasījumiem un atbildēm, maršrutēšanu un starpprogrammatūru. Sākot ar Express 4.x, atbalstītā Express starpprogrammatūra atrodas vairākos atsevišķos krātuvēs, kas uzskaitītas repo Connect.

Ir parādījušās vairākas Express dakšas un papildinājumi, tostarp lokomotīve, Hapi un Koa. Koa izveidoja viens no galvenajiem Express līdzautoriem.

Kaut arī Express ir vecāks un tā pēdas nospiedums ir lielāks, salīdzinot ar tā saknēm, tam tomēr ir lielāka kopiena un lielāka stabilitāte nekā jebkuram no tiem. Es pastāvīgi redzu Express, kas bez komentāriem ir iekļauts citās sistēmās un rīkos, it kā tā būtu vienīgā iespējamā tīmekļa servera izveidošana vietnē Node.js.

// izveidot ekspress lietojumprogrammu

const express = pieprasīt (‘express’)

const app = express ()

app.get (‘/’, function (req, res) {

res.send (‘Sveika pasaule!’)

})

app.listen (3000, funkcija () {

console.log (‘Lietotnes klausīšanās piemērs 3000 ostā!)

})

Gludeklis

Flatiron ir daļa no Nodejitsu Node rīku komplekta. Autori uzskata Flatiron par divām lietām: Pirmkārt, iniciatīva izveidot atsaistītu rīku kolekciju ar augstu kvalitātes un veiktspējas standartu. Otrkārt, pilnas kaudzes tīmekļa lietojumprogrammu izstrādes sistēma, kas šos rīkus apvieno, lai atvieglotu izomorfiskas un straumētu lietojumprogrammu izstrādi.

Flatiron ir Sinatra līdzīgs, jo viss, kas jums jādara, lai to izmantotu kā tīmekļa serveri, ir pieprasīt to, saīsiniet lietotni un izmantojiet http spraudņus, iestatiet dažus maršrutus un palaidiet lietotni, kā parādīts zemāk esošajā ekrānuzņēmumā.

Citi komplekta gabali papildina gludekļa funkcionalitāti. Piemēram, Brodveja atklāj vienkāršu “spraudņa” API, aizstājot vadības reģistrācijas inversiju, ko izmanto citi mezglu MVC ietvari. Union ir hibrīds buferēts / straumējošs starpprogrammatūras kodols, kas ir savietojams ar Connect atpakaļ. Savienība ir gabals, kas nodrošina spraudni http.

// izveidot dzīvokļa lietojumprogrammu

var flatiron = pieprasīt (‘flatiron’),

app = flatiron.app;

app.use (flatiron.plugins.http);

app.router.get (‘/’, function () {

this.res.writeHead (200, {‘Content-Type’: ‘text / plain’});

this.res.end (‘Sveika pasaule! \ n’);

});

app.start (8080);

Hapi

Hapi ir vienkārši lietojams, uz konfigurāciju vērsts ietvars ar iebūvētu atbalstu ievades validēšanai, kešatmiņai, autentifikācijai un citām būtiskām iespējām tīmekļa un pakalpojumu lietojumprogrammu veidošanai. Hapi ļauj izstrādātājiem koncentrēties uz atkārtoti lietojamas lietojumprogrammu loģikas rakstīšanu, izmantojot ļoti modulāru un recepšu pieeju. Hapi izstrādāja Walmart Labs, un tā ir laba izvēle lielām komandām un lieliem projektiem.

Hapi sākotnēji tika uzbūvēts virs Express, bet vēlāk tika pārveidots, lai tas būtu atsevišķs. Kā izteicās tās veidotāji, Hapi tika būvēts ar domu, ka konfigurācija ir labāka par kodu un biznesa loģika ir jāizolē no transporta slāņa. Zemāk esošajā piemērā ievērojiet, cik kodā parādās skaidra un tīra serveru maršrutu konfigurācija.

// izveidot hapi serveri

var Hapi = pieprasīt (‘hapi’);

var serveris = jauns Hapi.Server (3000);

server.route ([

  {

metode: “GET”,

ceļš: ‘/ api / items’,

apdarinātājs: funkcija (pieprasījums, atbilde) {

atbilde (‘Get item id’);

    }

  },

  {

metode: “GET”,

ceļš: ‘/ api / items / {id}’,

apdarinātājs: funkcija (pieprasījums, atbilde) {

atbilde (‘Get item id:’ + request.params.id);

    }

  },

Koa

Koa ir jaunāka tīmekļa sistēma, ko izstrādājusi komanda, kas darbojas aiz Express, bet neatkarīga no Express koda. Koa mērķis ir būt mazāks, izteiksmīgāks un stabilāks pamats tīmekļa lietojumprogrammām un API. Koa starpprogrammatūrai izmanto ES6 ģeneratorus, nevis Node.js atzvanus. Šī ir Koa lietojumprogramma “Hello, World”, izmantojot ģeneratoru, kas: raža nākamā nodot vadību nākamajam ģeneratoram:

var koa = pieprasīt (‘koa’);

var app = koa ();

// x-response-time

app.use (funkcija * (nākamā) {

var sākt = jauns datums;

raža nākamā;

var ms = jauns datums - sākums;

this.set (‘X-Response-Time’, ms + ‘ms’);

});

// atbilde

app.use (funkcija * () {

this.body = ‘Sveika pasaule’;

});

app.listen (3000);

Ir atšķirība starp starpprogrammatūras ģeneratoriem, kurus izmanto Koa, un atzvaniem, ko izmanto Express un Connect. Connect ieviešana vienkārši kontrolē funkcijas, izmantojot virkni funkciju, līdz viena atgriežas, bet Koa dod “lejup pa straumi”, tad vadība plūst atpakaļ “augšpus straumes”.

Iepriekš minētajā piemērā x-response-time “iesaiņo” atbildes ģeneratoru ar raža nākamā paziņojums, kas iezīmē zvanu. Ienākšana ir elastīgāka nekā skaidra funkciju izsaukšana, jo tā ļauj secībā ievietot citu ģeneratoru, piemēram, tīmekļa reģistrētāju starp taimeri un atbildi.

Lokomotīve

Lokomotīve ir Node.js tīmekļa sistēma, kas atbalsta MVC modeļus, RESTful maršrutus un vienošanos par konfigurāciju (piemēram, sliedes), vienlaikus nevainojami integrējoties ar jebkuru datu bāzi un veidņu motoru. Lokomotīve balstās uz Express un Connect.

Lokomotīve papildina Express daži Rubīnam uz sliedēm līdzīga struktūra, kuru varat redzēt attēlā zemāk. Lokomotīvju skati bieži ir iegulti JavaScript (html.ejs) faili, kā parādīts šeit, taču lokomotīve atbalsta arī Jade un citus Express atbilstošos veidņu dzinējus. REST funkcionalitāti kontrolē maršruti, kā tas parasti notiek uz Express bāzes serveriem. Izmantojot lokomotīvi, varat izmantot jebkuru vēlamo datu bāzes un ORM slāni. Ceļvedis parāda MongoDB izmantošanu kopā ar Mongoose, kā arī Passport izmantošanu lietotāja autentifikācijai.

Total.js

Total.js ir pilna servera servera Node.js ietvars, kas rakstīts tīrā JavaScript valodā, līdzīgi kā PHP Laravel vai Python's Django. Platforma Total.js ir bibliotēku, paku un pabeigtu produktu kolekcija, kas izveidota ar Total.js.

Total.js ir vairāk līdzīgs Sinatra nekā Rails, jo tas ir modulārs un tāpēc, ka tas ir agnostiķis attiecībā uz IDE, datu bāzēm un klienta puses ietvariem. Minimālu Total.js tīmekļa serveri var ieviest ar šādu kodu:

pieprasīt (‘total.js’);

F.route (‘/’, funkcija () {

this.plain (‘total.js ir tiešām labs!’);

});

F.http (‘atkļūdošana’);

Saistītais video: Node.js padomi un ieteikumi

Sliedēm līdzīgi MVC ietvari Node.js

Adonis

Adonis ir MVC ietvars Node.js, kas balstīts uz praktiskiem lietošanas gadījumiem. Tas atbalsta atkarības injicēšanu un tam ir zems IoC (vadības inversijas) konteiners, kas palīdzēs jums atrisināt un izsmiet atkarības. Adonis nodrošina CLI rīku, lai sastādītu un ģenerētu projektu ar visām nepieciešamajām atkarībām.

Starp Adonis iezīmēm ir ORM (Lucid) un aktīvā ieraksta noformējuma ieviešana; autentifikācijas slānis kopā ar sesijām, JWT, pamata autentifikāciju un personīgajiem API marķieriem; un kontrolieru ieviešana kā ES2015 klases. ES2015 ģeneratori novērš netīros atzvanīšanas gadījumus, kas izplatīti vecākos JavaScript. Šis kods ienes visus lietotājus no datu bāzes un atdod tos kā JSON:

const Route = use (‘Maršruts’)

const Lietotājs = use (‘Lietotne / Modelis / Lietotājs’)

Route.get (‘/’, funkcija * (pieprasījums, atbilde) {

const lietotāji = ienesīgums User.all ()

response.json (lietotāji)

})

SavienojumsJS

CompoundJS formula ir Express + struktūra + paplašinājumi. Šeit struktūra ir direktoriju standarta izkārtojums, un paplašinājumi ir Node.js moduļi, kas struktūrai pievieno funkcionalitāti. Mērķis ir nodrošināt acīmredzamu un labi organizētu saskarni ar Express saderīgu lietojumprogrammu izstrādei. Tas nozīmē, ka viss, kas darbojas ar Express, darbosies arī ar CompoundJS.

No CLI varat ģenerēt skeleta CompoundJS lietotnes:

npm instalēt savienojumu -g

saliktais inic todo-list-app

cd todo-list-app && npm instalēt

mezgls.

Vietne pēc noklusējuma klausās vietni // localhost: 3000 /. Jūs varat turpināt pievienot sastatnes, pamatojoties uz modeļiem ar savienojums rada sastatnes komandu.

Gedijs

Geddy ietvars ievieš MVC for Node.js ļoti Rails līdzīgā veidā, pat līdz direktoriju struktūrai, spējai lietotnes kontekstā atvērt REPL konsoli un ģeneratora skriptu, kuru varat izmantot, lai izveidotu lietotnes, resursus sastatnes vai pliki modeļi un kontrolieri. Sastatnes pēc izvēles var ģenerēt veidnes EJS, Jade, Stūres, Ūsas un Swig.

The geddy jake komanda var palaist dažādus Jake (JavaScript veidot) uzdevumi pašreizējās lietotnes kontekstā ar pilnīgu piekļuvi modeļiem. Tas ir noderīgi papildu uzdevumiem, piemēram, testēšanai, izstrādes datu bāzes inicializēšanai un maršrutu uzskaitīšanai.

Krakena

Kraken, PayPal atvērtā koda projekts, ir drošs un pielāgojams slānis, kas paplašina Express, nodrošinot struktūru un konvencijas, līdzīgi kā lokomotīve. Lai gan Kraken ir tās ietvara galvenais pīlārs, šādus moduļus var izmantot arī neatkarīgi: Lusca (drošība), Kappa (NPM starpniekserveris), Makara (LinkedIn Dust.js i18N) un Adaro (LinkedIn Dust.js veidne).

$config[zx-auto] not found$config[zx-overlay] not found