Framework expressz - Használati útmutató

lehetőségek

  • világos routing
  • Segítők átirányítás (átirányítás segítők)
  • Dinamikus asszisztensek reprezentációk
  • Options alkalmazás szintű koncepciók
  • Foglalkozz tartalom
  • mount alkalmazások
  • Fókuszban a teljesítmény
  • Rendering sablonok és támogatása fragmentum minták (részletek felhangok)
  • Configuration gyorsan válthat a különböző feladatokra (fejlesztés. Termelés., Stb)
  • Tárolt munkamenet előugró üzenetek (flash üzenetek)
  • Alapján készült Connect
  • expressz script gyors csontváz alkalmazásgeneráló
  • A nagy teszt lefedettség

vagy férnek hozzá a kifejezett parancsot, meg globálisan:

Gyors indítás

A legegyszerűbb módja annak, hogy megkezdte a Express futhat a parancsot expressz. Ekkor létrejön egy alkalmazás:

Hozzon létre egy szerver

Létrehozásához express.HTTPServer fokon. egyszerűen hívja createServer () metódust. A mi alkalmazás Például tudjuk útvonal meghatározás alapján HTTP-módszereket, ebben a példában app.get ().

Létrehozása a HTTPS-szerver

Inicializálni express.HTTPSServer. elvégezzük a fenti lépéseket, de a de át opciók objektum, amely kulcs, tanúsítvány, és egyéb paraméterek, amelyek meg vannak írva a dokumentációban modul https NodeJS.

konfigurálása

Express támogatja tetszőleges környezetben (környezet), például a termelés és a fejlesztés. A fejlesztők használhatják a configure () metódus. Hozzáadni a kívánt funkciót egy adott környezetben. A configure () függvény nélkül körülvevő nevét, akkor a munka bármely környezetben, mielőtt bármilyen munkát configure. ahol a meghatározott környezetben.

A következő példában, egyszerűen kezelhető dumpExceptions lehetőség tervező módban kiemelkedő ügyfél válasz kivétel stack trace. Mindkét módban használjuk ugyanazt a réteget és methodOverride bodyParser. Figyeljük meg a app.router. ami önmagában lehetővé teszi, hogy felmászik az útvonalakat - egyébként fel vannak szerelve az első hívást app.get (). app.post (), stb

Körülvenni hasonló beállításokkal, akkor át többféle környezetben nevek:

A belső és tetszőleges beállítások az Express vannak meghatározott módszerekkel (kulcs [, Val]). lehetővé (kulcs). letiltása (kulcs):

Annak beállításához, tudjuk meg egy változó NODE_ENV környezetével. Például:

Ez nagyon fontos, mert egy csomó caching mechanizmusok aktiválódnak csak a termelési környezetben.

Expressz a dobozból támogatja a következő beállításokat:

  • otthon - az alapvető módja az alkalmazás, mellyel res.redirect (), valamint, hogy támogassa a szerelt átlátszó alkalmazások.
  • megtekintés gyökérkönyvtárban. Alapértelmezett tekuschaya_papka / kilátás
  • kilátás motor - az alapértelmezett sablont beadványok okozott nélkül a fájl kiterjesztését.
  • nézet opciók - egy tárgy, amely tükrözi a globális nézet beállítások
  • nézet cache - lehetővé caching reprezentációk (benne van a gyártási környezet)
  • nagybetű érzékeny útvonalak - útvonalak közé tartozik, az esetben az érzékeny
  • szigorú routing - ha engedélyezve van, akkor a követő törtvonal már nem ignnoriruyutsya
  • jsonp visszahívási - res.send resolve () módszer az átlátszó támogatás jsonp

routing

Express használ HTTP-alapú módszerek annak biztosítására, értelmes, kifejező routing API. Például, azt szeretnénk, hogy kérésre / user / 12 megjeleníti a felhasználói profil id = 12. Ehhez lentebb határozzuk meg priveldenny útvonalon. A kapcsolódó értékek mezőkre állnak a tárgy res.params.

Az útvonal csak egy csomó, ami belül van a motor össze egy reguláris kifejezés. Például, amikor összeállítása / user /: id. kiderül egy reguláris kifejezés, mint ez:

Is, akkor azonnal át a reguláris kifejezés. De mint egy csoport egy reguláris kifejezés nem egy név, akkor el lehet érni req.params számokat. Mivel az első csoport kap a req.params [0]. egy második req.params [1], stb

Most, hogy a göndör, és elküldi a kérelmet a fent említett útvonalon:

Az alábbiakban néhány példa az útvonalak és útvonalak, hogy teljesíteni tudja azokat:

Például küldhetünk egy POST-om néhány JSON, és válaszoljon az azonos JSON-ohm, egy réteg bodyParser. aki tudja, hogyan kell elemezni JSON kérelmet (valamint egyéb kérések), és helyezze a választ req.body:

Általános szabály, hogy az általunk használt „hülye” mezőben (például: / user /: id), amely nem ismer határokat. De ha például szeretné korlátozni a felhasználói azonosítót csak numerikus karaktereket, akkor a / user /: id ([0-9] +). Ez a kialakítás nem villan, ha a mező értéke, amely nem numerikus karaktereket.

