Post on 11-Dec-2021
Tytuł oryginału: Pro Express.js: Master Express.js: The Node.js Framework For Your Web Development
Tłumaczenie: Robert Górczyński
ISBN: 978-83-283-1664-5
Original edition copyright © 2014 by Azat Mardan.All rights reserved.
Polish edition copyright © 2016 by HELION SA.All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: helion@helion.plWWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/expresMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę• Poleć książkę • Oceń książkę
• Księgarnia internetowa• Lubię to! » Nasza społeczność
Spis tre ci
O autorze ........................................................................................................ 11
O recenzentach technicznych .......................................................................... 13
Wst p .............................................................................................................. 15
Wprowadzenie ................................................................................................ 17Dlaczego napisałem tę książkę? ................................................................................................ 17Dla kogo jest przeznaczona ta książka? ................................................................................... 18O czym jest ta książka? ............................................................................................................... 18O czym nie jest ta książka? ........................................................................................................ 18Przykłady ..................................................................................................................................... 19Errata i dane kontaktowe .......................................................................................................... 19
Podzi kowania ................................................................................................ 21
Cz I Rozpocz cie pracy ............................................................................ 23Rozdzia 1. Rozpocz cie pracy z Express.js ........................................................................ 25
Jak działa Express.js? .................................................................................................................. 26Zależności firm trzecich ...................................................................................................... 27Utworzenie egzemplarza ..................................................................................................... 27Nawiązanie połączenia z bazą danych .............................................................................. 27Konfiguracja ustawień aplikacji Express.js ....................................................................... 28Zdefiniowanie oprogramowania pośredniczącego ......................................................... 28Zdefiniowanie tras ............................................................................................................... 28Uruchomienie aplikacji ....................................................................................................... 28
Instalacja Express.js .................................................................................................................... 29Instalacja Express.js Generator ................................................................................................. 32Podsumowanie ............................................................................................................................ 34
Poleć książkęKup książkę
SPIS TRE CI
4
Rozdzia 2. Witaj, wiecie .................................................................................................. 35Rozpoczęcie pracy ...................................................................................................................... 35
Użycie procedur obsługi żądań .......................................................................................... 36Wyświetlanie komunikatów w powłoce ........................................................................... 37Usprawnienie aplikacji ........................................................................................................ 38
Polecenia generatora .................................................................................................................. 39Wygenerowanie szkieletu aplikacji Express.js ................................................................. 40Przegląd struktury aplikacji ................................................................................................ 41Plik app.js .............................................................................................................................. 41
Moduły i architektura MVC ..................................................................................................... 45Monitorowanie pod kątem zmian w plikach .......................................................................... 46Podsumowanie ............................................................................................................................ 47
Cz II Dok adne omówienie API ................................................................. 49Rozdzia 3. Konfiguracja, ustawienia i rodowiska ........................................................... 51
Konfiguracja ................................................................................................................................ 51app.set() i app.get() .............................................................................................................. 52app.enable() i app.disable() ................................................................................................ 52app.enabled() i app.disabled() ............................................................................................ 53
Ustawienia ................................................................................................................................... 53env .......................................................................................................................................... 54view cache ............................................................................................................................. 54view engine ........................................................................................................................... 55views ....................................................................................................................................... 55trust proxy ............................................................................................................................. 56jsonp callback name ............................................................................................................. 56json replacer i json spaces ................................................................................................... 57case sensitive routing ........................................................................................................... 58strict routing ......................................................................................................................... 59x-powered-by ........................................................................................................................ 60etag ......................................................................................................................................... 60query parser .......................................................................................................................... 61subdomain offset .................................................................................................................. 62
Środowiska .................................................................................................................................. 62Podsumowanie ............................................................................................................................ 65
Rozdzia 4. Praca z oprogramowaniem po rednicz cym ................................................... 67Zastosowanie oprogramowania pośredniczącego .................................................................. 68Najważniejsze oprogramowanie pośredniczące ..................................................................... 71
compression .......................................................................................................................... 72morgan .................................................................................................................................. 74body-parser ........................................................................................................................... 75urlencoded() ......................................................................................................................... 76cookie-parser ........................................................................................................................ 77express-session ..................................................................................................................... 77csurf ........................................................................................................................................ 78
Poleć książkęKup książkę
SPIS TRE CI
5
express.static() ...................................................................................................................... 79connect-timeout ................................................................................................................... 80errorhandler .......................................................................................................................... 82method-override .................................................................................................................. 82response-time ....................................................................................................................... 83serve-favicon ......................................................................................................................... 84serve-index ............................................................................................................................ 85vhost ....................................................................................................................................... 87connect-busboy .................................................................................................................... 87
Inne oprogramowanie pośredniczące ...................................................................................... 88Podsumowanie ............................................................................................................................ 89
Rozdzia 5. Silniki szablonów i Consolidate.js ................................................................... 91Jak używać silników szablonów? .............................................................................................. 92
app.engine() .......................................................................................................................... 93Rzadziej stosowane biblioteki ............................................................................................ 94
Dostępne silniki szablonów ....................................................................................................... 97Jade ......................................................................................................................................... 97Haml.js ................................................................................................................................... 97EJS .......................................................................................................................................... 97Handlebars.js ........................................................................................................................ 97Adaptery Hogan.js ............................................................................................................... 97Combyne.js ........................................................................................................................... 98Swig ........................................................................................................................................ 98Whiskers ................................................................................................................................ 98Blade ...................................................................................................................................... 98Haml-Coffee ......................................................................................................................... 98Webfiller ................................................................................................................................ 98
Consolidate.js .............................................................................................................................. 98Podsumowanie .......................................................................................................................... 100
Rozdzia 6. Parametry i routing ....................................................................................... 101Parametry .................................................................................................................................. 101
app.param() ........................................................................................................................ 105Routing ....................................................................................................................................... 108
app.NAZWA() ................................................................................................................... 108app.all() ................................................................................................................................ 111Ukośniki na końcu ............................................................................................................. 111Klasa Router ........................................................................................................................ 111router.route(path) .............................................................................................................. 111
Procedury obsługi żądania ...................................................................................................... 113Podsumowanie .......................................................................................................................... 114
Rozdzia 7. Obiekt request w Express.js .......................................................................... 117request.query ............................................................................................................................. 118request.params .......................................................................................................................... 120request.body .............................................................................................................................. 121request.route .............................................................................................................................. 122
Poleć książkęKup książkę
SPIS TRE CI
6
request.cookies .......................................................................................................................... 123request.signedCookies ............................................................................................................. 124request.header() i request.get() ............................................................................................... 125Inne atrybuty i metody ............................................................................................................ 125Podsumowanie .......................................................................................................................... 129
Rozdzia 8. Obiekt response w Express.js ........................................................................ 131response.render() ...................................................................................................................... 132response.locals .......................................................................................................................... 134response.set() ............................................................................................................................ 135response.status() ....................................................................................................................... 137response.send() ......................................................................................................................... 138response.json() .......................................................................................................................... 141response.jsonp() ........................................................................................................................ 142response.redirect() .................................................................................................................... 144Inne właściwości i metody odpowiedzi ................................................................................. 144Strumienie ................................................................................................................................. 148Podsumowanie .......................................................................................................................... 150
Rozdzia 9. Obs uga b dów i uruchamianie aplikacji ..................................................... 151Obsługa błędów ........................................................................................................................ 151Uruchomienie aplikacji ........................................................................................................... 155
app.locals ............................................................................................................................. 155app.render() ........................................................................................................................ 155app.mountpath ................................................................................................................... 156app.on('mount', funkcja(nadrzędna){...}) ....................................................................... 157app.path() ............................................................................................................................ 157app.listen() .......................................................................................................................... 157
Podsumowanie .......................................................................................................................... 161
Cz III Rozwi zywanie najcz ciej pojawiaj cych si problemów ............ 163Rozdzia 10. Abstrakcja ..................................................................................................... 165
Oprogramowanie pośredniczące ............................................................................................ 165Trasy ........................................................................................................................................... 166Połączenie oprogramowania pośredniczącego i tras ........................................................... 168Podsumowanie .......................................................................................................................... 170
Rozdzia 11. Wskazówki dotycz ce baz danych, kluczy i strumieni ................................... 171Użycie baz danych w modułach ............................................................................................. 171Klucze i hasła ............................................................................................................................. 173
Plik JSON ............................................................................................................................ 173Zmienne środowiskowe .................................................................................................... 175
Strumienie ................................................................................................................................. 175Podsumowanie .......................................................................................................................... 179
Poleć książkęKup książkę
SPIS TRE CI
7
Rozdzia 12. Redis i wzorce uwierzytelniania ..................................................................... 181Redis ........................................................................................................................................... 181Wzorce uwierzytelniania ......................................................................................................... 184Podsumowanie .......................................................................................................................... 185
Rozdzia 13. Wielow tkowo z u yciem klastrów ............................................................ 187Przykład wielowątkowości ...................................................................................................... 187Podsumowanie .......................................................................................................................... 190
Rozdzia 14. Stosowanie bibliotek Stylus, Less i Sass ........................................................ 191Stylus .......................................................................................................................................... 191Less ............................................................................................................................................. 192Sass .............................................................................................................................................. 193Podsumowanie .......................................................................................................................... 193
Rozdzia 15. Zapewnienie bezpiecze stwa ....................................................................... 195Cross-Site Request Forgery ..................................................................................................... 195Przetwarzanie uprawnień ........................................................................................................ 197Nagłówki zabezpieczeń w HTTP ........................................................................................... 198Weryfikacja danych wejściowych ........................................................................................... 199Podsumowanie .......................................................................................................................... 201
Rozdzia 16. Socket.IO i Express.js .................................................................................... 203Użycie Socket.IO ....................................................................................................................... 203Uruchomienie aplikacji ........................................................................................................... 207Podsumowanie .......................................................................................................................... 208
Rozdzia 17. Domeny i Express.js ...................................................................................... 209Zdefiniowanie problemu ......................................................................................................... 209Prosty przykład oparty na domenie ....................................................................................... 210Utworzenie aplikacji opartej na domenie ............................................................................. 211Podsumowanie .......................................................................................................................... 214
Rozdzia 18. Sails.js, DerbyJS, LoopBack i inne frameworki .............................................. 215Sails.js ......................................................................................................................................... 215DerbyJS ...................................................................................................................................... 217LoopBack ................................................................................................................................... 219Inne frameworki ....................................................................................................................... 222Podsumowanie .......................................................................................................................... 222
Cz IV Przyk ady ........................................................................................ 223Rozdzia 19. Galeria Instagram ......................................................................................... 225
Zaczynamy pracę nad galerią Instagram ............................................................................... 225Wyświetlanie galerii ................................................................................................................. 229Podsumowanie .......................................................................................................................... 230
Rozdzia 20. Aplikacja Todo .............................................................................................. 231Ogólne omówienie projektu ................................................................................................... 232Konfiguracja .............................................................................................................................. 235Plik app.js ................................................................................................................................... 237
Poleć książkęKup książkę
SPIS TRE CI
8
Trasy ........................................................................................................................................... 242Jade ............................................................................................................................................. 246Less ............................................................................................................................................. 250Podsumowanie .......................................................................................................................... 251
Rozdzia 21. API REST ........................................................................................................ 253Podstawy API RESTful ............................................................................................................ 254Wprowadzenie do testów ........................................................................................................ 255Zależności .................................................................................................................................. 259Implementacja serwera ............................................................................................................ 260Podsumowanie .......................................................................................................................... 265
Rozdzia 22. Aplikacja HackHall ......................................................................................... 267Co to jest HackHall? ................................................................................................................. 267Uruchomienie HackHall ......................................................................................................... 268Struktura aplikacji .................................................................................................................... 274Plik package.json ...................................................................................................................... 275Aplikacja Express.js .................................................................................................................. 276Trasy ........................................................................................................................................... 280
Plik index.js ......................................................................................................................... 280Plik auth.js ........................................................................................................................... 280Plik main.js .......................................................................................................................... 284Plik users.js .......................................................................................................................... 287Plik application.js ............................................................................................................... 292Plik posts.js .......................................................................................................................... 295
Modele Mongoose .................................................................................................................... 301Testy Mocha .............................................................................................................................. 307Podsumowanie .......................................................................................................................... 312
Dodatki .......................................................................................... 313Dodatek A Dalsza lektura i zasoby ................................................................................. 315
Inne frameworki Node.js ......................................................................................................... 315Książki poświęcone Node.js .................................................................................................... 316Klasyka JavaScript .................................................................................................................... 318Kursy .......................................................................................................................................... 318
Dodatek B Migracja Express.js 3.x do 4.x: oprogramowanie po rednicz ce,trasy i inne zmiany ........................................................................................ 319Wprowadzenie do oprogramowania pośredniczącego,
które nie zostało dołączone do wydania Express.js 4 ....................................................... 319Usunięcie z aplikacji Express.js 4 metod uznanych za przestarzałe .................................. 321
app.configure() ................................................................................................................... 321app.router() ......................................................................................................................... 321res.on('header') ................................................................................................................... 322res.charset ............................................................................................................................ 322res.headerSent ..................................................................................................................... 322req.accepted() ..................................................................................................................... 322
Poleć książkęKup książkę
SPIS TRE CI
9
Inne zmiany wprowadzone w Express.js 4 ........................................................................... 322app.use() .............................................................................................................................. 322res.location() ....................................................................................................................... 323app.route() .......................................................................................................................... 323json spaces ........................................................................................................................... 323req.params ........................................................................................................................... 323res.locals .............................................................................................................................. 323req.is ..................................................................................................................................... 323Działający w powłoce generator Express.js .................................................................... 323
Poznanie nowego egzemplarza tras w Express.js 4oraz sposoby jego łączenia z innymi ................................................................................... 323
Kolejne zasoby dotyczące migracji do Express.js 4 .............................................................. 325
Dodatek C ci ga z Express.js 4 ..................................................................................... 327Instalacja .................................................................................................................................... 328Generator ................................................................................................................................... 328Podstawy .................................................................................................................................... 329Trasy i metody HTTP .............................................................................................................. 329Żądanie ....................................................................................................................................... 329Skróty nagłówków żądania ...................................................................................................... 330Odpowiedź ................................................................................................................................. 330Sygnatury procedury obsługi .................................................................................................. 330Stylus i Jade ................................................................................................................................ 330Body ............................................................................................................................................ 331Static ........................................................................................................................................... 331Oprogramowanie pośredniczące Connect ............................................................................ 331Inne popularne oprogramowanie pośredniczące ................................................................ 331
Dodatek D ExpressWorks ................................................................................................ 333Instalacja .................................................................................................................................... 333Sposób użycia ............................................................................................................................ 334Zerowanie .................................................................................................................................. 334Zadania ....................................................................................................................................... 334
Witaj, świecie ...................................................................................................................... 334Jade ....................................................................................................................................... 335Stary dobry formularz ....................................................................................................... 335Static ..................................................................................................................................... 335Style CSS .............................................................................................................................. 335Param pam pam ................................................................................................................. 335Co znajduje się w zapytaniu? ............................................................................................ 336Dane JSON .......................................................................................................................... 336
Podsumowanie .......................................................................................................................... 336
Skorowidz ..................................................................................................... 337
Poleć książkęKup książkę
R O Z D Z I A 1 9
Galeria Instagram
Jeżeli kolejne rozdziały książki czytasz po kolei, to poznałeś już ważne, choć suche szczegóły API orazmiałeś styczność z jedynie abstrakcyjnymi rozwiązaniami. Część IV powinna okazać się najbardziejekscytująca, ponieważ cztery znajdujące się tutaj rozdziały zostały poświęcone programowaniu i przykładom.
W tym rozdziale dowiesz się, jak używać Express.js wraz z usługami zewnętrznymi opracowanymiprzez firmy trzecie (tutaj to API Storify). Celem budowanej aplikacji jest pobranie zdjęć Instagram zeStorify, a następnie wyświetlenie ich w galerii. Poza frameworkiem Express.js wykorzystamy jeszczenastępujące moduły:
superagent (https://www.npmjs.com/package/superagent); consolidate (https://www.npmjs.com/package/consolidate); handlebars (https://www.npmjs.com/package/handlebars).
Zdecydowałem się na wymienione moduły, ponieważ są one popularne w pewnych kręgachprogramistycznych Node.js. Istnieje więc duże prawdopodobieństwo, że je napotkasz lub będzieszz nich korzystał w przyszłości.
Uwaga Pe ny kod ród owy przyk adu omawianego w rozdziale znajdziesz pod adresem:ftp://ftp.helion.pl/przyklady/expres.zip.
Storify (http://storify.com/) działa w Node.js (https://nodejs.org/) i Express.js (http://expressjs.com/).Dlatego też wymienione technologie można wykorzystać do utworzenia aplikacji pokazującej,jak budować rozwiązania opierające się na żądaniach HTTP i API firm trzecich.
Zaczynamy prac nad galeri InstagramGaleria Instagram będzie pobierać obiekt, a następnie wyświetlać jego tytuł, opis i elementy/obrazy,podobnie jak pokazałem na rysunku 19.1.
Uwaga Je eli zastanawiasz si , co oznacza s owo Kazan (Kaza ), wyja niam, e to ponadtysi cletnia stolicaRepubliki Tatarstanu.
Poleć książkęKup książkę
EXPRESS.JS. TWORZENIE APLIKACJI SIECIOWYCH W NODE.JS
226
Rysunek 19.1. Galeria Instagram
Struktura plików aplikacji przedstawia się następująco:
- index.js- package.json- views/index.html- css/bootstrap-responsive.min.css- css/flatly-bootstrap.min.css
Pliki CSS pochodzą z biblioteki Bootstrap (http://getbootstrap.com/) i motywu Flatly(http://bootswatch.com/flatly/). Z kolei index.js to nasz główny plik Node.js zawierający większośćlogiki, natomiast index.html to szablon Handlebars. Aplikacja używa zwykłych arkuszy stylów CSSzdefiniowanych w dwóch plikach znajdujących się w katalogu css.
Poniżej wymieniłem zależności aplikacji: express w wersji 4.8.1 — framework Express.js; superagent w wersji 0.18.2 — do wykonywania żądań HTTP(S); consolidate w wersji 0.10.0 — w celu użycia silnika szablonów Handlebars w Express.js; handlebars w wersji 2.0.0-beta.1 — w celu użycia silnika szablonów Handlebars.
Zawartość pliku package.json przedstawia się następująco:
{ "name": "sfy-gallery", "version": "0.2.0", "description": "Galeria Instagram: oparty na Node.js przyk ad u ycia API Storify", "main": "index.js",
Poleć książkęKup książkę
ROZDZIA 19. GALERIA INSTAGRAM
227
"scripts": { "test": "echo \"B d: nie podano testu.\" && exit 1" }, "dependencies": { "consolidate": "0.10.0", "express": "4.8.1", "handlebars": "2.0.0-beta.1", "superagent": "0.18.2" }, "repository": "https://github.com/storify/sfy-gallery", "author": "Azat Mardan", "license": "BSD"}
Aby zainstalować niezbędne moduły, wydaj poniższe polecenie:
$ npm install
Teraz utwórz plik index.js. Na początku wymienionego pliku powinny znaleźć się następującezależności:
var express = require('express');var superagent = require('superagent');var consolidate = require('consolidate');
var app = express();
Kolejnym krokiem jest konfiguracja silnika szablonów:
app.engine('html', consolidate.handlebars);app.set('view engine', 'html');app.set('views', __dirname + '/views');
Dalej przechodzimy do przygotowania katalogu statycznego wraz z oprogramowaniem pośredniczącym:
app.use(express.static(__dirname + '/public'));
Jeżeli chcesz wykorzystać inną galerię, możesz to zrobić. Potrzebujesz jedynie nazwy użytkownikaautora oraz tzw. story slug. W przypadku mojej galerii o Kazaniu (stolicy Tatarstanu) podaj następujące dane:
var user = 'azat_co';var story_slug = 'kazan';
Następnie umieść swoje wartości: klucz API Storify, nazwę użytkownika i token, jeśli go masz.W chwili pisania książki API Storify pozostało publiczne, co oznacza brak konieczności przeprowadzaniauwierzytelniania (nie trzeba używać klucza). Jeżeli w przyszłości sytuacja ulegnie zmianie, żądanieklucza API można będzie złożyć na stronie: http://dev.storify.com/request. Zawsze też możesz zajrzećdo oficjalnej dokumentacji dostępnej na stronie: http://dev.storify.com/api/summary.
var api_key = "";var username = "";var _token = "";
Kolejnym krokiem jest zdefiniowanie trasy głównej (/):
app.get('/',function(req, res){
Elementy z API Storify pobieramy w wywołaniu zwrotnym trasy za pomocą metody superagent.get():
superagent.get("http://api.storify.com/v1/stories/" + user + "/" + story_slug)
Poleć książkęKup książkę
EXPRESS.JS. TWORZENIE APLIKACJI SIECIOWYCH W NODE.JS
228
Punktem końcowym API Storify jest "http://api.storify.com/v1/stories/" + user + "/" +story_slug, czyli w omawianym przykładzie to: https://api.storify.com/v1/stories/azat/kazan. Jednąz zalet metody superagent jest możliwość łączenia metod. Na przykład metoda query() powodujewysłanie danych w ciągu tekstowym zapytania:
.query({api_key: api_key, username: username, _token: _token})
Metoda set() pozwala na określenie nagłówków żądania:
.set({Accept: 'application/json'})
Z kolei metoda end() pobiera wywołanie zwrotne przeznaczone do wykonania po otrzymaniuodpowiedzi:
.end(function(e, storifyResponse){ if (e) return next(e);
Aby wygenerować szablon z obiektem wskazywanym przez właściwość content odpowiedzi HTTP,możemy użyć poniższego fragmentu kodu:
return res.render('index', storifyResponse.body.content); })})
app.listen(3001);
API Storify zwraca dane w formacie JSON. Informacje o używanym formacie znajdziesz na stronie:https://api.storify.com/v1/stories/azat_co/kazan (przyjmując założenie, że API nadal będzie publiczne,jak w chwili pisania książki). Zwięzłą (tzn. niepokazującą wszystkich zagnieżdżonych obiektów) postaćdanych JSON pokazałem na rysunku 19.2.
Rysunek 19.2. Przykład zwięzłych danych wyjściowych dostarczanychprzez API Storify dla encji albumu
Poleć książkęKup książkę
ROZDZIA 19. GALERIA INSTAGRAM
229
Wy wietlanie galeriiSkoro przygotowaliśmy aplikację pobierającą dane ze Storify i wywołującą szablon index w celu ichwyświetlenia, warto spojrzeć na szablon Handlebars, który znajduje się w pliku views/index.html:
<!DOCTYPE html lang="en"><html> <head> <link type="text/css" href="css/flatly-bootstrap.min.css" rel="stylesheet" /> <link type="text/css" href="css/bootstrap-responsive.min.css" rel="stylesheet"/> </head>
<body class="container"> <div class="row">
Teraz użyjemy {{title}} do wyświetlenia tytułu albumu Storify oraz {{authon.name}}do wyświetlenia autora:
<h1>{{title}}<small> by {{author.name}}</small></h1> <p>{{description}}</p></div><div class="row"> <ul class="thumbnails">
Kolejnym krokiem jest wykorzystanie wbudowanej w Handlebars konstrukcji do przeprowadzeniaiteracji przez elementy tablicy. W trakcie każdej iteracji następuje wygenerowanie nowego znacznika <li>:
{{#each elements}} <li class="span3"> <a class="thumbnail" href="{{permalink}}" target="_blank"> <img src="{{data.image.src}}" title="{{data.image.caption}}" /> </a> </li> {{/each}} </ul> </div> </body>
</html>
Po uruchomieniu aplikacji za pomocą polecenia node . i przejściu pod adres: http://localhost:3000zobaczysz wyświetlone zdjęcia. Działanie aplikacji jest następujące: po przejściu na podaną stronęserwer lokalny wykonuje żądania do Storify i pobiera z galerii Instagram łącza do zdjęć.
Poleć książkęKup książkę
EXPRESS.JS. TWORZENIE APLIKACJI SIECIOWYCH W NODE.JS
230
PodsumowanieFramework Express.js i moduł superagent pozwalają programistom na pobieranie danych dostarczanychprzez usługi opracowane przez firmy trzecie, takie jak: Storify, Twitter i Facebook, za pomocą jedyniekilku wierszy kodu. Umożliwiają też zarządzanie tymi danymi. Przykład przedstawiony w rozdziale jestprosty, ponieważ nie wykorzystuje bazy danych. W kolejnym rozdziale przystąpimy do budowy aplikacjiTodo, która zostanie oparta na bazie danych MongoDB.
Uwaga W wi kszo ci przypadków dostawcy us ug (np.: Google, Facebook i Twitter) wymagaj uwierzytelnienia(w chwili pisania ksi ki nie by o takiego wymogu dla API Storify). Aby wykonywa dania: OAuth 1.0,OAuth 2.0 i OAuth Echo, rozwa u ycie modu ów: oauth (https://www.npmjs.com/package/oauth; GitHub:https://github.com/ciaranj/node-oauth), everyauth (https://www.npmjs.com/package/everyauth; GitHub:https://github.com/bnoguchi/everyauth) i/lub passport (http://passportjs.org/; GitHub:https://github.com/jaredhanson/passport).
Poleć książkęKup książkę
Skorowidz
A
abstrakcja, 165kodu, 101
adaptery Hogan.js, 97adres
e-mail, 285URL, 104, 262
API, 49REST, 166, 253REST JSON, 268Storify, 227
aplikacjaBackbone.js, 268, 274Express.js, 276HackHall, 267
członkostwo w społeczności, 295modele Mongoose, 301plik package.json, 275strona postów, 273strona użytkowników, 290, 292struktura, 274testy Mocha, 307trasy, 280
Todo, 231Jade, 246konfiguracja, 235Less, 250plik app.js, 237trasy, 242
aplikacjefront-endu, 274oparte na domenie, 211
architektura MVC, 45arkusze stylów
CSS, 191stylów Less, 250
ataktypu brute force, 271typu CSRF, 78, 195
atrybutrequest.accepted, 126request.acceptedCharsets, 127request.acceptedLanguages, 126request.fresh, 126request.host, 126request.ip, 126request.ips, 126request.originalUrl, 126request.path, 126request.protocol, 126request.secure, 126request.stale, 126request.subdomains, 126request.xhr, 126
Bbaza danych, 171
Redis, 181bezpieczeństwo, 195biblioteka
bcryptjs, 275Bootstrap, 226Consolidate.js, 98Less, 192
Poleć książkęKup książkę
SKOROWIDZ
338
bibliotekamongoose, 275Mongoskin, 253passport, 275Sass, 193sendgrid, 275Socket.IO, 203Stylus, 191
biblioteki wewnętrzne, 274Body, 331
Ccertyfikat SSL, 160Consolidate.js, 98CORS, cross-origin resource sharing, 56CRUD, create, remove, update, delete, 253CSRF, cross-site request forgery, 78CSS, 191, 335
Ddane
JSON, 336wejściowe, 208wyjściowe, 40
definiowanie trasy, 28DerbyJS, 217dołączanie biblioteki, 205domeny, 209dostęp do aplikacji, 283działanie Express.js, 26
Ee-mail, 276, 289, 292Express.js 4, 319ExpressWorks, 333
FForeman, 268format JSON, 139, 255framework
Compound, 222DerbyJS, 217Geddy, 222Hapi, 222LoopBack, 219
Sails.js, 215Total.js, 222
frameworki Node.js, 315funkcja
app.get(), 36clientErrorHandler(), 277cookieParser(), 77del(), 298express.static(), 79findByIdAndRemove(), 289findOrCreate(), 290json(), 118next(), 109render(), 92require(), 169send(), 206updateById(), 262urlencoded(), 76
Ggaleria Instagram, 225, 226generator, 328generowanie, 91
szkieletu aplikacji, 40wartości hash, 285
GitHub, 267
Hhash, 285hasła, 173
cookie, 269Heroku, 269
Iimplementacja
OAuth, 279serwera, 260
informacje o użytkowniku, 270, 283instalacja, 29, 328
Express.js Generator, 32ExpressWorks, 333
JJade, 246, 330, 335
Poleć książkęKup książkę
SKOROWIDZ
339
Kklasa Router, 111, 323klaster, 187, 189klient front-endu, 268, 277klucze, 173kody stanów HTTP, 153kompilacja szablonów, 91komunikaty błędów, 201konfiguracja, 51
Heroku, 269ustawień aplikacji, 28zamiast konwencji, 25try-catch, 210
konwencja zamiast konfiguracji, 25
LLess, 192, 250LoopBack, 219
MMDN, Mozilla Developer Network, 57menedżer npm, 66metoda
_express(), 94add(), 288app.all(), 111app.configure(), 63, 321app.disable(), 52app.enable(), 52app.engine(), 93app.get(), 52app.listen(), 157, 159, 172app.param(), 105app.path(), 157app.proto.create(), 219app.render(), 155app.route(), 323app.router(), 321app.set(), 52app.use(), 322compare(), 285compression(), 72contain(), 257exports.angelList(), 281findByIdAndRemove(), 286findOrAddUser(), 290
findProfileById(), 305findStories(), 168getUser(), 288req.accepted(), 322request.accepts(), 126request.acceptsCharset(), 127request.acceptsLanguage(), 126request.get(), 125request.header(), 125request.is(), 126request.param(), 221res.location(), 323res.on(), 322res.json(), 57response.attachment(), 145response.clearCookie(), 145response.cookie(), 145response.download(), 145response.format(), 145response.get(), 145response.json(), 141response.jsonp(), 142response.links(), 145response.location(), 145response.redirect(), 144response.render(), 132, 133response.send(), 138, 139, 140response.sendfile(), 145response.set(), 135response.status(), 137response.type(), 145router.route(), 111socket.emit(), 205update(), 289
metodyHTTP, 154, 254, 329idempotentne, 254nullipotentne, 255odpowiedzi, 144przestarzałe, 321
middleware, 67modele Mongoose, 301moduł, 45
bcryptjs, 271, 285body-parser, 75cluster, 187connect-busboy, 87connect-timeout, 80cookie-parser, 71
Poleć książkęKup książkę
SKOROWIDZ
340
modułderby, 218domain, 209Mocha, 259oauth, 279okay, 214serve-static, 79zlib, 72
monitorowanie plików, 47montowanie, 68, 157
Nnagłówek
Content-Type, 136CORS, 56X-Powered-By, 61
nagłówki zabezpieczeń, 198narzędzia monitorujące pliki, 47narzędzie
etag, 60ExpressWorks, 333Foreman, 268, 272, 309forever, 47node-dev, 47nodemon, 47supervisor, 47up, 47
Oobiekt
app.locals, 155JSON, 286request, 117request.body, 121request.cookies, 123request.params, 120request.query, 118request.route, 122request.signedCookies, 124response, 131response.locals, 134
obsługabłędów, 44, 151, 277żądań, 36, 113żądań PUT, 262
odpowiedź, 330opcja, Patrz ustawienie
operacje CRUD, 253operator ||, 277oprogramowanie pośredniczące, 28, 67, 108, 165, 319
compression, 72Connect, 331cookie-parser, 77, 123csurf, 79errorhandler, 82express.static(), 80express-session, 77inne, 88method-override, 82morgan, 74najważniejsze, 71popularne, 331response-time, 83serve-favicon, 84serve-index, 85static, 335urlencoded, 76vhost, 87
Ppakiet npm, 71parametry, 101pierwsza aplikacja, 35plik
.env, 268, 274, 309app.js, 41, 83, 237application.js, 292auth.js, 280cluster.js, 190favicon.ico, 88hello.js, 38index.jade, 133index.js, 168, 280lorem-ipsum.html, 96main.js, 284Makefile, 274, 308, 309package.json, 32, 118, 274posts.js, 295procfile, 274readme.md, 274seed-script.js, 269server.js, 274stream-express-req.js, 178stream-http-req.js, 177users.js, 287, 292
Poleć książkęKup książkę
SKOROWIDZ
341
pliki*.styl, 192CSS, 226JSON, 173
polecenia generatora, 39polecenie
node app, 81node cluster, 189npm init, 30
połączenie z bazą danych, 27, 271potokowanie strumienia odpowiedzi, 176powiadomienia e-mail, 275problemy, 163procedury obsługi żądania, 113projekty typu open source, 267przetwarzanie uprawnień, 197
RRedis, 181renderowanie, 91repozytorium GitHub, 267REST, 110routing, 108rozwiązywanie problemów, 163
SSails.js, 215Sass, 193SendGrid, 268, 269serwer
MongoDB, 272REST, 253
silnik szablonów, 73, 91, 99Blade, 98EJS, 97Haml.js, 97Haml-Coffee, 98Handlebars.js, 97Jade, 97Swig, 98Whiskers, 98
skróty nagłówków żądania, 330skrypt seed-script.js, 269Socket.IO, 203Static, 331sterownik MongoDB, 171
strukturaaplikacji, 41, 274CRUD, 254
strumienie, 148, 175strumieniowanie obrazu, 149style CSS, 335Stylus, 191, 330sygnatury procedury obsługi, 330szablon
index.jade, 246layout.jade, 246tasks.jade, 246tasks_completed.jade, 246
szyfrowanie haseł, 275
ścieżka dostępu, 69środowiska, 62
TTDD, test-driven development, 253testy, 253, 255
Mocha, 307TDD, 307
token, 281, 290trasy, 166, 242, 274, 279, 329tworzenie egzemplarza, 27typy danych Mongoose, 301
Uukośniki na końcu, 111uruchamianie
aplikacji, 28, 155, 207HackHall, 268serwera MongoDB, 272usług sieciowych, 197
usprawnienie aplikacji, 38ustawienia niestandardowe, 53ustawienie
case sensitive routing, 58jsonp callback name, 56query parser, 61strict routing, 59subdomain offset, 62view cache, 54
Poleć książkęKup książkę
SKOROWIDZ
342
ustawienieview engine, 55views, 55x-powered-by, 60trust proxy, 56
uwierzytelnianie, 184OAuth, 279
użyciebaz danych, 171biblioteki consolidate, 98domeny, 212klastrów, 187module.exports, 170silników szablonów, 92Socket.IO, 203
Wwersja generatora, 40weryfikacja danych wejściowych, 199wielowątkowość, 187właściwość
app.mountpath, 156req.db.Post, 296
wtyczka findOrCreate, 305wyrażenie regularne, 36
wyświetlaniegalerii, 229komunikatów, 37
wzorce uwierzytelniania, 184
Zzadania, 334zależności, 259
firm trzecich, 27zastosowanie oprogramowania pośredniczącego, 68zdarzenie receive, 205zerowanie zadań, 334zmienna
__dirname, 169env, 54
zmienna środowiskowa, 175process.env.PORT, 277
żądanie, 329DELETE, 255GET, 255POST, 255PUT, 255, 262
Poleć książkęKup książkę