Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Building web apps with Express
Search
Andy Appleton
February 06, 2013
Technology
4
460
Building web apps with Express
An introduction to the Express web framework for Node.js
Andy Appleton
February 06, 2013
Tweet
Share
More Decks by Andy Appleton
See All by Andy Appleton
Done is better than perfect
appltn
0
480
Rage against the state machine
appltn
1
390
Modular UI with (Angular || Ember)
appltn
0
100
The Modern JavaScript Application
appltn
5
540
Object Creation Pattern Performance
appltn
1
670
Introducing Mint Source
appltn
1
380
Other Decks in Technology
See All in Technology
LayerXにおけるLLMプロダクト開発の今までとこれから
layerx
PRO
4
760
認知症フレンドリーテックとスタックチャン
naokiuc
0
280
Google Cloud Next '24 Recap(Cloud Run/k8s)
mokocm
0
340
個人のAWSアカウントをマルチ運用してみた
miura55
2
170
LLM開発・活用の舞台裏@2024.04.25
yushin_n
3
1.3k
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
150
How to do well in consulting–Balkan Ruby 2024
irinanazarova
0
160
Handling focus in 2024
tahia910
0
240
TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線 (Svelte)
baseballyama
2
600
非同期推論システムによるコスト削減と信頼性向上
koki_nishihara
1
370
【基本】データベース設計
oracle4engineer
PRO
2
200
生産性向上チームの紹介
cybozuinsideout
PRO
1
930
Featured
See All Featured
The Invisible Side of Design
smashingmag
294
49k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Agile that works and the tools we love
rasmusluckow
325
20k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
Documentation Writing (for coders)
carmenintech
60
4k
Adopting Sorbet at Scale
ufuk
69
8.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
14
8.3k
Music & Morning Musume
bryan
41
5.6k
Designing with Data
zakiwarfel
96
4.8k
Why Our Code Smells
bkeepers
PRO
331
56k
Atom: Resistance is Futile
akmur
260
25k
Statistics for Hackers
jakevdp
790
220k
Transcript
Building web apps with Express Andy Appleton @appltn http://appleton.me
Express is a simple web application framework http://expressjs.com/
...built on Connect, the middleware framework http://www.senchalabs.org/connect/
Connect provides a bunch of handy utilities for dealing with
HTTP requests
var app = connect() .use(connect.logger('dev')) .use(connect.static('public')) .use(function(req, res){ res.end('hello world\n');
}) .listen(3000);
But anyway, Express
$ npm install -g express Install express globally
$ npm install -g express Init a new express app
in ./awesome-demo $ express awesome-demo
$ npm install -g express Install the app’s dependencies with
npm $ express awesome-demo $ cd awesome-demo && npm install
$ npm install -g express Run it! $ express awesome-demo
$ cd awesome-demo && npm install $ node app.js >> Express server listening on port 3000
None
None
var express = require('express'); ... var app = express();
// Get & set an app property app.set('name', 'value'); //
Use a middleware function app.use(myMiddlewareFunction()); // Respond to an HTTP request app.get('/path', callbackFn); app.post('/path', callbackFn); app.put('/path', callbackFn); // ...etc
Routing
app.get('/', routes.index); app.get('/users', routes.users.index); app.get('/users/:id', routes.users.show); app.post('/users/:id', routes.users.create); app.put('/users/:id', routes.users.update);
Handling a route // /users routes.index = function(req, res) {
res.send('Hello Bath'); }; // /users/:id routes.users.show = function(req, res) { var userId = req.params.id; res.send('Your userId is ' + userId); };
Rendering HTML templates
Rendering HTML templates routes.index = function(req, res) { res.render('index'); };
routes.users.show = function(req, res) { var userId = req.params.id; res.render('users/show', { id: userId }); };
doctype 5 html head ... body block content extends layout
block content h1= title p Welcome to #{title} ./views/layout.jade ./views/index.jade
"dependencies": { ... "hbs": "*" } ./package.json $ npm install
./app.js app.configure(function(){ ... app.set('view engine', 'hbs'); ... }); app.configure(function(){ ... app.set('view engine', 'jade'); ... });
<!DOCTYPE html> <html> <head>...</head> <body> {{{body}}} </body> </html> ./views/layout.hbs ./views/index.hbs
<h1>{{title}}</h1> <p>Welcome to {{title}}</p>
routes.index = function(req, res) { res.render('index'); }; routes.users.show = function(req,
res) { var userId = req.params.id; res.render('users/show', { id: userId }); };
Sessions
// must come before router app.use(express.cookieParser('secret')); app.use(express.session()); app.use(app.router); Session support
is middleware
routes.users.show = function(req, res) { req.session.id || (req.session.id = 1);
res.render('users/show', { id: req.session.id }); };
Andy Appleton @appltn http://appleton.me