Verdaccio publish 时包含 deprecated 导致历史版本丢失问题原因分析

2021-12-13
阅读 2 分钟
3.5k
公司内部的 NPM 因为一些固有的 bug 经常被吐槽,最近刚好有时间可以来做优化,然后就尝试解一下之前遇到的一个 publish 的 bug,下边是分析记录。

记一次 Node.js http 服务的排障记录

2021-07-06
阅读 5 分钟
4k
最近我们团队接手了一个遗留项目,是由 Node.js 语言所编写的 HTTP 服务项目,项目大致逻辑是通过 Node.js 来实现一层代理逻辑,做流量的中转,并添加一些关键的埋点来展示请求记录( 以及一些进阶的用法,篡改请求相关的数据,但与本次排障无关,便不赘述 )。刚接手的时候我们得到的情况是,这个项目因为内存泄漏和其...

ioredis源码阅读[0]

2020-12-15
阅读 12 分钟
4k
最近因为工作需要,要去搞一个 Node.js 端的 Redis Client 组件出来,暂时选择通过 ioredis 来作为 fork 对象。 因为之前有遇到过 Redis 在使用 twemproxy 时会一直出现无法连接服务器的问题,详情见 issues:[链接] 所以会修改源码修改这一问题,不过在修改完成之后跑单元测试发现,事情没有那么简单,并不只是 info -&...

grpc-node 源码阅读笔记[0]

2020-12-01
阅读 15 分钟
4.5k
我所理解 RPC 整个执行的过程就是 Client 调用方法 -> 序列化请求参数 -> 传输数据 -> 反序列化请求参数 -> Server 处理请求 -> 序列化返回数据 -> 传输数据 -> Client 接收到方法返回值:

如何写一个简单的node.js c++扩展

2020-08-08
阅读 8 分钟
5.8k
node 是由 c++ 编写的,核心的 node 模块也都是由 c++ 代码来实现,所以同样 node 也开放了让使用者编写 c++ 扩展来实现一些操作的窗口。 如果大家对于 require 函数的描述还有印象的话,就会记得如果不写文件后缀,它是有一个特定的匹配规则的:

GitLab CI/CD 在 Node.js 项目中的实践

2019-05-30
阅读 10 分钟
8.4k
近期在按照业务划分项目时,我们组被分了好多的项目过来,大量的是基于 Node.js 的,也是我们组持续在使用的语言。 现有流程中的一些问题 在维护多个项目的时候,会暴露出一些问题: 如何有效的使用 测试用例 如何有效的使用 ESLint 部署上线还能再快一些吗 使用了 TypeScript 以后带来的额外成本 测试用例 首先是测试用...

使用JSDoc提高代码的可读性

2019-04-22
阅读 6 分钟
6.3k
工作了四年多,基本上都在围绕着 JavaScript 做事情。 写的代码多了,看的代码也多了,由衷的觉得,写出别人看不懂的代码并不是什么能力,写出所有人都能读懂的代码,才是真的牛X。 众所周知, JavaScript 是一个弱类型的脚本语言,这就意味着,从编辑器中并不能直观的看出这段代码的作用是什么,有些事情只有等到代码真...

Node程序debug小记

2019-01-17
阅读 7 分钟
2.4k
有时候,所见并不是所得,有些包,你需要去翻他的源码才知道为什么会这样。 背景 今天调试一个程序,用到了一个很久之前的NPM包,名为formstream,用来将form表单数据转换为流的形式进行接口调用时的数据传递。 这是一个几年前的项目,所以使用的是Generator+co实现的异步流程。 其中有这样一个功能,从某处获取一些图片...

基于游标的分页接口实现

2018-11-12
阅读 6 分钟
6k
接口传入请求的页码、以及每页要请求的条数,我个人猜想这可能和大家初学的时候所接触的数据库有关吧- -,我所认识的人里边,先接触MySQL、SQL Server什么的比较多一些,以及类似的SQL语句,在查询的时候基本上就是这样的一个分页条件:

了解可执行的NPM包

2018-10-26
阅读 5 分钟
6.7k
NPM是Node.js的包管理工具,随着Node.js的出现,以及前端开发开始使用gulp、webpack、rollup以及其他各种优秀的编译打包工具(大多数采用Node.js来实现),大家都开始接触到一些Node.js,发现了使用NPM来管理一些第三方模块会很方便。 大家搬砖的模式也是从之前的去插件官网下载XXX.min.js改为了npm install XXX,然后在...

util.promisify 的那些事儿

2018-10-18
阅读 5 分钟
12.2k
util.promisify是在node.js 8.x版本中新增的一个工具,用于将老式的Error first callback转换为Promise对象,让老项目改造变得更为轻松。

适配器在JavaScript中的体现

2018-09-19
阅读 4 分钟
4.7k
适配器设计模式在JavaScript中非常有用,在处理跨浏览器兼容问题、整合多个第三方SDK的调用,都可以看到它的身影。 其实在日常开发中,很多时候会不经意间写出符合某种设计模式的代码,毕竟设计模式就是老前辈们总结提炼出来的一些能够帮助提升开发效率的一些模版,源于日常的开发中。 而适配器其实在JavaScript中应该是...

koa源码阅读[3]-koa-send与它的衍生(static)

2018-08-24
阅读 8 分钟
6.1k
处理静态文件是一个繁琐的事情,因为静态文件都是来自于服务器上,肯定不能放开所有权限让接口来读取。 各种路径的校验,权限的匹配,都是需要考虑到的地方。 而koa-send和koa-static就是帮助我们处理这些繁琐事情的中间件。 koa-send是koa-static的基础,可以在NPM的界面上看到,static的dependencies中包含了koa-send。

微任务、宏任务与Event-Loop

2018-08-16
阅读 9 分钟
8.3k
首先,JavaScript是一个单线程的脚本语言。 所以就是说在一行代码执行的过程中,必然不会存在同时执行的另一行代码,就像使用alert()以后进行疯狂console.log,如果没有关闭弹框,控制台是不会显示出一条log信息的。 亦或者有些代码执行了大量计算,比方说在前端暴力破解密码之类的鬼操作,这就会导致后续代码一直在等待...

koa源码阅读[2]-koa-router

2018-08-09
阅读 24 分钟
4.9k
首先,因为koa是一个管理中间件的平台,而注册一个中间件使用use来执行。 无论是什么请求,都会将所有的中间件执行一遍(如果没有中途结束的话) 所以,这就会让开发者很困扰,如果我们要做路由该怎么写逻辑?

koa源码阅读[1]-koa与koa-compose

2018-07-30
阅读 12 分钟
3.7k
接上次挖的坑,对koa2.x相关的源码进行分析 第一篇。 不得不说,koa是一个很轻量、很优雅的http框架,尤其是在2.x以后移除了co的引入,使其代码变得更为清晰。

koa源码阅读[0]

2018-07-23
阅读 7 分钟
3.2k
Node.js也是写了两三年的时间了,刚开始学习Node的时候,hello world就是创建一个HttpServer,后来在工作中也是经历过Express、Koa1.x、Koa2.x以及最近还在研究的结合着TypeScript的routing-controllers(驱动依然是Express与Koa)。 用的比较多的还是Koa版本,也是对它的洋葱模型比较感兴趣,所以最近抽出时间来阅读其...

记一次Node项目的优化

2018-06-09
阅读 5 分钟
3.2k
这两天针对一个Node项目进行了一波代码层面的优化,从响应时间上看,是一次很显著的提升。 一个纯粹给客户端提供接口的服务,没有涉及到页面渲染相关。

拿Proxy可以做哪些有意思的事儿

2018-05-24
阅读 5 分钟
21.1k
首先,我们要清楚,Proxy是什么意思,这个单词翻译过来,就是 代理。 可以理解为,有一个很火的明星,开通了一个微博账号,这个账号非常活跃,回复粉丝、到处点赞之类的,但可能并不是真的由本人在维护的。 而是在背后有一个其他人 or 团队来运营,我们就可以称他们为代理人,因为他们发表的微博就代表了明星本人的意思...

NPM实用指北

2018-04-22
阅读 4 分钟
2.2k
npm作为下载node附送的大礼包,大家一定不会陌生。然而关于npm,估计大量的只是用到npm install XXX以及npm run XXX。

一个有味道的函数

2018-03-28
阅读 4 分钟
2.2k
最近想到了一个自认为很有意思的面试题如何实现一个compose函数。函数接收数个参数,参数均为Function类型,右侧函数的执行结果将作为左侧函数执行的参数来调用。