Az irányítás átadása egy másik útvonalon

Kiváltó harmadik érv - next (). kontroll átvihetők a következő útvonalon. Ha nincs találat, a vezérlés visszakerül a Connect és továbbra is egy réteg abban a sorrendben, ahogy azokat a benne útján használat (). Csak fuss néhány útvonalakat ugyanúgy. Ők csak az úgynevezett egy-egy, addig a pillanatig, amikor az egyikük fog reagálni, ahelyett, hogy hívja a következő ().

app.all () módszer hasznos, ha el kell végezni ugyanazt a logikát minden HTTP-módszereket. Az alábbiakban azt használja ezt a módszert, hogy letölteni a felhasználó az adatbázisból, és a célját req.user.

Csatlakoztassa keret réteg átvihetők express.createServer () ugyanolyan módon, mint ha a használt hagyományos Csatlakozás-szerver. Például:

Felhasználhat (). Sokkal kényelmesebb hozzátéve configure rétegek közötti belső blokkok (). több fokozatosan.

Általában rétegekkel Connect tudunk kapcsolódni csatlakoztassa a következőképpen:

Ez nem túl kényelmes, így reexportot Express Connect natív réteg:

Az, hogy a rétegek fontos. Tehát amikor Connect megkapja a kérelem megfelel az első réteg segítségével hozzáadott createServer (), vagy (). Úgy hívják a három paraméter: kérésre. válasz és visszahívási funkció, gyakran nevezik a következő. ha hívod next (). a vezérlés átadódik a második réteg, stb Ez azért fontos, mert nagyon sok rétegben egymásra van utalva. Például methodOverride () kifejezés req.body.method HTTP-módszer túlterhelés és bodyParser () feldolgozza a kérelmet szervezet, hogy töltse req.body. Egy másik példa - elemzés süti és session támogatás - először meg kell hívni a használata () az cookieParser (). majd a munkamenet ().

Az Express-különböző alkalmazások egy sort app.use (app.router). Furcsának tűnhet, de ez egyszerűen annak érdekében, hogy egyértelműen meg kell határozni a réteg, amely magában foglalja az összes útvonal, hogy hoztunk létre. Ez a réteg lehet benne, bármilyen sorrendben, bár alapértelmezés szerint tartalmazza a végén. Változó álláspontját, akkor az ellenőrzés elsőbbséget annak végrehajtását. Például, szükségünk van egy hibakezelő, amely akkor aktiválódik, miután az összes többi réteg és képes megjeleníteni a kivétel által átadott next (). Vagy lehet, hogy csökkenteni kell az, hogy a fenti réteg szolgáló statikus fájlok, hogy más útvonalakat, hogy elfogják kérést ilyen fájlokat, és például, számolja meg a letöltések száma, stb Itt van, hogyan nézhet ki:

Routes-réteg

Routes használhatja routing réteget továbbítva további visszahívási módszer (vagy tömb). Ez akkor hasznos, ha azt szeretné, hogy korlátozza a hozzáférést, vagy tölthet fel olyan adatokat, mielőtt a módja, stb

Jellemzően aszinkron adat lehívása nézhet valami ehhez hasonlót (itt veszünk a: id paramétert és a hajó a felhasználói adatok).

Hogy tartsák tiszteletben a DRY és javítja az olvashatóságot a kódot, meg lehet szervezni egy ilyen logikai rétegek használatával. Mint látható, referáló a logikát, amely a rétegeket, és egyaránt lehetséges elérni újrafelhasználás rétegek, és a kód szebb útvonalon.

Figyelembe véve azt a tényt, hogy a réteg - ez csak egy függvény, akkor lehet, hogy írjon egy függvényt, amely visszaadja a réteg (hogy még kifejezőbb és rugalmas megoldást) az alábbiak szerint.

A gyakran használt „halom” rétegek átadhatók tömbként tetszőleges mélységű és fából (lesznek ismételhető):

Komplett példa található a tárolóban.

Vannak esetek, amikor van, hogy hiányzik a többi útvonal réteg a verem, de továbbra is a végrehajtás a következő útvonalakon. Ehhez hívja a következő (), amelyek segítségével az érvelés. next ( "út"). Ha nem fut útvonalak, Express válasz 404 Not Found.

HTTP-eljárások

Mi már többször használt app.get (). de Express továbbá más HTTP-módszerek - app.post (). app.del (), stb

A leggyakoribb példa segítségével POST - olyan űrlapot. Az alábbi példában, egyszerűen csinálni HTML-formában. Ezután a vezérlés átadódik az útvonal, amit meghatározzák a következő példa.

Alapértelmezésben Express nem tudja, mit kell tenni a szervezet a kérelem, ezért kell hozzá egy réteg bodyParser (). amely elemezni kérést test kódolt application / x-www-form-urlencoded vagy alkalmazás / json. és tegye a elemzési eredmények req.body. Ehhez azt kell mondanunk használatra (). az alábbiak szerint:

