Express 的简单实现
首先 我们看看 express 是如何使用的
express 的基本使用expres() 返回了一个函数,上面具有 get 和 listen 方法。
步骤1listen 是原生的 http.createServer 返回的方法
原生 步骤2接下来处理 get 请求,这里先介绍一个概念:中间件
中间件就是处理 HTTP 请求的 函数,用来完成各种特定的任务,比如 检查用户是否登录、检查用户是否有权限访问等, 它的特点是:
一个中间件处理完请求 和 响应可以把相应数据在传递给下一个中间件;
回调函数的 next 参数,表示接受其他中间件的调用,函数体中的 next() 表示将请求数据继续传递;
可以根据路径来区分返回执行不同的中间件。
中间件的路径只要匹配前缀就可以了, 比如 /user, 可以匹配 /user/*
路由get、post这些东西,就是中间件,中间件讲究顺序,匹配上第一个之后,就不会往后匹配了。next函数才能够继续往后匹配。
app.use也是一个中间件,与get,post不同的是,它的网址不是精确匹配的
当你不写路径的时候,实际上就相当于"/",就是所有网址
只能匹配一个,要写next参数,才会往下匹配
同理, 我们可以处理 post,use 等等 各种请求,这里还没有涉及中间件的执行 和 多个 请求的处理。
1 2 3 4以上简单实现了一个 express,很多方法 和 逻辑 都没处理,粗略的了解下 express 是如何 处理 中间件的。
需要注意的是: express 的中间件机制 和 koa 的不同, koa 采用的是洋葱圈模型 ,而 express 中间件是 串行执行的(后面会写一篇关于 express 中间件的)。
网友评论