Programiranje

Popoln vodnik po ogrodjih Node.js

Node.js je izvajalno okolje JavaScript, zgrajeno na Chromovem mehanizmu JavaScript V8, ki je primeren za izvajanje tako namiznih kot strežniških aplikacij. Node.js uporablja vhodno / izhodni model, ki ne temelji na dogodkih, in je lahek ter učinkovit v primerjavi z navojnimi strežniki, kot so Apache, IIS in tipični Java strežnik.

Medtem ko ti lahko namestite spletni strežnik ali aplikacijo v celoti v navadno kodo Node.js, ogrodje lahko močno zmanjša količino kode, ki jo morate napisati. V tem priročniku raziskujemo obseg okvirov, ki so na voljo razvijalcu Node.js.

Začnemo z minimalističnimi ogrodji, podobnimi Sinatri, kot je Express, preidemo na bolj samozavestne okvire, podobne Rails, kot je Sails.js, nato pa s polnimi sklopi z odri in trajnimi knjižnicami, kot je Meteor. Nazadnje pokrivamo okvire REST API, kot je LoopBack, in nekaj "drugih" knjižnic za namene, ki ne spadajo v naše glavne kategorije (kot so ORM, IoT in generiranje statičnih spletnih mest).

Upoštevajte, da klasifikacije niso dobro ločene. Obstaja več okvirov, za katere bi lahko šteli, da spadajo v več kategorij.

Upoštevajte, da je več projektov Node.js MVC, kot sem jih navedel tukaj. V nekaterih primerih sem odpravil projekte, ki niso več aktivni. V drugih sem odpravil okvire, ki kljub nenehnim dejavnostim nikoli niso pritegnili večjega zanimanja razvijalcev. Moj cilj ni, da vam povem o vseh možnih projektih, temveč vam pomagam prepoznati projekte, ki bi bili vredni vašega časa za ocenjevanje.

Okvirji MVC za Node.js

MVC (model-view-controller) je paradigma, namenjena čistemu razdelitvi funkcionalnosti namizja ali spletne aplikacije. Model upravlja osnovno strukturo podatkov. Pogled upravlja tisto, kar je uporabniku prikazano. In krmilnik upravlja, kaj se zgodi kot odziv na uporabniške zahteve.

Rails je popoln, "samozavesten" spletni okvir, ki temelji na MVC in ga je leta 2004 ustvaril David Heinemeier Hansson (aka DHH), da bi Rubyju omogočil vzpostavitev spletne prisotnosti. Rails predpostavlja, da uporabljate bazo podatkov, dogovor o vrednostih glede konfiguracije in dobro meri. Rails-like Node.js MVC-ovi so tisti, ki so polno predstavljeni.

Sinatra je preprost, manj razmišljujoč spletni okvir, ki temelji na MVC in ga je leta 2007 ustvaril Blake Mizerany, trenutno pa ga vzdržuje Konstantin Haase. Sinatra je uporabil nasproten pristop Rails, saj ima le tisto, kar potrebujete za spletno aplikacijo, v bistvu poti, s katerimi aplikacijo postavite v splet z DSL (jezikom, določenim za domeno) prek "rack" plasti. Rack je abstrakcijski sloj, ki temelji na Node.js EventEmitterin ponuja preprost način reševanja podpore za grozde.

Sinatra podobni ogrodji Node.js MVC se začnejo preprosto in vam omogočajo dodajanje komponent po potrebi. Številni ogrodji MVC, podobni Sinatri, dejansko uporabljajo dogovor glede vrednosti glede konfiguracije, zato meja med njimi in ogrodji, podobnimi Rails, ni vedno jasna.

Povezani video: Node.js nasveti in triki

V tem obrazložitvenem videu se naučite več tehnik, ki lahko izboljšajo vašo izkušnjo razvoja vozlišča.

Sinatra podobni okviri MVC za Node.js

Prehrana

