Skip to content

Express源码解读01-依赖包解读

1. 为什么要先了解依赖包

知道一个框架或者库在开发的时候用了那些第三方插件,对于看源码来说至关重要,可以减少读源码的过程中经常被一些不知道作用的引入卡住而分散思路

下面整理的express这个框架在开发中用到的一些插件的大体作用,虽然不能详细的知道某个插件的具体使用方法,但是对于下一步我们了解express主要实现来说够用了

2. Express中的依赖

1) 生产依赖

  • accepts: 解析请求头,得到用户希望返回的content-type等类型
  • array-flatten: 展平嵌套数组
  • body-parser: 中间件,将请求里面的body挂载到req.body上
  • content-disposition: 创建和解析 HTTP Content-Disposition头
  • content-type: 根据 RFC 7231 创建和解析 HTTP Content-Type 头
  • cookie: 处理cookie
  • cookie-signature: 生成和失效cookie
  • debug: dubug模块暴露一个函数,返回一个修饰过的console.error函数: https://blog.csdn.net/u014711690/article/details/104905611/
  • depd: 用于提醒用户注意代码库中所有不推荐使用的API等信息
  • encodeurl: 将 URL 编码为百分比编码形式,不包括已编码的序列
  • escape-html: 将字符转义为html认识的编码: > --> >
  • etag: 生成用于 HTTP 响应的 HTTP ETag(如 RFC 7232 中所定义
  • finalhandler: 调用 Node.js 函数作为响应 HTTP 请求的最后一步。
  • fresh: HTTP 响应新鲜度测试
  • http-errors: 轻松为 Express、Koa、Connect 等创建 HTTP 错误。
  • merge-descriptors: 对象合并
  • methods: 解析或者提供http 动词
  • on-finished: 当 HTTP 请求关闭、完成或出错时执行回调。
  • parseurl: 使用 memoization 解析 URL。memoization是用来缓存函数调用的输出结果,以便减少后续再次调用时的运算,进而加快运算速度的一种优化技术
  • path-to-regexp:将 /user/:name 等路径字符串转换为正则表达式。
  • proxy-addr: 代理请求的地址
  • qs: 一个查询字符串解析和字符串化库,增加了一些安全性。
  • range-parser: 解析请求头中字段信息
  • safe-buffer: 更安全的 Node.js Buffer API
  • send: Send 是一个库,用于将文件系统中的文件作为 http 响应流式传输,支持部分响应(范围)、条件 GET 协商(If-Match、If-Unmodified-Since、If-None-Match、If-Modified-Since),高测试覆盖率和精细事件,可用于在您的应用程序或框架中采取适当的操作。
  • serve-static: 创建一个新的中间件函数以从给定的根目录中提供文件。要提供的文件将通过将 req.url 与提供的根目录组合来确定。当找不到文件时,该模块不会发送 404 响应,而是调用 next() 以继续下一个中间件,从而允许堆叠和回退。
  • setprototypeof: 一个简单的跨平台实现,用于设置实例化对象的原型。支持所有现代浏览器,至少回到 IE8。
  • statuses: 该模块提供了来自几个不同项目的状态代码和消息列表(IANA 状态代码注册表,Node.js 项目,NGINX 项目,Apache HTTP 服务器项目)
  • type-is: 推断请求的内容类型。
  • utils-merge: 将源对象的属性合并到目标对象中。
  • vary: 操作http 头(添加头字段等)

2) 开发依赖

  • after: after函数,在 n 次调用后调用回调
  • connect-redis: connect-redis 为 Express 提供 Redis 会话存储。需要 Redis >= 2.0.0。
  • cookie-parser: 解析 Cookie 标头并使用以 cookie 名称为键的对象填充 req.cookies。或者,您可以通过传递一个秘密字符串来启用签名 cookie 支持,该字符串分配 req.secret 以便其他中间件可以使用它。
  • cookie-session: 简单的基于 cookie 的会话中间件。
  • ejs: ejs模板引擎
  • eslint:
  • express-session: 创建解析session
  • hbs: express中的handlebars.js模板引擎
  • marked: 解析markdown为html
  • method-override: 允许您在客户端不支持的地方使用 HTTP 动词,例如 PUT 或 DELETE。
  • mocha: mocha 是⼀个功能丰富的javascript测试框架,可以运⾏在nodejs和浏览器环境,能够使异步测试变得简单有趣。mocha 串联运⾏测试, 允许灵活和精确地报告结果,同时映射未捕获的异常⽤来纠正测试⽤例。 mocha ⽀持TDD/BDD 的 开发⽅式,结合 should.js/expect/chai/better-assert 断⾔库,能轻松构建各种风格的测试⽤例
  • morgan: node.js 的 HTTP 请求记录器中间件
  • multiparty: 使用内容类型 multipart/form-data 解析 http 请求,也称为文件上传。
  • nyc: nyc 是 Istanbul 的命令行接口,Mocha 是 JavaScript 项目的测试工具,Istanbul 是 JS 测试覆盖率报告的生成工具
  • pbkdf2-password: 从 Mosca 中提取的 Node.js 的简单盐/密码创建。
  • supertest: 主要用于单元测试(这个模块的动机是为测试 HTTP 提供高级抽象,同时仍然允许您下拉到 superagent 提供的低级 API。)
  • vhost: 创建虚拟主机名