[{"data":1,"prerenderedAt":258},["ShallowReactive",2],{"term-k\u002Fkoa":3,"related-k\u002Fkoa":244},{"id":4,"title":5,"acronym":6,"body":7,"category":226,"description":227,"difficulty":228,"extension":229,"letter":230,"meta":231,"navigation":105,"path":232,"related":233,"seo":238,"sitemap":239,"stem":242,"subcategory":6,"__hash__":243},"terms\u002Fterms\u002Fk\u002Fkoa.md","Koa",null,{"type":8,"value":9,"toc":220},"minimark",[10,15,19,23,26,30,209,213,216],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Koa is Express's slimmer, more modern sibling — made by the same team. It's lighter with better async\u002Fawait support out of the box. If Express is a practical family car, Koa is a sportier version with less chrome. Less popular than Express, but some teams prefer it.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"Koa is a minimal Node.js web framework developed by the Express team as a modern replacement. It uses async\u002Fawait natively (no callbacks), has a smaller footprint than Express, and provides greater middleware composability. It doesn't bundle any middleware by default.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const Koa = require('koa');\nconst app = new Koa();\n\napp.use(async (ctx) => {\n  ctx.body = { message: 'Hello World' };\n});\n\napp.listen(3000);\n","javascript","",[38,39,40,79,100,107,139,174,184,189],"code",{"__ignoreMap":36},[41,42,45,49,53,57,61,64,67,71,73,76],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"spNyl","const",[41,50,52],{"class":51},"sTEyZ"," Koa ",[41,54,56],{"class":55},"sMK4o","=",[41,58,60],{"class":59},"s2Zo4"," require",[41,62,63],{"class":51},"(",[41,65,66],{"class":55},"'",[41,68,70],{"class":69},"sfazB","koa",[41,72,66],{"class":55},[41,74,75],{"class":51},")",[41,77,78],{"class":55},";\n",[41,80,82,84,87,89,92,95,98],{"class":43,"line":81},2,[41,83,48],{"class":47},[41,85,86],{"class":51}," app ",[41,88,56],{"class":55},[41,90,91],{"class":55}," new",[41,93,94],{"class":59}," Koa",[41,96,97],{"class":51},"()",[41,99,78],{"class":55},[41,101,103],{"class":43,"line":102},3,[41,104,106],{"emptyLinePlaceholder":105},true,"\n",[41,108,110,113,116,119,121,124,127,131,133,136],{"class":43,"line":109},4,[41,111,112],{"class":51},"app",[41,114,115],{"class":55},".",[41,117,118],{"class":59},"use",[41,120,63],{"class":51},[41,122,123],{"class":47},"async",[41,125,126],{"class":55}," (",[41,128,130],{"class":129},"sHdIc","ctx",[41,132,75],{"class":55},[41,134,135],{"class":47}," =>",[41,137,138],{"class":55}," {\n",[41,140,142,145,147,150,153,156,160,163,166,169,171],{"class":43,"line":141},5,[41,143,144],{"class":51},"  ctx",[41,146,115],{"class":55},[41,148,149],{"class":51},"body",[41,151,152],{"class":55}," =",[41,154,155],{"class":55}," {",[41,157,159],{"class":158},"swJcz"," message",[41,161,162],{"class":55},":",[41,164,165],{"class":55}," '",[41,167,168],{"class":69},"Hello World",[41,170,66],{"class":55},[41,172,173],{"class":55}," };\n",[41,175,177,180,182],{"class":43,"line":176},6,[41,178,179],{"class":55},"}",[41,181,75],{"class":51},[41,183,78],{"class":55},[41,185,187],{"class":43,"line":186},7,[41,188,106],{"emptyLinePlaceholder":105},[41,190,192,194,196,199,201,205,207],{"class":43,"line":191},8,[41,193,112],{"class":51},[41,195,115],{"class":55},[41,197,198],{"class":59},"listen",[41,200,63],{"class":51},[41,202,204],{"class":203},"sbssI","3000",[41,206,75],{"class":51},[41,208,78],{"class":55},[11,210,212],{"id":211},"when-youll-hear-this","When You'll Hear This",[16,214,215],{},"\"Koa's async middleware is cleaner than Express callbacks.\" \u002F \"Koa has less magic than Express — everything is explicit.\"",[217,218,219],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":81,"depth":81,"links":221},[222,223,224,225],{"id":13,"depth":81,"text":14},{"id":21,"depth":81,"text":22},{"id":28,"depth":81,"text":29},{"id":211,"depth":81,"text":212},"backend","Koa is Express's slimmer, more modern sibling — made by the same team. It's lighter with better async\u002Fawait support out of the box.","intermediate","md","k",{},"\u002Fterms\u002Fk\u002Fkoa",[234,235,236,237],"Node.js","Express","Hono","Middleware",{"title":5,"description":227},{"changefreq":240,"priority":241},"weekly",0.7,"terms\u002Fk\u002Fkoa","uzyb3NqEgFDGk6kPxFgB2MvQZHoIq0FLUpdyDYW1gHE",[245,249,252,255],{"title":235,"path":246,"acronym":6,"category":226,"difficulty":247,"description":248},"\u002Fterms\u002Fe\u002Fexpress","beginner","Express is the most popular framework for building Node.js backends.",{"title":236,"path":250,"acronym":6,"category":226,"difficulty":228,"description":251},"\u002Fterms\u002Fh\u002Fhono","Hono is the new kid on the block for Node.js backends — ultra-fast, tiny, and designed to work on edge runtimes (Cloudflare Workers, Deno).",{"title":237,"path":253,"acronym":6,"category":226,"difficulty":228,"description":254},"\u002Fterms\u002Fm\u002Fmiddleware","Middleware is like a security checkpoint at an airport.",{"title":234,"path":256,"acronym":6,"category":226,"difficulty":247,"description":257},"\u002Fterms\u002Fn\u002Fnode-js","Node.js lets you run JavaScript on the server — not just in the browser. Before Node.js, JavaScript was trapped in the browser.",1776518290904]