DongYuanxin's Blog

深入 koa.js 源码:架构设计

最近读了 koa 的源码,理清楚了架构设计与用到的第三方库。本系列将分为 3 篇,分别介绍 koa 的架构设计和 3 个核心库,最终会手动实现一个简易的 koa。 koa 的实现都在仓库的lib目录下,如下图所示,只有 4 个文件: 对于这四个文件,根据用途和封装逻辑,可以分为 3 类:req 和 res,上下文以及 application。 req 和 res 对应的文件是:...

如何缩小学习反馈周期

其实上周挺丧的,自己安排的学习任务并没有如期完成,还一度产生了放弃某些需求的念头。所以非常感谢同组的前辈和同事们的谈话开导,以及远在头条的伙伴的电话聊天,又对生活和代码充满了热爱(#^.^#)! 所以这两天一直在思考怎么 保持  学习的动力和兴趣,尽量远离拖延症?是的,这里特别强调是“保持”。三天打渔两天晒网很容易,但持之以恒就很困难。 学习不像唱歌跳舞打飞机,给大脑的正向反馈几乎是没有...

[译]SCSS和CSS3对比

翻译说明 这是一篇介绍现代 css 核心特性的文章,并且借助 sass 进行横向对比,充分体现了 css 作为一门设计语言的快速发展以及新特性为我们开发者带来的强大生产力。 第一次尝试翻译技术文,为了让文章更通俗易懂,很多地方结合了文章本意和自己的说话风格。另外,时间有限水平有限,难免有些失误或者翻译不恰当的地方,欢迎指出讨论。 英文原文地址:https://cathydutton.c...

玩转 Nodejs 命令行

背景 在做 cli 工具的时候,非常需要命令行相关的第三方库。一个比较稳健成熟的命令行应该考虑以下 4 种需求: 读取传入的各种参数,例如: –help, -v=123 逻辑处理和友好的 UI 交互,例如:提供列表选择 细致控制字体颜色和背景颜色 状态显示,例如:等待过程前面是转圈圈,完成过程前面自动换成对号 代码仓库地址:play-node-command 。可以...

负载均衡:轮询调度算法实现

最近在学习 cluster 的时候,了解到它的负载均衡以及 NGINX 的负载均衡都是基于“轮询调度”算法来实现的。它由 Round Robin 提出,所以又称为“rr 算法”。除此之外,负载均衡使用的是基于权重的“wrr 算法”。为了深入理解,我这里都做了实现。 RR 算法 它的实现思路是:每一次把来自用户的请求轮流分配给内部中的服务器,从 1 开始,直到 N(内部服务器个数),然后再...