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
Hono - Ultrafast web framework for Cloudflare W...
Search
Yusuke Wada
November 26, 2022
Programming
8.7k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hono - Ultrafast web framework for Cloudflare Workers, Deno, Bun, and Node.js
Yusuke Wada 2022.11.26 JSConf JP
Yusuke Wada
November 26, 2022
More Decks by Yusuke Wada
See All by Yusuke Wada
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
2.3k
Webフレームワークの ベンチマークについて
yusukebe
0
240
AI時代のUIはどこへ行く?その2!
yusukebe
22
8.5k
Dynamic Workersについて
yusukebe
2
780
飯MCP
yusukebe
0
720
へんな働き方
yusukebe
6
3.1k
Cap'n Webについて
yusukebe
0
390
OSS開発者の憂鬱
yusukebe
18
36k
r2-image-worker
yusukebe
1
300
Other Decks in Programming
See All in Programming
Deep dive into the select statement (GopherCon UK)
jespino
0
150
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
270
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.8k
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
160
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
420
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
230
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
580
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
200
VibeCodingからAgenticWorkflowへ
starfish719
0
940
プロポーザルを書いてもらう
pvcresin
0
590
承認済みなのに差戻しできてしまうバグ、型で潰せます
shinchit
0
120
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
370
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
560
The Pragmatic Product Professional
lauravandoore
37
7.4k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Navigating Weather and Climate Data
rabernat
0
490
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
220
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
180
Balancing Empowerment & Direction
lara
6
1.3k
The SEO identity crisis: Don't let AI make you average
varn
0
540
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
880
Transcript
Yusuke Wada 2022.11.26 JSConf JP Hono Ultrafast web framework for
Cloud fl are Workers, Deno, Bun, and Node.js
Me • Yusuke Wada • Supervisor at TravelBook Inc. •
Web developer, Web framework developer • https://yusukebe.com/ • https://github.com/yusukebe 2
Today's topics • Core concepts of Hono 1. Multi-runtimes 2.
Ultrafast 3. Middleware 4. Experience 3
Hono in 1min. 4
Initial Commit • 2021-12-15 5
Star History 6
Who is using Hono • cdnjs API Server • Drivly
- Commerce infrastructure for the automotive industry • Ultra - Zero-Legacy Deno/React Suspense SSR Framework • Deno cli/bench/http 7
Workers Launchpad 8 ref: https://blog.cloud fl are.com/launchpad-fall-22/
Deno benchmarks 9 https://deno.land/benchmarks
Concept 1 Multi-runtimes 10
Hono works on... • Cloud fl are Workers / workerd
• Vercel Edge Runtime • Fastly Compute@Edge • Deno • Bun • Node.js • and more... 11
The same code runs on all platforms 12
Cloudflare Workers and Bun
Fastly Compute@Edge and Vercel Edge Runtime
Deno
Node.js
Thanks to Web standards • Zero-dependencies / No poly fi
ll • Web-interoperable Runtimes will be powered by WinterCG 17
Cloudflare Workers 18 ref: https://developers.cloud fl are.com/workers/runtime-apis/
Deno 19 ref: https://deno.land/
[email protected]
/runtime/web_platform_apis
Bun 20 ref: https://github.com/oven-sh/bun#Reference
Node.js 21 ref: https://github.com/honojs/node-server • Using `@remix-run/web-fetch`
context.ts 22 Discussion in WinterCG => https://github.com/wintercg/runtime-keys/pull/2
Great 👍 23
Concept 2 Ultrafast 24
Cloudflare Workers 25 ref: https://github.com/honojs/hono/tree/main/benchmarks/handle-event
Deno 26 ref: https://github.com/denosaurs/bench
Bun 27 ref: https://github.com/SaltyAom/bun-http-framework-benchmark
Node.js • Fastify • Reqs/sec 63417.00 5358.22 67487.06 • Express
• Reqs/sec 20709.94 1683.03 23045.34 • Hono with @honojs/node-server • Reqs/sec 32054.95 2642.04 35583.36 28
Node.js - router 29 Decode URI, Handle Query strings Does
not support regexp Does not support regexp
Why so fast? 30
3+1 Routers 1. StaticRouter • Fastest, supports only static routes.
2. RegExpRouter • Faster, supports almost routes. 3. TrieRouter • Slowest, supports all routes. But it's faster than other routers in the world. 31
"Linear" router 32
ref: https://github.com/yusukebe/pico
TrieRouter • Using Trie Tree structure • Support all patterns
34
None
RegExpRouter • Match the route with using one big Regex
made before dispatch. • By @usualoma • https://speakerdeck.com/usualoma/ultrafast-js-router 36
37
StaticRouter • Optimized for static routings • Does not support
dynamic routings such as "path parameters" 38
None
SmartRouter • The default router • Automatically picks the best
router from the three routers. 40 • StaticRouter • RegExpRouter • TrieRouter
Great 👍 41
Concept 3 Middleware 42
Small core • hono.ts • context.ts • compose.ts • request.ts
43 Basic app with Wrangler: Total Upload: 34.15 KiB / gzip: 8.26 KiB
Three types of Middleware • Built-in Middleware - including the
package • Custom Middleware - created by the users • Third-party Middleware - depends on external libraries 44
Built-in Middleware • Basic Auth • Bearer Auth • Cache
• Compress • CORS • Etag • html • JSX • JWT Auth • Logger • Pretty JSON • Serve Static • Validator 45
JSX Middleware 46
Validator Middleware 47
Custom Middleware 48
Third-party Middleware 49 • GraphQL Server • Firebase Auth •
Sentry • tRPC (?) ref: https://github.com/honojs/hono/issues/582
Great 👍 50
Concept 4 Experience 51
TypeScript • Wrangler, Deno, and Bun fi rst-class support TypeScript.
52
Path parameters 53
Validator Middleware 54
Easy to write tests • With `jest-environment-mini fl are` •
We can do test `Request` to `Response` 55
Great 👍 56
Example: Blog 57
import 58
Model 59
Logic 60
JSX 61
GET / 62
POST /post 63
Use cases in the real world 64
With Cloudflare R2 65 • github.com/yusukebe/r2-image-worker • Store and Deliver
images with R2 backend Cloud fl are Workers. ref: https://github.com/yusukebe/r2-image-worker
With Cloudflare D1 66 ref: https://blog.cloud fl are.com/making-static-sites-dynamic-with-cloud fl are-d1/
Cache control 67 ref: https://yusukebe.com/posts/2022/wsh/
Express alternative on Bun 68
Feature plans 69
Ecosystem • For Third-party Middleware • monorepo • API specs
as Types • tRPC like, but integrated 70
API specs as Types 71 ref: https://github.com/honojs/hono/issues/582
And... 72
Going to Standard web framework for Web standards 73
One more thing 74
Pico 75 Pico is ultra-tiny (about 1kB) web framework using
URLPattern. Pico works on Cloud fl are Workers and Deno. Pico is compatible with Hono.
Love 76
Thanks • Thanks to all contributors, all supporters, and all
users!! 77
Try Hono! 78 https://honojs.dev