Programování

Kompletní průvodce rámci Node.js

Node.js je modul runtime JavaScriptu, který je postaven na modulu JavaScript V8 prohlížeče Chrome a je vhodný pro implementaci desktopových i serverových aplikací. Node.js používá neblokující I / O model založený na událostech, díky kterému je lehký a efektivní ve srovnání s vláknovými servery, jako je Apache, IIS a váš typický server Java.

Zatímco ty umět implementovat webový server nebo aplikaci zcela v prostém kódu Node.js, rámec může výrazně snížit množství kódu, který potřebujete k zápisu. V této příručce zkoumáme škálu rámců dostupných pro vývojáře Node.js.

Začínáme s minimalistickými rámci podobnými Sinatra, jako je Express, přejdeme k více názorným rámcům podobným Rails, jako je Sails.js, dále k rámcům s plným zásobníkem s knihovnami lešení a vytrvalosti, jako je Meteor. Nakonec pokryjeme rámce REST API, jako je LoopBack, a několik „dalších“ knihoven pro účely, které spadají mimo naše hlavní kategorie (jako ORM, IoT a statické generování stránek).

Všimněte si, že klasifikace nejsou dobře odděleny. Existuje několik rámců, které lze považovat za součást více kategorií.

Všimněte si, že existuje více projektů Node.js MVC, než jsem zde uvedl. V některých případech jsem vyloučil projekty, které již nejsou aktivní. V jiných jsem eliminoval rámce, které navzdory nepřetržité činnosti nikdy nepřitahovaly významný zájem vývojářů. Mým cílem není říci vám o všech možných projektech, ale spíše vám pomoci identifikovat projekty, které by mohly stát za váš čas na vyhodnocení.

MVC frameworks pro Node.js

MVC (model-view-controller) je paradigma určené k čistému rozdělení funkcí desktopové nebo webové aplikace. Model spravuje podkladovou datovou strukturu. Pohled spravuje to, co se zobrazuje uživateli. Řídicí jednotka řídí, co se stane v reakci na požadavky uživatelů.

Rails je plnohodnotný, „umíněný“ webový rámec založený na MVC, který vytvořil v roce 2004 David Heinemeier Hansson (aka DHH), aby poskytl Ruby způsob, jak zajistit webovou přítomnost. Rails předpokládá, že používáte databázi, hodnotovou konvenci nad konfigurací a dobře škálováte. Rámečky Node.js MVC podobné Rails jsou ty, které jsou plně vybavené.

Sinatra je holý základ, méně promyšlený webový rámec založený na MVC, který vytvořil v roce 2007 Blake Mizerany a v současné době jej spravuje Konstantin Haase. Sinatra zaujala opačný přístup než Rails v tom, že má pouze to, co potřebujete pro webovou aplikaci, v zásadě trasy pro umístění vaší aplikace na web pomocí DSL (jazyk specifický pro doménu) přes vrstvu „stojanu“. Rack je abstrakční vrstva založená na Node.js Vysílač událostía poskytuje jednoduchý způsob řešení podpory klastrů.

Sinatra-like Node.js MVC frameworks are the ones that start simple and let you add components as needed. Mnoho Sinatra-like Node.js MVC frameworků má ve skutečnosti hodnotu konvence nad konfigurací, takže hranice mezi těmito a Rails-like frameworky není vždy jasná.

Související video: Tipy a triky Node.js

V tomto vysvětlujícím videu se naučte několik technik, které mohou zlepšit vaše zkušenosti s vývojem uzlů.

Sinatra-like MVC frameworks for Node.js

Strava

Diet se účtuje jako malý, modulární webový rámec Node.js, který je vhodný pro vytváření rychlých, škálovatelných aplikací a rozhraní API. Základní server Diet vypadá velmi podobně jako základní server Express:

// Vytvoření aplikace

var server = require ('diet')

var aplikace = server ()

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

// Když je požadován // localhost: 8000 /, odpovězte „Hello World!“

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

$ .end („Hello World!“)

  })

Dieta má strukturu, která podporuje virtuální hosting bez jakýchkoli dalších modulů nebo konfigurace. Instance serveru na dietě fungují jako virtuální hostitelé. Nechte je poslouchat na různých portech.

Směrování ve stravě nezpracovává pouze konkrétní cesty s anonymními funkcemi, jako v app.get () příklad výše, ale může také vytvořit potrubí middlewaru:

// Zaregistrujte funkce middlewaru pro cestu nahrávání

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

Node.js má ve výchozím nastavení dva argumenty, žádost a Odezva, při vytváření serveru HTTP pomocí serveru http.createServer (). Dieta spojuje tyto dva objekty do jediného signálního objektu, který je reprezentován znakem dolaru $. Můžete vidět v app.get () ukázka výše, že signální objekt je argumentem pro funkci, která zpracovává dostat požadavky na kořenové cestě. Dieta také podporuje moduly Node.js a může je použít jako middleware, jak je uvedeno v app.post () příklad výše.