Diet se obračunava kot majhen, modularni spletni okvir Node.js, ki je primeren za hitro in razširljivo uporabo aplikacij in API-jev. Osnovni strežnik Diet je zelo podoben osnovnemu strežniku Express:

// Ustvari aplikacijo

var strežnik = zahteva (‘dieta’)

var app = server ()

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

// Ko // // zahtevamo localhost: 8000 /, odgovorite s "Hello World!"

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

$ .end (‘Hello World!’)

  })

Diet ima strukturo, ki podpira navidezno gostovanje brez dodatnih modulov ali konfiguracije. Primerki strežnikov diete delujejo kot navidezni gostitelji. Samo poslušajte jih na različnih vratih.

Usmerjanje v dieti ne obravnava samo določenih poti z anonimnimi funkcijami, kot v app.get () primer zgoraj, lahko pa vzpostavi tudi vmesno programsko opremo:

// Registrirajte funkcije vmesne programske opreme za pot nalaganja

app.post (‘/ upload / picture’, nalaganje, obrezovanje, shranjevanje, zaključek)

Node.js ima privzeto dva argumenta, prošnja in odziv, pri ustvarjanju strežnika HTTP (s) z uporabo http.createServer (). Diet ta dva predmeta združuje v en sam signalni objekt, ki ga predstavlja znak za dolar $. Lahko vidite v app.get () vzorec zgoraj, da je signalni objekt argument za funkcijo, ki obravnava dobili zahteve na korenski poti. Diet podpira tudi module Node.js in jih lahko uporablja kot vmesno programsko opremo, kot je prikazano v app.post () primer zgoraj.

Express

Express je minimalen in prilagodljiv okvir spletnih aplikacij Node.js, ki ponuja robusten nabor funkcij za izdelavo enojnih, večstranskih in hibridnih spletnih aplikacij. Express API se ukvarja s spletno aplikacijo, HTTP zahtevami in odgovori, usmerjanjem in vmesno programsko opremo. Od Express 4.x je podprta vmesna programska oprema za Express nameščena v številnih ločenih skladiščih, navedenih v repoju Connect.

Pojavilo se je več vilic in dodatkov za Express, vključno z Locomotive, Hapi in Koa. Koa je ustvaril eden največjih sodelavcev Expressa.

Čeprav je Express starejši in ima večji odtis v primerjavi s svojimi deli, ima še vedno večjo skupnost in večjo stabilnost kot kateri koli od njih. Nenehno vidim Express, vključen v druge okvire in orodja brez komentarjev, kot da bi bil to edina možna izbira za izdelavo spletnega strežnika na Node.js.

// ustvarimo ekspresno aplikacijo

const express = require (‘express’)

const app = express ()

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

res.send (‘Hello world!’)

})

app.listen (3000, function () {

console.log (‘Primer poslušanja aplikacije na vratih 3000!)

})

Flatiron

Flatiron je del zbirke orodij Nodejitsu Node. Avtorji menijo, da je Flatiron dvoje: Prvič, pobuda za izgradnjo zbirke ločenih orodij z visokim standardom kakovosti in zmogljivosti. In drugič, celoten okvir za razvoj spletnih aplikacij, ki ta orodja združuje za lažji izomorfen razvoj in razvoj aplikacij, ki temelji na toku.

Flatiron je podoben Sinatri, saj je vse, kar morate storiti, da ga uporabljate kot spletni strežnik zahtevajo ustvarite aplikacijo in uporabite vtičnike http, nastavite nekatere poti in zaženite aplikacijo, kot je prikazano na spodnjem posnetku zaslona.

Drugi deli apartmaja dopolnjujejo funkcionalnost flatirona. Na primer Broadway izpostavi preprost API »plugin«, ki nadomešča inverzijo registracije nadzora, ki jo uporabljajo drugi okviri Node MVC. Union je hibridno vmesno jedro z medpomnilnikom, ki je združljivo s tehnologijo Connect. Union je del, ki dobavlja vtičnik http.

// ustvarimo aplikacijo flatiron