Most a lenti útvonal lesz hozzáférése req.body.user objektumot. melyik lesz a tulajdonság nevét és e-mail:

Ha ön használ egy formája módszerek, mint a PUT, akkor egy rejtett input nevű _method. amely lehetővé teszi, hogy módosítsa a HTTP-módszer. Ahhoz, hogy ezt elérjük, először aktiválnia kell egy réteg methodOverride (). el kell helyezni, miután bodyParser (). amely lehetővé teszi, hogy használja req.body. mező áteső formában.

E rétegek vannak alapértelmezés szerint nincs engedélyezve, mert Express nem kell azonnal teljes funkcionalitást. Attól függően, hogy az alkalmazás igényeinek, és nem tudja használni őket. Ezután módszereinek és DELETE továbbra is elérhetők, de közvetlenül. Ugyanakkor vreyam methodOverride - a tökéletes megoldás a HTML-formában. Az alábbiakban egy példa segítségével PUT módszer:

hiba Kezelés

Az Express ott app.error () metódust. amely megkapja az összes kivételt dobott útvonalakat, és továbbítani a következő (err). Az alábbiakban egy példát, hogyan szolgálja több oldalt használ rögtönzött kivételek NotFound:

Okozhat app.error () többször, az alábbiak szerint. Itt ellenőrizheti a instanceof NotFound és mutat egy 404-es oldal, vagy a következő hibakezelő.

Megjegyzendő, hogy ezek a gépek lehet meghatározni bárhol, mert továbbra is alá helyezett a felvezető utak hallgatni (). Ez lehetővé teszi számukra, hogy meghatározzák blokkok belül configure (). így tudjuk kezelni kivételek függően különböző módon a jelenlegi környezetben.

Az egyszerűség kedvéért feltételezzük, hogy itt a hibákat a 500 kódot, de meg lehet változtatni, ahogy tetszik. Például, ha a csomópont teszi fájlrendszer műveletet, lehetséges, hogy a következő hibaüzenet objektum területén Error.code = ENOENT. ami azt jelenti: „a fájl nem található, vagy könyvtár”, fel tudjuk használni ezt a hibakezelő és megjeleníti a megfelelő oldalt.

Az alkalmazások is használhatók a kivételek kezelése Connect ovsky réteg errorHander. Például, ha azt szeretnénk, hogy bemutassák a fejlesztési környezetben kivétel stderr. megteheti:

Szintén a fejlesztése során, akkor szükség lehet hűlni HTML-oldalak, mutatja küldött vagy dobott kivételt. Ebben az esetben meg kell telepíteni showStack true:

errorHandler réteg is válaszol JSON, ha a kliens elküldi fejléc Accept: application / json. amely hasznos a fejlesztés AJAX-alkalmazások.

Pre-feldolgozás Az útvonal-paraméterek,

Pre-feldolgozás Az útvonal-paraméterek, nagyban javítja az olvashatóságot az alkalmazás révén egyértelmű adatok betöltése és érvényesítése a kérés URL-t. Például, ha Ön folyamatosan megnézni néhány adatot meghatározott kéréseket (pl hajó felhasználói adatok / user /: id), akkor valami hasonlót:

Az előfeltételek mi lekérdezési paraméterek is lehet akasztani, hogy a visszahívási funkció, amely végre érvényesítését, a hozzáférési korlátozásokat, vagy akár letölteni az adatokat az adatbázisból. Az alábbi példában, hívjuk app.param () a paraméter nevét, amelyhez akar lógni a visszahívás. Mint látható, megkapjuk az id érv. amely tartalmazza a mező nevét. Tehát betölteni a felhasználói objektumok és végre normális hibakezelés és egyszerű hívás next (). át a vezérlést a következő előfeltételeket vagy már az útvonalon processzor.

A fenti intézkedések, mint már említettük, nagy mértékben növeli kód olvashatóságát és könnyen kezelhető ugyanazt a logikát különböző helyeken alkalmazás:

rendering reprezentációk

Részletek fájlok nevei által generált rendszer <имя>. <движок>. ahol <движок> - a neve egy sablon modult, amelyet be kell kötni. Például képviselet layout.ejs említett rendszer fogalmakat kell igényelnek (EJS). Integrálódni a Express, egy betölthető modul exportálni exports.compile (str, opciók) módszer. és vissza funkció. Ha ezt módosítani, akkor a módszer app.register () - lehetővé teszi a hozzá tartozó fájl kiterjesztések egy adott motort. Például amit tehetünk, hogy valami.html rendering motor EJS.

Az alábbiakban - egy példa segítségével Jade tétele index.html. És mivel mi nem használjuk elrendezése: hamis. Olvasztott index.jade prezentáció tartalmára hivatkozik, hogy egy helyi változót a test ábrázolása layout.jade.

Nézet beállítása motor lehetővé teszi, hogy az alapértelmezett sablon. Például az Jade képes erre:

amely lehetővé teszi számunkra, hogy tegye meg ezt: