大家好,我是若川。源码共读《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

image.png

3. 在test.js中第45行打一个断点

点击红框位置,你会发现有一个红点出现了,这样就打好断点了 为什么要在这里打断点,因为compose函数在这里调用了,我们想看看这个 函数里面究竟做了什么

4. 找到package.json

5. 你惊喜的发现,竟然跳到你打断点的哪里了

我是谁,我要干嘛,我干脆进去看看吧!(根据箭头指示进入函数)

6. compose干了什么

这时你发现进入到了函数内部,看到传进来的参数是什么后 你狂按下一步(箭头2标记的单步跳过,快捷键F10)

7. 遇到循环了,太烦了,一直点一直循环,我该怎么办?

image.png

8. 咦,咋又回去了,我是谁我要干嘛?

image.png

9. 这下对劲了,我懂了,我会了,我知道要干嘛了

10. dispatch解读

image.png

川哥举办的源码调试给我带来了什么?

  1. 开始尝试写笔记

    1. 源码我都懂,让我说出来或者写出来,蒙了

  2. 更注重细节

    1. 以前看源码就囫囵吞枣的过一遍

  3. 更注重应用场景

    1. 以前:原来这个方法是这样实现的啊

    2. 现在:看下测试用例,都是怎么使用的,某个判断是为了解决什么问题

总结

  • 是一个老手,那么现在川哥给了你一个交流的平台,去温故而知新。

  • 是一个新手,千里之行始于足下,有群里川哥和大佬们的帮助,勇敢迈出第一步。

  • 写笔记真是一个令人头疼的东西。

最近组建了一个江西人的前端交流群,如果你是江西人可以加我微信 ruochuan12 私信 江西 拉你进群。


推荐阅读

1个月,200+人,一起读了4周源码
我读源码的经历

老姚浅谈:怎么学JavaScript?

我在阿里招前端,该怎么帮你(可进面试群)

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》多篇,在知乎、掘金收获超百万阅读。
从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。
同时,活跃在知乎@若川,掘金@若川。致力于分享前端开发经验,愿景:帮助5年内前端人走向前列。

识别方二维码加我微信、拉你进源码共读

今日话题

略。欢迎分享、收藏、点赞、在看我的公众号文章~

50行 koa-compose,面试常考的中间件原理原来这么简单?相关推荐

  1. JAVA面试常考系列八

    转载自 JAVA面试常考系列八 题目一 JDBC是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系 ...

  2. JAVA面试常考系列五

    转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序 ...

  3. ❤️40条软件测试面试常考题目总结(附答案解析)【建议收藏】❤️

    40条软件测试面试常考题目总结,话不多说上干货~ (附答案解析) 1 开发犯低级错误怎么办? 开发首先要规范好编码,出低级错时不要指责,内心指出错误.让他们自己进行测试,反思找出错误. 2 你进行过哪 ...

  4. Callable和Runnable的区别(面试常考),看完就懂

    Callable和Runnable的区别(面试常考),看完就懂 Callable 接口 测试类 Runnable 接口 测试类 两者的区别 补充Executor框架 Callable 接口 publi ...

  5. C语言指针水平等级测试(面试常考)

    C语言指针水平等级测试(面试常考) 做前提醒: 1.不要恼羞成怒!不要恼羞成怒!不要恼羞成怒! 2.不是题很离谱,不实用,而是你对指针并不了解! 3.注释我写的很清楚,不懂就慢慢看,好好理解! //指 ...

  6. PHP面试常考内容之Memcache和Redis(2)

    你好,是我琉忆. 继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读. 本周(2019.2-18至2-2 ...

  7. PHP面试常考内容之面向对象(3)

    PHP面试专栏正式起更,每周一.三.五更新,提供最好最优质的PHP面试内容. 继上一篇"PHP面试常考内容之面向对象(2)"发表后,今天更新面向对象的最后一篇(3).需要(1),( ...

  8. JAVA面试常考系列十

    转载自 JAVA面试常考系列十 题目一 Servlet是什么? Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序 ...

  9. JAVA面试常考系列十一

    转载自 JAVA面试常考系列十一 题目一 什么是JSP? JSP(Java Server Page)是一个文本文档,是一种将静态内容和动态生成内容混合在一起的技术. JSP包含两种类型的文本:静态数据 ...

最新文章

  1. iphone8p百度云认证_探秘百度数据工厂Pingo的多存储后端数据联合查询技术
  2. 基础知识--:before伪元素和:after伪元素
  3. 学习Linux计划书
  4. CentOS-7.2部署OpenLDAP服务器以及客户端
  5. JavaScript document write String content writes nothing o
  6. 判断一颗二叉树是否为二叉搜索树(Validate Binary Search Tree)
  7. 第三课 Makefile文件的制作(上)
  8. position 的属性值
  9. JS中的基本数据类型与引用数据类型
  10. 微信测试号开发 服务器 token验证
  11. 年会尽头是闲鱼!超11万人在闲鱼转卖年会奖品
  12. gui python qt 绘图_最全整理!计算、可视化、机器学习等8大领域38个常用Python库...
  13. Nuget包管理工具(程序包控制台执行语句)
  14. CCLayer中Touch事件(Standard Touch Delegate Targeted Touch Delegate)
  15. 修改默认启动操作系统
  16. 【Storm总结-6】Twitter Storm: DRPC简介
  17. Android的富文本功能
  18. Windows DLL 注入技术
  19. SSH连接工具-Tabby
  20. c# 使用NOPI 操作Excel

热门文章

  1. 计算机应用 范文,计算机应用基础(范文).doc
  2. Windows10系统Python2.7通过Swig调用C++过程
  3. Docker03 Docker基础知识、Docker实战
  4. HALCON 1D Measure 算子初识
  5. mysql中的blob和text区别
  6. 学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题
  7. 关于strassen矩阵乘法的矩阵大小不是2^k的形式时,时间复杂度是否还是比朴素算法好的看法...
  8. JS学习记录(BOM部分)
  9. [转] 比特币从“不了解”到“被误解”——详解区块链技术
  10. GMF学习系列(二) 一些知识点(续2)