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
490
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
560
Rage against the state machine
appltn
1
470
Modular UI with (Angular || Ember)
appltn
0
110
The Modern JavaScript Application
appltn
5
610
Object Creation Pattern Performance
appltn
1
770
Introducing Mint Source
appltn
1
390
Other Decks in Technology
See All in Technology
LLMの開発と社会実装の今と未来 / AI Builders' Community (ABC) vol.2
pfn
PRO
1
120
とあるEdTechベンチャーのシステム構成こだわりN選 / edtech-system
gotok365
3
160
Azure & DevSecOps
kkamegawa
2
180
250510 StepFunctionのテスト自動化始めました vol.1
east_takumi
1
210
問 1:以下のコンパイラを証明せよ(予告編) #kernelvm / Kernel VM Study Kansai 11th
ytaka23
3
480
RubyKaigi NOC 近況 2025
sorah
1
730
Part2 GitHub Copilotってなんだろう
tomokusaba
2
750
Part1 GitHubってなんだろう?その2
tomokusaba
2
720
Azure Maps Visual in PowerBIで分析しよう
nakasho
0
210
使えるデータ基盤を作る技術選定の秘訣 / selecting-the-right-data-technology
pei0804
5
850
Previewでもここまで追える! Azure AI Foundryで始めるLLMトレース
tomodo_ysys
2
630
Новые мапы в Go. Вова Марунин, Clatch, МТС
lamodatech
0
2k
Featured
See All Featured
Faster Mobile Websites
deanohume
307
31k
Embracing the Ebb and Flow
colly
85
4.7k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
2.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
5
600
The Invisible Side of Design
smashingmag
299
50k
Done Done
chrislema
184
16k
Side Projects
sachag
453
42k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
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