Vyjádřit

Express je minimální a flexibilní rámec webových aplikací Node.js, který poskytuje robustní sadu funkcí pro vytváření jednostranných, vícestránkových a hybridních webových aplikací. Express API se zabývá webovou aplikací, požadavky a odpověďmi HTTP, směrováním a middlewarem. Od verze Express 4.x je podporovaný middleware pro Express umístěn v řadě samostatných úložišť, které jsou uvedeny v úložišti Connect.

Vynořilo se několik vidlic a doplňků pro Express, včetně Locomotive, Hapi a Koa. Koa byl vytvořen jedním z hlavních přispěvatelů do Expressu.

Přestože je Express starší a ve srovnání se svými potomky má větší stopu, stále má větší komunitu a větší stabilitu než kterýkoli z nich. Neustále vidím Express začleněný do jiných frameworků a nástrojů bez komentáře, jako by to byla jediná možná volba pro stavbu webového serveru na Node.js.

// vytvoření expresní aplikace

const express = require („express“)

const app = express ()

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

res.send („Ahoj světe!“)

})

app.listen (3000, function () {

console.log („Ukázková aplikace naslouchající na portu 3000!)

})

Žehlička

Flatiron je součástí sady nástrojů Nodejitsu Node. Autoři považují Flatiron za dvě věci: Za prvé, iniciativa na vybudování kolekce oddělených nástrojů s vysokým standardem kvality a výkonu. A za druhé, vývojový rámec pro webové aplikace s plným zásobníkem, který tyto nástroje balí dohromady, aby usnadnil izomorfní a streamovaný vývoj aplikací.

Flatiron je jako Sinatra v tom, že vše, co musíte udělat, abyste jej mohli použít jako webový server, je vyžadovat vytvořte instanci aplikace a použijte pluginy http, nastavte některé trasy a spusťte aplikaci, jak je znázorněno na následujícím obrázku.

Další součásti sady doplňují funkčnost žehličky. Například Broadway zveřejňuje jednoduché „zásuvné“ API, které nahrazuje inverzi registrace řízení používanou jinými rámci Node MVC. Union je hybridní jádro middlewaru s mezipamětí / streamováním, které je zpětně kompatibilní s Connect. Union je díl, který dodává plugin http.

// vytvoření aplikace flatiron

var flatiron = require („flatiron“),

aplikace = flatiron.app;

app.use (flatiron.plugins.http);

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

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

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

});

app.start (8080);

Hapi

Hapi je snadno použitelný rámec zaměřený na konfiguraci se zabudovanou podporou pro ověřování vstupů, ukládání do mezipaměti, ověřování a další základní vybavení pro vytváření webových aplikací a služeb. Hapi umožňuje vývojářům soustředit se na psaní opakovaně použitelné aplikační logiky pomocí vysoce modulárního a normativního přístupu. Hapi byl vyvinut společností Walmart Labs a je dobrou volbou pro velké týmy a velké projekty.

Hapi byl původně postaven na Express, ale později byl přepracován tak, aby byl samostatný. Jak uvedli jeho tvůrci, Hapi byl postaven s myšlenkou, že konfigurace je lepší než kód a že obchodní logika musí být izolována od transportní vrstvy. V níže uvedeném příkladu si všimněte, jak jasná a čistá je konfigurace tras serveru, která se zobrazí v kódu.

// vytvoření hapi serveru

var Hapi = require („hapi“);

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