var flatiron = require („flatiron“),

app = flatiron.app;

app.use (flatiron.plugins.http);

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

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

this.res.end ('Pozdravljeni, svet! \ n');

});

app.start (8080);

Hapi

Hapi je enostaven za uporabo, osredotočen na konfiguracijo, z vgrajeno podporo za preverjanje vnosa, predpomnjenje, preverjanje pristnosti in druge bistvene zmogljivosti za izdelavo spletnih in storitvenih aplikacij. Hapi razvijalcem omogoča, da se z visoko modularnim in predpisujočim pristopom osredotočijo na pisanje logike aplikacij za večkratno uporabo. Hapi je razvil Walmart Labs in je dobra izbira za velike ekipe in velike projekte.

Hapi je bil prvotno zgrajen na vrhu Expressa, kasneje pa je bil preoblikovan tako, da je samostojen. Kot so zapisali njegovi ustvarjalci, je bil Hapi zgrajen z idejo, da je konfiguracija boljša od kode in da mora biti poslovna logika izolirana od prometne plasti. V spodnjem primeru opazite, kako jasna in čista je konfiguracija strežniških poti v kodi.

// ustvarimo strežnik hapi

var Hapi = zahteva ("hapi");

var strežnik = nov Hapi.Server (3000);

server.route ([

  {

metoda: „GET“,

pot: ‘/ api / items’,

vodnik: funkcija (zahteva, odgovor) {

odgovor („Pridobite ID predmeta“);

    }

  },

  {

metoda: „GET“,

pot: ‘/ api / items / {id}’,

vodnik: funkcija (zahteva, odgovor) {

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

    }

  },

Koa

Koa je novejši spletni okvir, ki ga je oblikovala ekipa za Express, vendar neodvisen od kode Express. Koa želi biti manjši, izrazitejši in močnejši temelj za spletne aplikacije in API-je. Koa uporablja generatorje ES6 za vmesno programsko opremo in ne povratne klice Node.js. Sledi aplikacija Koa »Hello, World«, ki uporablja generator, ki izvaja a donos naslednji za prenos nadzora na naslednji generator:

var koa = zahteva ("koa");

var app = koa ();

// čas odziva x

app.use (funkcija * (naslednja) {

var start = nov datum;

donos naslednji;

var ms = nov datum - začetek;

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

});

// odgovor

app.use (funkcija * () {

this.body = 'Hello World';

});

app.listen (3000);

Obstaja razlika med generatorji vmesne programske opreme, kot jih uporablja Koa, in povratnimi klici, kot jih uporabljata Express in Connect. Implementacija Connect preprosto prenese nadzor skozi vrsto funkcij, dokler se ena ne vrne, medtem ko Koa daje "dolvodno", nato nadzor teče nazaj "gorvodno".

V zgornjem primeru x-odzivni čas "ovije" odzivni generator z znakom donos naslednji izjava, ki označuje klic. Dajanje je prožnejše od eksplicitnih klicev funkcij, saj olajša vstavljanje drugega generatorja v zaporedje, na primer spletnega zapisovalnika med časovnikom in odzivom.

Lokomotiva

Locomotive je spletni okvir za Node.js, ki podpira vzorce MVC, poti RESTful in konvencije glede konfiguracije (na primer Rails), hkrati pa se nemoteno integrira s katerim koli mehanizmom zbirke podatkov in predlog. Lokomotiva temelji na Express in Connect.

Lokomotiva doda Express nekaj Struktura, podobna Ruby-on-Rails, ki jo lahko vidite na spodnji sliki. Pogledi lokomotive so pogosto vdelane datoteke JavaScript (html.ejs), kot je prikazano tukaj, vendar Locomotive podpira tudi Jade in druge skladne mehanizme predlog za Express. Funkcijo REST nadzirajo poti, kot je to običajno pri strežnikih Express. Z Locomotive lahko uporabite katero koli bazo podatkov in sloj ORM. Vodič prikazuje uporabo MongoDB z Mongoose in uporabo potnega lista za preverjanje pristnosti uporabnika.

Skupaj.js

Total.js je popoln ogrodje na strani strežnika za Node.js, napisano v čistem JavaScript, podobno kot PHP-jev Laravel ali Pythonov Django. Platforma Total.js je zbirka knjižnic, paketov in dokončanih izdelkov, zgrajenih z Total.js.

Total.js je bolj podoben Sinatri kot Rails, saj je modularen in ker je agnostičen glede IDE-jev, baz podatkov in okvirov na strani odjemalca. Minimalni spletni strežnik Total.js je mogoče implementirati z naslednjo kodo:

require (‘total.js’);

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

this.plain (‘total.js je res dober!’);

});

