50行 koa-compose,面试常考的中间件原理原来这么简单?
大家好,我是若川。源码共读《1个月,200+人,一起读了4周源码》 活动第五期是学习 koa 源码的整体架构,浅析koa洋葱模型原理和co原理中的
koa-compose源码原理
,阅读不到50行的koa-compose
源码。
这篇是izjing小哥哥
的投稿。izjing小哥哥
的笔记截图非常细致,可谓是手把手教如何通过测试用例调试学源码。文末izjing小哥哥
也对比了参与源码共读
前后的收获。文章不长,建议收藏,自己动手调试学习。
不知不觉,源码共读已经进行了一个多月,很多小伙伴表示对面试和工作很有帮助,学完立马能用。如果你也感兴趣可以加我微信
ruochuan12
参加。
开启傻瓜式调试模式
1. 下载项目
git clone https://github.com/lxchuan12/koa-compose-analysis.git
cd koa-compose/compose
npm i
2. 找到并打开test.js
3. 在test.js中第45行打一个断点
点击红框位置,你会发现有一个红点出现了,这样就打好断点了 为什么要在这里打断点,因为compose函数在这里调用了,我们想看看这个 函数里面究竟做了什么
4. 找到package.json
5. 你惊喜的发现,竟然跳到你打断点的哪里了
我是谁,我要干嘛,我干脆进去看看吧!(根据箭头指示进入函数)
6. compose干了什么
这时你发现进入到了函数内部,看到传进来的参数是什么后 你狂按下一步(箭头2标记的单步跳过,快捷键F10)
7. 遇到循环了,太烦了,一直点一直循环,我该怎么办?
8. 咦,咋又回去了,我是谁我要干嘛?
9. 这下对劲了,我懂了,我会了,我知道要干嘛了
10. dispatch解读
川哥举办的源码调试给我带来了什么?
开始尝试写笔记
源码我都懂,让我说出来或者写出来,蒙了
更注重细节
以前看源码就囫囵吞枣的过一遍
更注重应用场景
以前:原来这个方法是这样实现的啊
现在:看下测试用例,都是怎么使用的,某个判断是为了解决什么问题
总结
是一个老手,那么现在川哥给了你一个交流的平台,去温故而知新。
是一个新手,千里之行始于足下,有群里川哥和大佬们的帮助,勇敢迈出第一步。
写笔记真是一个令人头疼的东西。
最近组建了一个江西人的前端交流群,如果你是江西人可以加我微信 ruochuan12 私信 江西 拉你进群。
推荐阅读
1个月,200+人,一起读了4周源码
我读源码的经历
老姚浅谈:怎么学JavaScript?
我在阿里招前端,该怎么帮你(可进面试群)
················· 若川简介 ·················
你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》多篇,在知乎、掘金收获超百万阅读。
从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。
同时,活跃在知乎@若川,掘金@若川。致力于分享前端开发经验,愿景:帮助5年内前端人走向前列。
识别上方二维码加我微信、拉你进源码共读群
今日话题
略。欢迎分享、收藏、点赞、在看我的公众号文章~
50行 koa-compose,面试常考的中间件原理原来这么简单?相关推荐
- JAVA面试常考系列八
转载自 JAVA面试常考系列八 题目一 JDBC是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系 ...
- JAVA面试常考系列五
转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序 ...
- ❤️40条软件测试面试常考题目总结(附答案解析)【建议收藏】❤️
40条软件测试面试常考题目总结,话不多说上干货~ (附答案解析) 1 开发犯低级错误怎么办? 开发首先要规范好编码,出低级错时不要指责,内心指出错误.让他们自己进行测试,反思找出错误. 2 你进行过哪 ...
- Callable和Runnable的区别(面试常考),看完就懂
Callable和Runnable的区别(面试常考),看完就懂 Callable 接口 测试类 Runnable 接口 测试类 两者的区别 补充Executor框架 Callable 接口 publi ...
- C语言指针水平等级测试(面试常考)
C语言指针水平等级测试(面试常考) 做前提醒: 1.不要恼羞成怒!不要恼羞成怒!不要恼羞成怒! 2.不是题很离谱,不实用,而是你对指针并不了解! 3.注释我写的很清楚,不懂就慢慢看,好好理解! //指 ...
- PHP面试常考内容之Memcache和Redis(2)
你好,是我琉忆. 继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读. 本周(2019.2-18至2-2 ...
- PHP面试常考内容之面向对象(3)
PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容. 继上一篇"PHP面试常考内容之面向对象(2)"发表后,今天更新面向对象的最后一篇(3).需要(1),( ...
- JAVA面试常考系列十
转载自 JAVA面试常考系列十 题目一 Servlet是什么? Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序 ...
- JAVA面试常考系列十一
转载自 JAVA面试常考系列十一 题目一 什么是JSP? JSP(Java Server Page)是一个文本文档,是一种将静态内容和动态生成内容混合在一起的技术. JSP包含两种类型的文本:静态数据 ...
最新文章
- iphone8p百度云认证_探秘百度数据工厂Pingo的多存储后端数据联合查询技术
- 基础知识--:before伪元素和:after伪元素
- 学习Linux计划书
- CentOS-7.2部署OpenLDAP服务器以及客户端
- JavaScript document write String content writes nothing o
- 判断一颗二叉树是否为二叉搜索树(Validate Binary Search Tree)
- 第三课 Makefile文件的制作(上)
- position 的属性值
- JS中的基本数据类型与引用数据类型
- 微信测试号开发 服务器 token验证
- 年会尽头是闲鱼!超11万人在闲鱼转卖年会奖品
- gui python qt 绘图_最全整理!计算、可视化、机器学习等8大领域38个常用Python库...
- Nuget包管理工具(程序包控制台执行语句)
- CCLayer中Touch事件(Standard Touch Delegate Targeted Touch Delegate)
- 修改默认启动操作系统
- 【Storm总结-6】Twitter Storm: DRPC简介
- Android的富文本功能
- Windows DLL 注入技术
- SSH连接工具-Tabby
- c# 使用NOPI 操作Excel
热门文章
- 计算机应用 范文,计算机应用基础(范文).doc
- Windows10系统Python2.7通过Swig调用C++过程
- Docker03 Docker基础知识、Docker实战
- HALCON 1D Measure 算子初识
- mysql中的blob和text区别
- 学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题
- 关于strassen矩阵乘法的矩阵大小不是2^k的形式时,时间复杂度是否还是比朴素算法好的看法...
- JS学习记录(BOM部分)
- [转] 比特币从“不了解”到“被误解”——详解区块链技术
- GMF学习系列(二) 一些知识点(续2)