位置: 编程技术 - 正文

NodeJS学习笔记之Connect中间件模块(二)(nodejs实战)

编辑:rootadmin

推荐整理分享NodeJS学习笔记之Connect中间件模块(二)(nodejs实战),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs基础知识,nodejs实战,nodejs实例教程,nodejs实战教程,nodejs入门,nodejs入门教程,nodejs入门教程,nodejs实战教程,内容如对您有帮助,希望把文章链接给更多的朋友!

一,开篇分析

大家好,今天这篇文章主要是对"Connect"中间件以及相关辅助中间件,做一个源码分析系列,我想上一篇文章大家也看了,

介绍了使用方式及用途,而这篇也是出于本人的兴趣,让读者对其有一个更深入的认识,如在分析阶段有什么不正确的地方,请大家多多指教,

好了!老规矩然我们进入正题。先来看一个例子,结合会用引入分析,如下:

 

  二,逐行分析:

  (1),第一行,引入"connect"模块,通过connect创建一个http|https server,提供http server的所有功能。

    "connect"中间件允许你用多种方式创建"server",   

  那么它是如何做的那,看源码:

  将“createServer”挂载到全局的“exports”上,然后再扩展一个“createServer”属性再次挂载,目的是为了兼容原生的书写形式,

达到了不同方式创建的目的。这也是大家在平时开发中可以借鉴的思想。

  (2),再来看第二行"connect.createServer",做了什么那,看如下源码:

  "HTTPSServer"和"HTTPServer"基本一致,只是"HTTPSServer"封装的https的方法。在"createServer"的时候,同样可以传递进去一系列的中间件,和随后引入的效果是一样的,不过却只能绑定到根目录上。

  (3),继续看第三行"app.use()",做了什么那,看如下源码:  

NodeJS学习笔记之Connect中间件模块(二)(nodejs实战)

  “connect"是原型继承于"http server"的,它会用use到的中间件替换掉server的requestListener。

  通过"connect.use(route, handle)"来对每一个路由添加中间件,这些中间件"handle"会与"route"绑定保存在一个"stack"里面,每次有"request"请求的时候,

  遍历这个堆,找到对应"route"的"handle",执行"handle",如果"handle"最后调用了"next()",就会继续寻找并执行下一个匹配的"handle"。

  通过封装"handle",可以很容易的在"connect"基础上添加更多的"middleware"。

 (4),最后看看"listen()",它做些什么工作那?

    很简单,通过继承底层的Server对象,赋予了"listen"的功能,监听特定端口。

    Server.prototype.__proto__ = http.Server.prototype

 以下是”connect.js“的全部源码,为了节省篇幅,注释已全部删掉,如下图:

  补充一下:

  将"middleware"对象"exports",然后循环定义给"middleware"对象一种方法,这种方法是直接加载 "middleware" 文件夹中的.js文件模块。

利用:"exports.utils.merge(exports, exports.middleware)" 这句话将middleware中的方法直接exports了。

三,总结一下:

   (1),理解源码的设计意图,有助于在应用上得到最大化的收获。

   (2),看源码时,理解流程再去扣语法细节。

   (3),借鉴源码中的巧妙实现思想,但不要过渡设计,为了设计而设计。

   (4),明天继续分析相关中间件,不断更新中 。。。 。。。

NodeJS学习笔记之Connect中间件应用实例 一,开篇分析大家好哦,大熊君又来了,昨天因为有点个人的事没有写博客,今天又出来了一篇,这篇主要是写一个记事本的小应用,前面的文章,我

node.js中的forEach()是同步还是异步呢 node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作。当然,node也提供了同

Node.js事件循环(Event Loop)和线程池详解 Node的事件循环(EventLoop)是它能够处理大并发、高吞吐量的核心。这是最神奇的地方,据此Node.js基本上可以理解成单线程,同时还允许在后台处理任意

标签: nodejs实战

本文链接地址:https://www.jiuchutong.com/biancheng/377962.html 转载请保留说明!

上一篇:Node.js的包详细介绍(node .js)

下一篇:NodeJS学习笔记之Connect中间件应用实例(nodejs.)

  • 个体户转到个人要多少税
  • 坏账准备要写到明细账里面吗
  • 出口退还增值税消费税的,是否退还教育费附加
  • 城镇垃圾处理费的计税依据
  • 暴利税怎么计算
  • 消费税征税范围是什么口诀
  • 个人开票的抬头怎么写
  • 苗木种植发票免增值税吗
  • 成品油跨月发票红字冲销步骤
  • 往来账审计存在问题及建议
  • 接受虚开增值税 经侦立案
  • 刚成立公司没有报表怎么解释
  • 筹建期结转损益吗
  • 网银转账手续费标准
  • 银行已扣社保会计分录怎么做
  • 本月有收入免增值税吗
  • 老会计有多厉害
  • 无法读取金税盘时间版本怎么解决
  • 发票金额与支票数量不符
  • 公司发的现金
  • 民间非营利组织有哪些
  • 营业外收入征企业所得税吗
  • 开了红字发票税额已经缴纳怎么做账?
  • 金融行业信托
  • 汇算清缴时
  • 加装固态后如何分盘
  • 汇算清缴补交的所得税会计分录
  • 国家基建项目规划
  • 固定资产清理应交税费怎么算
  • 无形资产的摊销怎么算
  • 销售已使用过的固定资产增值税税率
  • PHP:eregi_replace()的用法_Regex正则函数
  • php ftp功能
  • phpstorm ftp
  • PHP:oci_get_implicit_resultset()的用法_Oracle函数
  • 企业所得税如何更正申报
  • 进口增值税采集
  • 修改gradle版本
  • 分公司改为子公司的所得税业务处理?
  • yolo改进方法
  • 重置java
  • js生成随机数字和字母组合
  • yii2高级应用之自定义组件实现全局使用图片上传功能的方法
  • 原材料用于在建工程增值税如何处理
  • 小规模工程服务开票几个点
  • 转账收手续费不
  • 留抵税额可以保留几年
  • python 覆盖
  • 其他收益结转到什么账户
  • 有限公司也可以向股东核发股票
  • 代开发票含税价怎么核算为不含税发票?
  • 赠送给客户的礼品税法
  • 个人所得税中的速算扣除数是什么意思
  • 一般纳税人增值税优惠政策2023
  • 小规模纳税人转一般纳税人的条件
  • 嵌入式软件产品应纳税额
  • 什么叫递延收益和其他收益
  • 销售租赁服务税率
  • 增值税发票丢失罚款多少
  • 支付结算办法是部门规章吗
  • 应收账款和应付账款属于什么科目
  • 异地缴纳增值税和附加税的区别
  • 国内旅客运输票据可以抵扣进项税吗
  • 挂靠企业电费如何处理?
  • 合并编制报表主要有哪几种
  • 会计报表的主要构成内容
  • mysql5.7.19 winx64解压缩版安装配置教程
  • mysql 5.7.28安装
  • debian和ubuntu server
  • qdcsfs.exe - qdcsfs是什么进程 有何作用
  • 微软状态
  • Win10 Mobile Build 10586.xx将持续更新 WP8.1用户可直升最新版
  • owmngr.exe - owmngr是什么进程 作用是什么
  • linux系统设置网络
  • opengl gpu编程
  • ie不支持p标签
  • shell脚本中获取日期
  • 智能财税证书含金量
  • 公租房要钱吗
  • 北京市税务局热搜
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设