实现你的Express

在第一第二节中,我们讲述了不少有关于 Express 的用法,但是对它的细节或原理避而不谈。那么今天我们就来实现自己的一个 Express ,加深对 Express 的理解。不力求完全实现 Express 的所有代码,但求实现它的核心逻辑。

准备工作

那我们先来创建一个 my-express 文件夹,npm init添入一些基本信息。再来捋一捋我们的需求,一步一步地去实现。

•可以解析不同路径的路由•中间件逻辑处理•模板文件处理,手写模板引擎•处理静态文件访问逻辑

有了这几点之后,我们就可以分步去解决这个问题了。

路由处理

首先抛开 Express 不谈,我们先来看看 Node.js 是如何创建一个服务器的,毕竟我们是基于 Node.js 来做一些上层的封装。

http.createServer()

Node.js中创建一个服务器十分简单,只有下面寥寥数行代码:

var http = require('http');http.createServer(function (request, response) { response.end('Hello World');}).listen(3000);

创建完一个服务器后,我们应该处理不同路由的逻辑。新建一个express.js文件,主要编写我们的源码逻辑,再新建一个app.js,主要编写业务测试逻辑。

•创建一个监听函数 app ,在这个监听函数中会有两个参数 req 和 res ,这两个参数都是 createServer 提供给我们的,用于处理请求的逻辑参数和返回的逻辑参数•app.js 中调用一下 listen 方法,咱们的服务器就跑起来了

//express.jsconst http = require('http')const url = require('url')
function express() { function app(req, res) { } app.listen = function () { let server = http.createServer(app) server.listen(...arguments) } return app}module.exports = express
//app.jsvar express = require('./express')var app = express()
app.listen(3000)

解析请求方法和路径

我们可以通过如下方法来获取请求的方法和路径

let _method = req.method.toLowerCase()let { pathname} = url.parse(req.url, true)

中间件

在没有路由分区之前, Express 可以通过如下方式来注册一个路由,即用中间件方法use

app.use('/user/get',function(req,res,next){
})

实现这种方式之前,思考一下我们在开发的时候,所有的路由都是已经写好的,然后程序跑起来的时候再根据方法与路径来匹配对应的路由。所以app.use应当是一个注册的方法,它可以注册路由,也可以注册中间件,而广义来说 Express 中的路由就是中间件的一种。

图片[1]-实现你的Express-山海云端论坛
图片[2]-实现你的Express-山海云端论坛
图片[3]-实现你的Express-山海云端论坛
图片[4]-实现你的Express-山海云端论坛
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容