server.route ([

  {

metoda: ‚ZÍSKEJTE ',

cesta: „/ api / items“,

obsluha: funkce (požadavek, odpověď) {

odpověď („Získat ID položky“);

    }

  },

  {

metoda: ‚ZÍSKEJTE ',

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

obsluha: funkce (požadavek, odpověď) {

odpověď („Získat ID položky:“ + request.params.id);

    }

  },

Koa

Koa je novější webový rámec navržený týmem za Expressem, ale nezávislý na kódu Express. Koa si klade za cíl být menším, expresivnějším a robustnějším základem pro webové aplikace a API. Koa používá spíše generátory ES6 pro middleware než zpětná volání Node.js. Následuje aplikace „Hello, World“ Koa využívající generátor, který dělá a výnos dále předat řízení dalšímu generátoru:

var koa = require („koa“);

var app = koa ();

// x-response-time

app.use (funkce * (další) {

var start = nové datum;

výnos další;

var ms = nový Datum - začátek;

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

});

// Odezva

app.use (funkce * () {

this.body = ‚Hello World ';

});

app.listen (3000);

Existuje rozdíl mezi generátory middlewaru používanými společností Koa a zpětnými voláními používanými Express a Connect. Implementace Connectu jednoduše předává kontrolu řadou funkcí, dokud se jedna nevrátí, zatímco Koa poskytuje „downstream“, pak řízení teče zpět „upstream“.

Ve výše uvedeném příkladu x-response-time „zabalí“ generátor odezvy s výnos dále prohlášení označující hovor. Výtěžek je flexibilnější než explicitní volání funkcí, protože usnadňuje vložení dalšího generátoru do sekvence, například webového záznamníku mezi časovačem a odpovědí.

Lokomotiva

Locomotive je webový rámec pro Node.js, který podporuje vzory MVC, trasy RESTful a konvenci nad konfigurací (jako Rails), zatímco se bez problémů integruje s jakoukoli databází a šablonami. Lokomotiva staví na Express a Connect.

Lokomotiva přidává do Expressu nějaký Struktura podobná Ruby-on-Rails, kterou můžete vidět na obrázku níže. Zobrazení lokomotivy jsou často vložené soubory JavaScriptu (html.ejs), jak je znázorněno zde, ale lokomotiva také podporuje Jade a další kompatibilní šablony pro Express. Funkce REST je řízena trasami, jak je tomu obvykle na serverech založených na Express. S lokomotivou můžete použít jakoukoli databázi a vrstvu ORM, které chcete. Průvodce ukazuje použití MongoDB s Mongoose a také použití Passportu pro autentizaci uživatelů.

Total.js

Total.js je plnohodnotný rámec na straně serveru pro Node.js, napsaný v čistém JavaScriptu, podobně jako PHP Laravel nebo Python Django. Platforma Total.js je kolekce knihoven, balíčků a dokončených produktů vytvořených pomocí Total.js.

Total.js je spíše Sinatra než Rails v tom, že je modulární a protože je agnostický ohledně IDE, databází a frameworků na straně klienta. Minimální webový server Total.js lze implementovat pomocí následujícího kódu:

require („total.js“);

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

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

});

F.http („debug“);

Související video: Tipy a triky Node.js

Rails like MVC frameworks for Node.js

Adonis

Adonis je rámec MVC pro Node.js postavený na praktických případech použití. Podporuje vkládání závislostí a má štíhlou nádobu IoC (inverze ovládání), která vám pomůže vyřešit a zesměšnit závislosti. Adonis poskytuje nástroj CLI k vygenerování a generování projektu se všemi požadovanými závislostmi.

Mezi rysy Adonisu patří ORM (Lucid) a implementace aktivního vzorového záznamu záznamu; ověřovací vrstva spojená s relacemi, JWT, základním ověřováním a osobními tokeny API; a implementace řadičů jako tříd ES2015. Generátory ES2015 eliminují chaotická zpětná volání běžná ve starším JavaScriptu. Následující kód načte všechny uživatele z databáze a vrátí je jako JSON:

const Route = použití („Route“)

const Uživatel = použití („Aplikace / Model / Uživatel“)

Route.get („/“, funkce * (požadavek, odpověď) {

const uživatelé = výnos User.all ()

response.json (uživatelé)

})

CompoundJS

Vzorec za CompoundJS je Express + struktura + rozšíření. Zde je struktura standardní rozložení adresářů a rozšíření jsou moduly Node.js, které přidávají funkcionalitu do rozhraní. Cílem je poskytnout zřejmé a dobře organizované rozhraní pro vývoj aplikací kompatibilních s Express. To znamená, že vše, co funguje s Express, bude fungovat s CompoundJS.

Můžete generovat skeletové aplikace CompoundJS z rozhraní příkazového řádku:

npm nainstalovat sloučeninu -g

složený init todo-list-app

cd todo-list-app && npm install

uzel.

Web ve výchozím nastavení naslouchá na // localhost: 3000 /. Můžete pokračovat a přidat lešení na základě modelů s sloučenina generovat lešení příkaz.

Geddy

Rámec Geddy implementuje MVC pro Node.js extrémně podobným způsobem jako Rails, dokonce až po strukturu adresářů, schopnost otevřít konzolu REPL v kontextu aplikace a skript generátoru, který můžete použít k vytváření aplikací, prostředků lešení nebo holé modely a řadiče. Lešení může volitelně generovat šablony EJS, Jade, Handlebars, Mustache a Swig.

The geddy jake příkaz může spouštět různé Jake (JavaScript udělat) úkoly v kontextu aktuální aplikace s plným přístupem k modelům. To je užitečné pro pomocné úkoly, jako je testování, inicializace vývojové databáze a výpis tras.

Kraken

Kraken, projekt s otevřeným zdrojovým kódem PayPal, je bezpečná a škálovatelná vrstva, která rozšiřuje Express poskytováním struktury a konvence, podobně jako lokomotiva. Ačkoli je Kraken hlavním pilířem jeho rámce, lze samostatně použít také následující moduly: Lusca (zabezpečení), Kappa (NPM Proxy), Makara (LinkedIn Dust.js i18N) a Adaro (LinkedIn Dust.js Templating).