初识node.js express和koa框架

155 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情\

image.png express、koa框架都基于node.js开发,所有的node.js框架都基于中间件来实现的,中间件的执行方式都与洋葱模型有关系,各个框架的区别也集中在洋葱模型的执行方式上

洋葱模型

洋葱模型,就像洋葱一样,一层包裹一层,而nodejs框架的执行就像是中间穿过洋葱的一条线,而每一层洋葱皮就代表一个中间件,进入时穿过多少层,出来时还得穿出多少层,具有先进后出(栈)的特点 image.png 穿进来时:middleware1 -> middleware2 -> middleware3 -> center
穿出来时:center -> middleware3 -> middleware2 -> middleware1

  • 穿进来时,中间件的切换主要靠next()关键字来实现的
  • 穿出来时,则是按中间件执行完毕后,按照原路径返回去

Express框架

//样例demo
const app = require("express")();
app.use((req,res,next)=>{
res.status(200).send("<h1>headers ...</h1>");
});
app.listen(3001);

Express 是基于Node.js 平台,快速、开放、极简的 Web 开发框架

使用 Express,我们可以方便、快速的创建 Web 网站的服务器或API接口的服务器。

Koa框架

//样例demo
const Koa = require('koa');
const app = new Koa();
app.use(ctx => {
ctx.body = 'Hello Koa';
});
app.listen(3000);

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

Express和koa的区别

  1. Express 中间件的链是基于回调的(callback),而 Koa 的则是基于 Promise 的(async)。
  2. koa@2采用了es6的语法实现,继承了Emitter类,具体信息可以参考Emitter说明。这就意味着koa@2只能在es6以上的环境下运行,低版本可以考虑使用koa@1.x。而express则比较传统,使用的是function的形式导出。

----参考链接--

express与koa对比 - ygunoil - 博客园 (cnblogs.com)