平常我们编写 TypeScript 时,主要会使用类型注解(给变量、函数等加上类型约束),这可以增强代码可读性、避免低级 bug。实际上 TypeScript 的类型系统设计的非常强大,强大到可以单独作为一门编程语言。本文是自己学习 TypeScript 类型编程的一个总结,希望对你有帮助。
Node.js 命令行工具检查更新的正确姿势
随着 Node.js 的“走红”,使用 Node.js 开发命令行工具越来越简单。一个成熟的命令行工具应该从一开始就要考虑好之后的版本更新如何“优雅”的告知用户。最好的方法当然是当用户在终端执行命令时,将相关信息提示给用户。
这篇文章将给出一个易用、高效、可定制的方法。源码在这里:https://github.com/kohpoll/pkg-updater,欢迎大家顺手点赞。接下来我将讲解其实现思路。
在 spawn 的子进程中保持命令行颜色
最近在用子进程运行 gulpfile.js 的时候发现终端上的颜色全部没有了,很是奇怪。经过一些研究,最终解决了问题,同时也总结了一些相关知识。希望对你有帮助。
纠结的链接——ln、ln -s、fs.symlink、require
最近在使用 fs.symlink
实现软链时,发现文档里面写的是:fs.symlink(target, path)
;然而 man ln
的时候显示的是:ln source_file target_file
;而且,require
模块的时候其实还会处理软链但是处理的又不是想象中那样。于是,我彻底被相关东西绕晕。这篇文章算是我的学习笔记,希望对你有帮助。
你可能不知道的 Promise
开始之前,我们先来一个“脑筋急转弯”。假设 later
函数调用后返回一个 promise 对象,下面这 4 种写法有什么区别?
1 | // #1 |
你可能想知道的 Node 子进程模块
最近在使用 Node 的子进程模块实现一些功能,对相关知识进行了一个系统的学习总结,这篇文章将会简要介绍我总结的 Node 中和进程有关的内容。包括:进程和线程、Node 的单线程的真正含义、创建进程的三种方法、进程间通信、进程以及信号量。有不当之处欢迎提出,一起交流。
从 left-pad 事件我们可以学到什么
最近 NPM 圈发生了“一个 17 行的模块引发的血案”。left-pad 工具模块被作者从 NPM 上撤下,所有直接或者间接依赖这个模块的 NPM 包就忧伤的挂掉了,包括 babel 这样的热门项目。
而其中的原因大概是这样:作者 Azer 写了一个叫 kik 的工具和某个公司同名了,这天公司的律师要求其删掉这个模块,把 kik 这个名字“让”给他们,作者不答应,律师就直接找 NPM 了,而 NPM 未经作者同意就把包的权限转移给了这家公司。于是,Azer 一怒冲冠,将他所有的 NPM 包全部删掉了。
我们不打算讨论这件事中的价值观、自由之精神、法律细节等等,我只想站在一个程序员的角度来凑个热闹,聊聊看法。
如何优雅的在 koa 中处理错误
软件开发时,有 80% 的代码在处理各种错误。
——某著名开发者
想让自己的代码健壮,错误处理是必不可少的。这篇文章将主要介绍 koa 框架中错误处理的实现(其实主要是 co 的实现),使用 koa 框架开发 web 应用时进行错误处理的一些方法。
关于“时间”的一次探索
最近使用 sequelize
过程中发现一个“奇怪”的问题,将某个时间插入到表中后,通过 sequelize
查询出来的时间和通过 mysql
命令行工具查询出来的时间不一样。非常困惑,于是研究了下,下面是学习成果。
记一次 MySQL 数据库问题排查
最近遇到应用频繁的响应缓慢,无法正常访问。帮忙一起定位原因,最后定位到的问题说起来真的是很小的细节问题,但是就是这些小细节导致了服务不稳定,真是细节决定成败。这里尝试着来分享下,希望对大家有所帮助。