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
Comparison nodejs frameworks using Polls API
Search
Ladislav Prskavec
May 23, 2015
Technology
0
80
Comparison nodejs frameworks using Polls API
3 NodeJS implementations of Polls API.
All implementations are tested by Dredd.
Ladislav Prskavec
May 23, 2015
Tweet
Share
More Decks by Ladislav Prskavec
See All by Ladislav Prskavec
From Small Terraform Projects to Terralith
abtris
0
76
Build nice terminal UI with Bubble Tea
abtris
1
280
How to make own observability solution?
abtris
0
220
OpenTelemetry as best way how to instrument your CICD pipeline
abtris
0
270
Prague Go Meetup #12 Introductions
abtris
0
64
How we run stateful services for customers in Kubernetes
abtris
0
390
Go Release 1.20
abtris
0
220
CI pipelines should be code! Dagger Go SDK
abtris
1
350
Getting started with fuzzing
abtris
0
330
Other Decks in Technology
See All in Technology
Application Performance Optimisation in Practice (60 mins)
stevejgordon
0
110
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
4
3k
15 years with Rails and DDD (AI Edition)
andrzejkrzywda
0
150
Mosaic AI Gatewayでコーディングエージェントを配るための運用Tips / JEDAI 2026 新春 Meetup! AIコーディング特集
genda
0
140
3分でわかる!新機能 AWS Transform custom
sato4mi
1
310
AWS Devops Agent ~ 自動調査とSlack統合をやってみた! ~
kubomasataka
3
320
MySQLのJSON機能の活用術
ikomachi226
0
130
いよいよ仕事を奪われそうな波が来たぜ
kazzpapa3
3
340
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
120
無ければ作る! バイブコーディングで作ったものを一気に紹介
tatsuya1970
0
110
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
1.8k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
420
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Exploring anti-patterns in Rails
aemeredith
2
240
Accessibility Awareness
sabderemane
0
47
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.9k
Test your architecture with Archunit
thirion
1
2.1k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
190
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
130
Transcript
Comparison NodeJS frameworks
[email protected]
@abtris www.praguejs.cz @jsconfcz
None
express koa hapi github stars 18861 6174 4228 contributors 178
59 116 downloads / w 525941 8769 11966 stack overflow 14853 138 66 npm -ls | wc -l 48 36 48 file size 3896 2000 50392
http://docs.nodeschoolhk.apiary.io/
https://github.com/apiaryio/dredd
Init server
"express": "^4.12.3" (function() { 'use strict'; var express = require('express');
var app = express(); app.set('json spaces', 2); .... var server = app.listen(3003, function() { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); }());
"hapi": "^8.4.0" var Hapi = require('hapi'); var server = new
Hapi.Server(); server.connection({port: 3001}); .... // Start the server server.start(function() { console.log('Server running at:', server.info.uri); });
"koa": "^0.20.0" "use strict"; var koa = require('koa'); var route
= require('koa-route'); var app = koa(); require('koa-qs')(app); .... app.listen(3000);
Routing
"express": "^4.12.3" app.get('/questions/:question_id', function(req, res) { res.status(200).json({"question":"Favourite programming language?"...}]}); });
app.post('/questions/:question_id/choices/:choice_id', function(req, res) { res.set('Location', '/questions/' + req.params.question_id); res.status(201).send(''); });
"hapi": "^8.4.0" server.route({ method: 'GET', path: '/questions/{question_id}', handler: function(request, reply)
{ reply({"question":"Favourite programming language?"...}); } }); server.route({ method: 'POST', path: '/questions/{question_id}/choices/{choice_id}', handler: function(request, reply) { reply().code(201).header('Location', '/questions/' + request.params.question_id); } });
"koa": "^0.20.0" app.use(route.get('/questions/:question_id', function *(question_id) { this.body = {"question":"Favourite programming
language?"...}; })); app.use(route.post('/questions/:question_id/choices/:choice_id', function *(question_id, choice_id) { this.status = 201; this.set('Location', '/questions/' + question_id); this.body = ''; }));
Testing • Dredd var hooks = require('hooks'); var before =
hooks.before; hooks.beforeEach(function(transaction) { if (transaction.expected.headers['Content-Type'] == 'application/json') { transaction.expected.headers['Content-Type'] = 'application/json; charset=utf-8'; } });
Github repository of project: https://github.com/abtris/nodeschool-hk-2015-05-23 Ideas how project improve: •
you can fork and contribute • you can try add 404, 500 pages • you can try persistent layer using Redis