Programovanie

Kompletný sprievodca rámcami Node.js

Node.js je modul runtime JavaScriptu, ktorý je založený na nástroji JavaScript V8 prehliadača Chrome a je vhodný na implementáciu aplikácií pre stolné počítače aj servery. Node.js používa neblokujúci I / O model založený na udalostiach, vďaka čomu je ľahký a efektívny v porovnaní s vláknovými servermi, ako sú Apache, IIS a vaším typickým serverom Java.

Zatiaľ čo vy môcť implementovať webový server alebo aplikáciu úplne v obyčajnom kóde Node.js, rámec môže výrazne znížiť množstvo kódu, ktoré potrebujete na napísanie. V tejto príručke skúmame škálu rámcov dostupných pre vývojárov Node.js.

Začíname s minimalistickými rámcami podobnými Sinatre, ako je Express, prechádzame k viac názorným rámcom podobným Rails, ako je Sails.js, potom ďalej k plným rámcom s lešeniami a perzistenčnými knižnicami, ako je Meteor. Na záver sa venujeme rámcom REST API, ako je LoopBack, a niekoľkým „ďalším“ knižniciam na účely, ktoré nespadajú do našich hlavných kategórií (napríklad ORM, IoT a statické generovanie stránok).

Upozorňujeme, že klasifikácie nie sú dobre oddelené. Existuje niekoľko rámcov, ktoré možno považovať za patriace do viacerých kategórií.

Upozorňujeme, že existuje viac projektov Node.js MVC, ako som tu uviedol. V niektorých prípadoch som vylúčil projekty, ktoré už nie sú aktívne. V iných prípadoch som vylúčil rámce, ktoré napriek nepretržitej činnosti nikdy nepútali výrazný záujem vývojárov. Mojím cieľom nie je povedať vám o všetkých možných projektoch, ale skôr vám pomôcť identifikovať projekty, ktoré by mohli stáť za váš čas na hodnotenie.

MVC rámce pre Node.js

MVC (model-view-controller) je paradigma určená na čisté rozdelenie funkcií pracovnej plochy alebo webovej aplikácie. Model spravuje základnú dátovú štruktúru. Pohľad spravuje to, čo sa zobrazuje používateľovi. Kontrolór riadi, čo sa stane v reakcii na požiadavky používateľov.

Rails je plnohodnotný, „mienkotvorný“ webový rámec založený na MVC, ktorý v roku 2004 vytvoril David Heinemeier Hansson (alias DHH), aby poskytla Ruby spôsob, ako vytvoriť webovú prezentáciu. Rails predpokladá, že používate databázu, hodnotíte konvencie nad konfiguráciou a správne škálováte. Plnohodnotné sú architektúry Node.js MVC podobné Rails.

Sinatra je holý základný, menej znalý webový rámec založený na MVC, ktorý v roku 2007 vytvoril Blake Mizerany a v súčasnosti ho spravuje Konstantin Haase. Sinatra zaujala opačný prístup ako Rails v tom, že má iba to, čo potrebujete pre webovú aplikáciu, v podstate trasy na umiestnenie vašej aplikácie na web pomocou jazyka DSL (jazyk špecifický pre doménu) cez vrstvu „rack“. Rack je abstrakčná vrstva založená na Node.js Vysielač udalostía poskytuje jednoduchý spôsob riešenia podpory klastrov.

Koncepčné prvky Node.js podobné MVC Sinatra sú tie, ktoré začínajú jednoducho a umožňujú vám podľa potreby pridávať komponenty. Mnoho z MVC rámcov Node.js podobných Sinatra má v skutočnosti hodnotu konvencie nad konfiguráciou, takže hranica medzi týmito a rámcami podobnými Rails nie je vždy jasná.

Súvisiace video: Tipy a triky pre Node.js

V tomto vysvetľujúcom videu sa naučte niekoľko techník, ktoré môžu zlepšiť vaše skúsenosti s vývojom uzlov.

Sinatra podobné MVC rámce pre Node.js

Strava

Diéta sa účtuje ako malý, modulárny webový rámec Node.js, ktorý je vhodný na vytváranie rýchlych, škálovateľných aplikácií a rozhraní API. Základný server Diet vyzerá veľmi podobne ako základný server Express:

// Vytvorenie aplikácie

var server = require (‘diéta’)

var app = server ()

app.listen („// localhost: 8000“)

// Keď sa požaduje // localhost: 8000 /, odpovedzte „Hello World!“

app.get („/“, funkcia ($) {

$ .end („Hello World!“)

  })

Diéta má štruktúru, ktorá podporuje virtuálny hosting bez akýchkoľvek ďalších modulov alebo konfigurácie. Inštancie servera Diet fungujú ako virtuálni hostitelia. Nechajte ich počúvať na rôznych portoch.

Smerovanie v strave zvláda nielen špecifické cesty s anonymnými funkciami, ako v app.get () príklad vyššie, ale môže tiež vytvoriť reťazec middlewaru:

// Zaregistrujte funkcie middlewaru pre cestu nahrávania

app.post („/ upload / picture“, upload, crop, save, finish)

Node.js má predvolene dva argumenty, žiadosť a odpoveď, pri vytváraní servera HTTP pomocou servera http.createServer (). Diéta spája tieto dva objekty do jedného signálneho objektu, ktorý je reprezentovaný znakom dolára $. Môžete vidieť v app.get () vzorka nad tým, že signálny objekt je argumentom pre funkciu, ktorá spracováva dostať požiadavky na koreňovej ceste. Diéta tiež podporuje moduly Node.js a môže ich použiť ako middleware, ako je to znázornené v app.post () príklad vyššie.

expresné

Express je minimálny a flexibilný rámec webových aplikácií Node.js, ktorý poskytuje robustnú sadu funkcií na vytváranie jednostránkových, viacstránkových a hybridných webových aplikácií. Express API sa zaoberá webovou aplikáciou, požiadavkami a odpoveďami HTTP, smerovaním a middlewarom. Od verzie Express 4.x sa podporovaný middlevér pre Express nachádza v niekoľkých samostatných úložiskách, ktoré sú uvedené v úložisku Connect.

Na povrch vyplávalo niekoľko forkov a doplnkov pre Express, vrátane Locomotive, Hapi a Koa. Koa bol vytvorený jedným z hlavných prispievateľov do Expressu.

Aj keď je Express starší a má v porovnaní so svojimi potomkami väčšiu stopu, stále má väčšiu komunitu a väčšiu stabilitu ako ktorýkoľvek z nich. Neustále vidím Express začlenený do iných rámcov a nástrojov bez komentára, akoby to bola jediná možná voľba pre vytvorenie webového servera na Node.js.

// vytvorenie expresnej aplikácie

const express = require („express“)

const app = express ()

app.get („/“, function (req, res) {

res.send („Ahoj svet!“)

})

app.listen (3000, function () {

console.log („Príklad aplikácie počúvajúcej na porte 3000!)

})

Žehlička

Flatiron je súčasťou sady nástrojov Nodejitsu Node. Autori považujú Flatiron za dve veci: Po prvé, za iniciatívu na vybudovanie zbierky oddelených nástrojov s vysokým štandardom kvality a výkonu. A za druhé, vývojový rámec pre webové aplikácie s úplným zásobníkom, ktorý tieto nástroje balí dohromady, aby uľahčil izomorfný a prúdový vývoj aplikácií.

Flatiron je podobný Sinatre v tom, že všetko, čo musíte urobiť, aby ste ho mohli používať ako webový server, je vyžadovať vytvorte inštanciu aplikácie a použite doplnky http, nastavte niektoré trasy a spustite aplikáciu, ako je to znázornené na snímke obrazovky nižšie.

Ďalšie kúsky tejto sady dopĺňajú funkčnosť žehličky. Napríklad Broadway vystavuje jednoduché „zásuvné“ API, ktoré nahradzuje inverziu registrácie riadenia používanú inými rámcami Node MVC. Union je hybridné jadro middlewaru s medzipamäťou a streamom, ktoré je spätne kompatibilné s technológiou Connect. Union je súčasť, ktorá dodáva doplnok http.

// vytvorenie aplikácie flatiron

var flatiron = require („flatiron“),

app = flatiron.app;

app.use (flatiron.plugins.http);

app.router.get („/“, funkcia () {

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

this.res.end ('Hello world! \ n');

});

app.start (8080);

Hapi

Hapi je ľahko použiteľný rámec zameraný na konfiguráciu so zabudovanou podporou overovania vstupu, ukladania do pamäte cache, autentifikácie a ďalších základných zariadení na vytváranie webových aplikácií a aplikácií služieb. Hapi umožňuje vývojárom zamerať sa na písanie opakovane použiteľnej logiky aplikácií pomocou vysoko modulárneho a normatívneho prístupu. Hapi bolo vyvinuté spoločnosťou Walmart Labs a je dobrou voľbou pre veľké tímy a veľké projekty.

Hapi bol pôvodne postavený na vrchole Expressu, neskôr ho však prepracovali tak, aby bol samostatný. Ako sa vyjadrili jeho tvorcovia, Hapi bol postavený na myšlienke, že konfigurácia je lepšia ako kód a že obchodná logika musí byť izolovaná od transportnej vrstvy. V príklade nižšie si všimnite, ako prehľadná a čistá je konfigurácia trás servera v kóde.

// vytvorenie hapi servera

var Hapi = require („hapi“);

var server = nový Hapi.Server (3000);

server.route ([

  {

metóda: „ZÍSKAJTE“,

cesta: „/ api / items“,

obsluha: funkcia (požiadavka, odpoveď) {

odpoveď („Získať ID položky“);

    }

  },

  {

metóda: „ZÍSKAJTE“,

cesta: „/ api / items / {id}“,

obslužná rutina: funkcia (požiadavka, odpoveď) {

odpoveď („Získať ID položky:“ + request.params.id);

    }

  },

Koa

Koa je novší webový rámec navrhnutý tímom, ktorý stojí za serverom Express, ale je nezávislý od kódu Express. Cieľom spoločnosti Koa je byť menším, expresívnejším a robustnejším základom pre webové aplikácie a API. Koa používa skôr generátory ES6 pre middleware než spätné volania Node.js. Nasleduje aplikácia Koa „Hello, World“ používajúca generátor, ktorý robí a výnos ďalej odovzdať riadenie ďalšiemu generátoru:

var koa = require („koa“);

var app = koa ();

// x-response-time

app.use (funkcia * (ďalšia) {

var start = nový Dátum;

výnos ďalej;

var ms = nový Dátum - začiatok;

this.set („X-Response-Time“, ms + „ms“);

});

// odpoveď

app.use (funkcia * () {

this.body = ‘Hello World’;

});

app.listen (3000);

Je rozdiel medzi generátormi middlewaru, ktoré používa Koa, a spätnými volaniami, ktoré používajú Express a Connect. Implementácia Connectu jednoducho prechádza kontrolou cez sériu funkcií, kým sa jedna nevráti, zatiaľ čo Koa poskytuje „po prúde“, potom riadenie tečie späť „po prúde“.

V príklade vyššie x-response-time „zabalí“ generátor odozvy s výnos ďalej vyhlásenie označujúce hovor. Výťažok je flexibilnejší ako explicitné volania funkcií, pretože umožňuje do sekvencie ľahko vložiť ďalší generátor, napríklad webový záznamník medzi časovačom a odpoveďou.

Rušeň

Lokomotíva je webový rámec pre Node.js, ktorý podporuje vzory MVC, trasy RESTful a konvencie týkajúce sa konfigurácie (napríklad Rails) pri bezproblémovej integrácii s ľubovoľnou databázou a šablónou. Lokomotíva stavia na službách Express a Connect.

Lokomotíva pridáva do Expressu niektoré Štruktúra podobná Ruby-on-Rails, ktorú môžete vidieť na obrázku nižšie. Zobrazenia lokomotívy sú často vložené súbory JavaScriptu (html.ejs), ako je to znázornené tu, ale lokomotíva podporuje aj Jade a ďalšie kompatibilné šablónové motory pre Express. Funkcia REST je riadená trasami, ako je to obvykle na serveroch založených na serveri Express. S lokomotívou môžete použiť ľubovoľnú databázu a vrstvu ORM, ktoré by ste chceli. Sprievodca ukazuje, ako používať MongoDB s Mongoose, ako aj ako pas na autentifikáciu používateľov.

Total.js

Total.js je plnohodnotný rámec na strane servera pre Node.js, napísaný v čistom jazyku JavaScript, podobne ako PHP Laravel alebo Python Django. Platforma Total.js je kolekcia knižníc, balíkov a dokončených produktov vytvorených pomocou Total.js.

Total.js je viac ako Sinatra ako Rails v tom, že je modulárny a pretože je agnostický ohľadne IDE, databáz a rámcov na strane klienta. Minimálny webový server Total.js je možné implementovať pomocou nasledujúceho kódu:

require („total.js“);

F.route („/“, function () {

this.plain („total.js je naozaj dobrý!“);

});

F.http („ladenie“);

Súvisiace video: Tipy a triky pre Node.js

Koľajnicové rámce MVC pre Node.js

Adonis

Adonis je rámec MVC pre Node.js postavený na praktických prípadoch použitia. Podporuje vkladanie závislostí a má štíhly kontajner IoC (inverzia kontroly), ktorý vám pomôže vyriešiť a zosmiešniť závislosti. Adonis poskytuje nástroj CLI na lešenie a generovanie projektu so všetkými požadovanými závislosťami.

Medzi vlastnosti Adonisu patrí ORM (Lucid) a implementácia aktívneho vzorového záznamu záznamu; autentifikačná vrstva spojená s reláciami, JWT, základnou autentifikáciou a osobnými tokenmi API; a implementácia radičov ako triedy ES2015. Generátory ES2015 eliminujú nepríjemné spätné volania bežné v starších jazykoch JavaScript. Nasledujúci kód načíta všetkých používateľov z databázy a vráti ich ako JSON:

const Route = použitie („Route“)

const User = použitie („Aplikácia / Model / Používateľ“)

Route.get („/“, funkcia * (žiadosť, odpoveď) {

const users = výnos User.all ()

response.json (používatelia)

})

CompoundJS

Vzorec za CompoundJS je Express + štruktúra + rozšírenia. Tu je štruktúra štandardným rozložením adresárov a rozšíreniami sú moduly Node.js, ktoré pridávajú funkcionalitu do rámca. Cieľom je poskytnúť zrejmé a prehľadné rozhranie pre vývoj aplikácií kompatibilných s Express. To znamená, že všetko, čo pracuje s Expressom, bude fungovať s CompoundJS.

Môžete generovať aplikácie skeleton CompoundJS z CLI:

npm nainštalovať zlúčeninu -g

zložený init todo-list-app

cd todo-list-app && npm install

uzol.

Stránka predvolene počúva na // localhost: 3000 /. Môžete pokračovať pridaním lešenia na základe modelov s zlúčenina generovať lešenie príkaz.

Geddy

Rámec Geddy implementuje MVC pre Node.js extrémne podobným spôsobom ako Rails, dokonca až po adresárovú štruktúru, schopnosť otvoriť konzolu REPL v kontexte aplikácie a skript generátora, ktorý môžete použiť na vytváranie aplikácií, zdrojov lešenia alebo holé modely a ovládače. Lešenie môže voliteľne generovať šablóny EJS, Jade, Handlebars, Mustache a Swig.

The geddy jake príkaz môže spustiť rôzne Jake (JavaScript urobiť) úlohy v kontexte aktuálnej aplikácie s úplným prístupom k modelom. To je užitočné pre pomocné úlohy, ako je testovanie, inicializácia vývojovej databázy a výpis trás.

Kraken

Kraken, otvorený projekt PayPal, je bezpečná a škálovateľná vrstva, ktorá rozširuje Express poskytovaním štruktúry a konvencií, podobne ako lokomotíva. Aj keď je Kraken hlavným pilierom jeho rámca, nasledujúce moduly je možné používať aj samostatne: Lusca (bezpečnosť), Kappa (NPM Proxy), Makara (LinkedIn Dust.js i18N) a Adaro (LinkedIn Dust.js Templating).

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