本篇文章是笔者近期对 Promise 的几点思考的总结。
理解 Node.js Stream 模块
流概念是学习 Node 绕不过去的概念之一,它的底层代码也非常复杂,它能够优化对于文件或者数据处理的内存优化与流程优化,本文主要是讲述了对于 Stream 的实现与使用。
Node.js 中的模块机制
日常经常使用 node 中的模块,当我们遵循 dry 原则,将一些逻辑独立封装成一个可供复用的模块的时候,有可能往往会忽略 node 模块本身的知识。
理解模板引擎
无论是前端的 MVVM 框架, 还是像我们常用的如 ejs 这样的模板引擎, 都是为了组件化工作的, 是为了减少重复编写某些代码而出现的.实际上模板引擎是为了实现模板文件与业务数据的结合, 实现界面与数据的分离.
为了能够深刻理解模板引擎的工作原理, 这里我通过实现一个简单的模板引擎来达到目的.
全面理解 koa-router
koa 框架一直都保持着简洁性, 它只对 node 的 HTTP 模块进行了封装, 而在真正实际使用, 我们还需要更多地像路由这样的模块来构建我们的应用, 而 koa-router 是常用的 koa 的路由库. 这里通过解析 koa-router 的源码来达到深入学习的目的.
实现 JavaScript 继承的三种模式设计
在这篇文章里面, 我们将会讨论三种不同的方式来实现 JavaScript 中的对象继承. 你将会看到我们使用其他语言例如 Java 中的通过让一个类继承一个可被多个子类继承的超类来继承其属性与方法的方式来实现继承.
也即是说, 在 Java 中, 继承是通过让一个类继承于其他的类, 然后创建这个类的实例对象来实现的, 但是在 JavaScript 中, 并没有类的概念, 继承是通过原型继承即让一个对象直接继承于另一个对象来实现的.
注:本文为译文, 翻自: http://davidshariff.com/blog/javascript-inheritance-patterns/
解析 SMTP 协议
SMTP 是属于应用层协议, 是基于 TCP 协议用于收发邮件的.我们常常需要在业务中使用邮件, 但是并没有对 smtp 协议有足够的了解, 我们下面就来全面地了解一下. smtp 服务器一般会开启 25 端口提供服务, 当然如果 smtp 服务器使用了安全认证也就是 ssl/tls, 那么就会开放 465 或 587 端口开放服务, 例如 smtp.qq.com.
本文相关代码仓库:https://github.com/zhangxiang958/ComputerNetworkLab/blob/master/smtp/mailer.js
co 源码剖析
对于如何将生成器与 Promise 结合作为异步任务流程控制,这里我推荐阅读 co 类库的代码,co 类库是一个很优秀的异步流程控制的工具库,下面我们就阅读它的代码,领会它的思想:
Event Loop 中的 microtask 与 macrotask
Javascript 的事件循环会被常常提及, 而且在实际开发中, 经常需要使用事件相关的知识, 所以特地深入了解一下.
使用 request, mocha, chai 让接口更稳定
对于接口而言, 稳定与准确是第一要义, 前端需要稳定不会出现不明错误而且结果数据正确的接口, 这样才能保页面渲染的正确性.
记一次 node 服务高并发 502 错误
问题描述: 线上 node 服务在压力测试高并发的时候, 3 分钟后请求逐渐失败, 查看服务器日志发现 Error: spawn find EMFILE 错误, 进而导致 node 进程 crash 并不再重启.