F.http („odpravljanje napak“);

Povezani video: Node.js nasveti in triki

Okvirji MVC, podobni tirnicam, za Node.js

Adonis

Adonis je okvir MVC za Node.js, ki temelji na praktičnih primerih uporabe. Podpira vbrizgavanje odvisnosti in ima vitki vsebnik IoC (inverzija nadzora), ki vam pomaga razrešiti odvisnosti in se jim posmehovati. Adonis ponuja orodje CLI za oder in izdelavo projekta z vsemi zahtevanimi odvisnostmi.

Med značilnostmi Adonisa so ORM (Lucid) in izvedba vzorca aktivnega oblikovanja zapisa; plast za preverjanje pristnosti v paketu s sejami, JWT, osnovnim preverjanjem pristnosti in osebnimi žetoni API; in implementacijo krmilnikov kot razrede ES2015. Generatorji ES2015 odpravijo neurejene povratne klice, pogoste v starejših JavaScript. Naslednja koda iz baze podatkov pridobi vse uporabnike in jih vrne kot JSON:

const Route = uporaba („Route“)

const Uporabnik = uporaba (‘Aplikacija / Model / Uporabnik’)

Route.get (‘/’, funkcija * (zahteva, odgovor) {

const users = donos User.all ()

response.json (uporabniki)

})

Spojina JS

Formula CompoundJS je Express + struktura + razširitve. Tu je struktura standardna postavitev imenikov, razširitve pa so moduli Node.js, ki ogrodju dodajo funkcionalnost. Cilj je zagotoviti očiten in dobro organiziran vmesnik za razvoj aplikacij, združljivih z Express. To pomeni, da bo vse, kar deluje z Expressom, delovalo s CompoundJS.

Iz okolja CLI lahko ustvarite skeletne aplikacije CompoundJS:

npm namestite spojino -g

sestavljena init todo-list-app

cd todo-list-app && npm install

vozlišče.

Spletno mesto privzeto posluša // localhost: 3000 /. Lahko nadaljujete z dodajanjem odra na podlagi modelov z spojina ustvari oder ukaz.

Geddy

Okvir Geddy izvaja MVC za Node.js na zelo podoben način Rails, celo do strukture imenika, zmožnosti odpiranja konzole REPL v kontekstu aplikacije in skripta generatorja, ki ga lahko uporabite za ustvarjanje aplikacij, virov odri ali goli modeli in krmilniki. Odri lahko po želji ustvarijo predloge EJS, Jade, krmilo, brki in swig.

The geddy jake ukaz lahko zažene različne Jake (JavaScript naredite) naloge v kontekstu trenutne aplikacije s popolnim dostopom do modelov. To je uporabno za pomožna opravila, kot so testiranje, inicializacija razvojne baze podatkov in naštevanje poti.

Kraken

Kraken, odprtokodni projekt PayPal, je varen in razširljiv sloj, ki razširja Express tako, da zagotavlja strukturo in konvencije, podobno kot Locomotive. Čeprav je Kraken glavni steber njegovega ogrodja, lahko naslednje module uporabljamo tudi samostojno: Lusca (varnost), Kappa (NPM proxy), Makara (LinkedIn Dust.js i18N) in Adaro (LinkedIn Dust.js Templating).

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