-
Lazy.js – 惰性求值的类似于 lodash/Underscore 的工具库,在许多情况下可以提供卓越的性能.
- Kefir.js – 专注于高性能和低内存消耗的响应式库
HTTP
-
got – 为内置的?
http
?模块提供更好的接口 -
gh-got – 为?
got
?和 GitHub API 交互提供更方便的封装 -
axios – 基于 Promise 的 HTTP 客户端(也可以在浏览器中工作)
-
wreck – HTTP 客户端工具.
-
download – 使下载和提取文件变得轻松
-
http-proxy – HTTP 代理
-
superagent – HTTP 请求库
-
node-fetch – Node.js 的
window.fetch
-
flashheart – REST 客户端
-
http-fake-backend – 使用 JSON 文件或者 JavaScript 对象 建立一个伪装的可自定义路由的后端服务
-
cacheable-request – 使用符合 RFC 的缓存支持封装原始的 HTTP 请求.
-
gotql – 基于 got 构建的 GraphQL 请求库
-
global-agent – 可以使用环境变量配置的全局 HTTP / HTTPS 代理
- smoke – 可记录的基于文件的模拟 HTTP 服务
调试 / 分析
-
ndb – 增强 Chrome DevTools 调试体验的工具
-
ironNode – 支持 ES2015 的 Node.js 开箱即用的调试器
-
node-inspector – 基于 Blink 开发者工具的调试器
-
debug – 轻量级调试工具
-
why-is-node-running – 当你不知道为何 Node.js 没有正确退出时…
-
njsTrace – 检测并跟踪代码,查看所有函数调用、参数、返回值以及在每个函数中花费的时间
-
vstream – 检查数据流并且通过管道展示
-
stackman – 增强抛出异常的错误栈追踪
-
locus – 在运行时启动所有可访问变量的REPL
-
0x – 一个火焰图分析工具
-
ctrace – 对系统调用和信号的追踪进行格式优化和增强
-
leakage – 编写内存泄露测试
-
llnode – 一个用于 “解剖” 崩溃的 Node.js 进程,检视其对象的工具
-
thetool – 以 Chrome DevTools 友好格式为你的应用捕获不同的 CPU,内存和其他资源的使用情况
-
swagger-stats – 追踪 API 调用并监视 API 表现、运行状况和使用度量
- NiM – 管理 DevTools 调试工作流
日志
-
pino – 受?
Bunyan
?启发的超快速日志记录器 -
winston – 支持多种记录格式的异步日志记录库
-
console-log-level – 可以想象的最简单的记录器,支持日志级别和自定义前缀
-
storyboard -端到端,分层,实时,丰富多彩的日志和描述
-
signale – Console 日志记录器
- consola – Console 日志记录器
命令行工具
-
chalk – 美化终端字符串样式
-
meow – CLI app 帮助
-
yargs – 自动生成优雅用户界面的命令行分析程序
-
ora – 优雅的终端旋转进度条
-
get-stdin – 简单的 stdin
-
log-update – 在终端里以覆盖前一个输出的方式打印日志,用于制作进度条或者动画等
-
Ink – 基于 React 的命令行交互程序
-
listr – 终端任务列表
-
conf – 一个简单的用于程序或模块配置管理的工具
-
ansi-escapes – 操作终端的 ANSI 转义代码
-
log-symbols – 用不同颜色的符号记录不同级别的日志
-
figures – 支援 Windows CMD 回退方案的 Unicode 符号
-
boxen – 在终端中创建方框
-
terminal-link – 在终端中创建可点击的链接
-
terminal-image – 在终端里展示图片
-
string-width – 获取字符串的可视宽度 – 显示字符串所需的列数
-
cli-truncate – 在终端中将字符串截断为特定宽度
-
first-run – 检查是否是第一次运行该进程
-
blessed – 类似于 Curses 的库
-
Inquirer.js – 交互式的命令行提示工具
-
yn – 将包含 yes/no 语义的字符串解析为布尔值
-
cli-table3 – 漂亮的 Unicode 表
-
drawille – 使用 Unicode 盲文字符在终端上绘图
-
update-notifier – 升级 CLI 应用程序的通知
-
ascii-charts – 终端下的 ASCII 柱状图
-
progress – 灵活的 ASCII 进度条
-
insight – 使用 metrics 向 Google Analytics 发送匿名报告来帮助你理解你的工具是怎样被使用的
-
cli-cursor – 显示或关闭 CLI 光标
-
columnify – 将控制台文本打印按列输出,支持单元格修饰
-
cli-columns – 列式输出 Unicode 和 Ansi-safe
-
cfonts – 控制台下的性感 ASCII 字体
-
multispinner – 多样的、可同时独立控制的 CLI 旋转指示器
-
omelette – Shell 下的自动补全
-
cross-env – 跨平台的环境变量设置
-
shelljs – 可移植的 Unix shell 命令
-
sudo-block – 禁止用户用 root 权限使用你的程序
-
loud-rejection – 强制对未加处理的 promise rejections 错误给出提示
-
sparkly – 生成迷你图?
▁▂▃▅▂▇
-
Bit – 在存储库中创建、维护、查找和使用小型模块和组件
-
gradient-string – 为终端输出添加漂亮的色彩渐变
-
oclif – CLI框架,包括解析器、自动文档、测试和插件
-
term-size – 准确地获得终端窗口大小
- Cliffy – CLI 的交互式框架
构建工具
-
parcel – 快速,零配置的Web应用构建工具
-
webpack – 面向浏览器的打包工具
-
rollup – 新一代 ES2015 打包构建工具
-
gulp – 编程式、流式快速构建系统
-
Broccoli – 快速、可靠的资源管道,支持固定时间重新编译和紧凑的构建定义
-
Brunch – 前端 web 应用程序构建工具,具有简单的声明性配置、快速的增量编译和自定的工作流
-
Start – 具有可共享预设的函数式任务管理器
-
ygor – 一个基于 Promise 的任务执行工具 —— 当需要执行的工作太多?
npm run
?不足以完成任务时 -
FuseBox – 首选支持 TypeScript 的结合了 webpack,JSPM 和 SystemJS 强大功能的快速构建系统
- pkg – 将你的 Node.js 项目打包成可执行文件
硬件
-
johnny-five – 基于 Firmata 的 Arduino 框架
-
serialport – 读写串口
-
usb – USB 库
-
i2c-bus – I2C 串行总线访问
-
onoff – GPIO 访问和中断检测
-
spi-device – SPI 串行总线访问
-
pigpio – 树莓派上的快速 GPIO、PWM、伺服控制、状态更改通知和中断处理
- gps – NMEA 解析器,用于处理 GPS 接收
模板
-
marko – 基于 HTML 的模板引擎,可将模板编译为 CommonJS 模块,并支持流、异步渲染和自定义标签
-
nunjucks – 灵感来自于 Jinja2 的具有继承、异步控制等功能的模板引擎
-
handlebars.js – Mustache 模板的超集,其中添加了强大的功能,如 helpers 和更高级的 blocks
-
EJS – 超级简单的模板语言.
- Pug – 受Haml影响的高性能模板引擎.
Web 框架
-
Hapi – 用于创建应用和服务的框架
-
Koa – 由 Express 幕后团队设计的框架,旨在为 Web 应用程序和 API 提供更小、更富表现力和更健壮的基础
-
Express – 一个为构建单页、多页以及混合 Web 应用程序提供强大的功能的 Web 应用程序框架
-
Feathers – 受 Express 启发的微服务框架
-
LoopBack – 用于创建 REST API并轻松连接到后端数据源的强大框架
-
Meteor – 一个超简单、位于程序数据库和用户界面之间、保持二者之间数据同步更新的纯 Javascript Web 框架。(你可能会喜欢 awesome-meteor)
-
Restify – 帮助你构建正确的REST Web 服务
-
ThinkJS – 支持 ES2015+ 的WebSockets REST API 框架
-
ActionHero – 用于为 TCP sockets,WebSocket 和 HTTP 客户端创建可重用、可扩展 API 的框架
-
Next.js – 极简化的 ?JavaScript 服务端渲染框架
-
Nuxt.js – Vue.js 服务端渲染框架
-
seneca – 编写微服务的工具包
-
AdonisJs – 基于依赖注入和 IoC 容器技术的 Node.js 的真正 MVC 框架.
-
Hemera – 基于 NATS 编写的可靠且容错的微服务
-
Micro – 使用异步实现的极简微服务框架
-
Moleculer – 快速而强大的微服务框架
-
Fastify – 快速和低开销的 Web 框架
-
Nest -受 Angular 启发的框架,用于构建高效且可扩展的服务器端应用程序
-
Zeronode – 用于 Node.js 微服务的最小化构建块
-
TypeGraphQL – 使用类和装饰器的,用 TypeScript 编写 GraphQL API 的现代框架
-
TinyHttp – 类似于 Express 的现代、快速的 Web 框架
- Marble.js – 基于 TypeScript 和 RxJS 的,用于构建服务端应用的函数式编程框架
文档相关
-
documentation.js – 支持 ES2015+ 和流程注释的 API 文档生成器
-
ESDoc – 面向 ES2015 的文档生成器,附加测试代码并评估文档覆盖范围
-
Docco – 生成一个在代码中混合注释的 HTML 的文档生成器
-
JSDoc – 类似于 JavaDoc 或 PHPDoc 的 API 文档生成器
- Docusaurus – 基于 React 和 Markdown 的文档生成器,具有多语言和版本控制功能
文件系统
-
del – 使用 globs 删除文件/文件夹
-
globby – 支持多种模式的 Glob 文件
-
cpy – 文件拷贝
-
rimraf – 像?
rm -rf
?一样的递归删除 -
make-dir – 像?
mkdir -p
?一样的递归创建目录 -
graceful-fs – 功能增强版的?
fs
?模块 -
chokidar – 像 macOS 上使用原生?
fsevents
?一样监听?fs.watch
?和?fs.watchFile
?的文件系统监听器 -
find-up – 沿父目录向上查找文件
-
proper-lockfile – 进程间和机器间 lockfile 工具
-
load-json-file – 读取、解析 JSON 文件
-
write-json-file – 自动将 JSON 序列化写入到文件
-
fs-write-stream-atomic – 类似?
fs.createWriteStream()
?的原子操作 -
filenamify – 将字符串转换为有效的文件名
-
lnfs – 像?
ln -fs
?一样,强制创建符号链接 -
istextorbinary – 检查文件是文本还是二进制
-
fs-jetpack – 完全重新设计的、方便日常使用的文件系统 API
-
fs-extra – 增加额外方法的?
fs
?模块 -
pkg-dir – 查找 npm 包的根目录
-
filehound – 灵活、流畅的用于文件系统搜索的接口
-
move-file – 甚至可以跨设备使用的移动文件工具
- tempy – 随机获取临时文件或目录的路径
流程控制
-
Promises
-
-
更多
-
Bluebird – 致力于创新功能和性能的 Promise 库
-
pify – 将 callback 风格的函数转化为 Promise 风格
-
delay – 延迟执行 Promise
-
promise-memoize – 拥有过期时间和预加载功能的 Promise 返回值缓存工具
-
valvelet – 限制 Promise 访问频率的工具
- p-map – 可以使用 Promise 的 Map 方法
-
-
Observables
-
-
zen-observable – Observables 的实现
-
RxJS – 响应式编程
-
observable-to-promise – 将 Observable 转换为 Promise
- 更多…
-
-
Streams
-
- Highland.js – 仅使用标准JavaScript 和类似 Node 的流,即可轻松管理同步和异步代码
-
Callbacks
-
-
each-async – 异步并发迭代器,如 forEach
- async – 提供简单,强大的功能来处理异步问题
-
-
Channels
-
- js-csp – 为 JavaScript 提供连续的通信(例如 Clojurescript core.async 或 Go)
文件流
-
through2 – 基于 streams2 的轻量流转换器,避免显示子类噪声
-
from2 – 方便使用的对 ReadableStream 的封装,灵感来自于?
through2
-
get-stream – 以字符串或 Buffer 的形式获取流
-
into-stream – 将 buffer/string/array/object 转化为流
-
duplexify – 将可写和可读流转换为单个stream2 双工流
-
pumpify – 将一系列流合并为单个双工流
-
peek-stream – 转换流,让你可预览第一行再决定如何解析它
-
binary-split – 换行符(或任何定界符)分隔符流
-
byline – 超简单的逐行流读取器
-
first-chunk-stream – 转换流中的第一个块
-
pad-stream – 填充流中的每一行
-
multistream – 将多个流合并为一个流
-
stream-combiner2 – 从管道输出流
-
readable-stream – Streams2 and Streams3 核心实现镜像
- through2-concurrent – 同时转换对象流
实时
-
μWebSockets – 高可扩展度的 WebSocket 服务器和客户端库
-
Socket.io – 实现基于事件的实时双向通信
-
Faye – 基于 Bayeux 协议的实时客户端-服务器消息总线
-
SocketCluster – 可运行多 CPU 核心的可扩展的 HTTP + WebSocket 引擎
-
Primus – 实时框架的抽象层,用于防止模块锁定
-
deepstream.io – 可扩展的实时微服务框架
-
Kalm – 低层级 socket 路由和中间件框架
-
MQTT.js – MQTT 客户端——构建在 TCP/IP 协议上的基于 Pub-sub 的消息协议
-
rpc-websockets – 基于 WebSocket 实现的 JSON-RPC 2.0
- Aedes – 可以在任何流服务器上运行的 MQTT 准系统
图像
-
sharp – 超快速的用于调整 JPEG,PNG,WebP 和 TIFF 图像大小的模块
-
image-type – 检测 Buffer / Uint8Array 的图像类型
-
gm – GraphicsMagick 和 ImageMagick 的封装
-
lwip – 不需要 ImageMagick 的轻量级图像处理器
-
pica – 轻量级、高性能的纯 JS 实现的图片尺寸调整器(lanczos3), 当不允许像素化时用?
canvas drawImage()
?替代 -
jimp – 纯 JavaScript 中的图像处理
-
probe-image-size – 无需完全下载即可获取大多数图像格式的大小
- qrcode – 二维码和条形码生成器
文本
-
iconv-lite – 转换字符编码.
-
string-length – 获取字符串的真实长度-通过正确计算星号并忽略ansi转义码.
-
camelcase – 将破折号/点号/下划线/空格分隔的字符串转换为驼峰式,案例:foo-bar→fooBar.
-
escape-string-regexp – 转义RegExp特殊字符.
-
execall – 在字符串中查找多个RegExp匹配项.
-
splice-string – 移除或替换字符串的一部分
Array#splice
. -
indent-string – 缩进字符串中的每一行.
-
strip-indent – 从字符串的每一行中除去前导空格.
-
detect-indent – 检测代码缩进.
-
he – HTML实体编码器/解码器.
-
i18n-node – 具有动态JSON存储的简单翻译模块.
-
babelfish – i18n,复数的语法非常简单.
-
matcher – 简单通配符匹配.
-
unhomoglyph – 规范化视觉上相似的unicode字符.
-
i18next – 国际化框架.
- nanoid – 小巧、安全、URL友好、唯一的字符串ID生成器.
数字
-
random-int – 生成随机整数
-
random-float – 生成随机浮点数
-
unique-random – 生成连续唯一的随机数
- round-to – 将数字四舍五入到指定的小数位数:
1.234
?→?1.2
数学
-
ndarray – 多维数组
-
mathjs – 庞大的数学公式库
-
math-clamp – 三个数中取出中间值
-
algebra – 代数
- multimath – 使用 WebAssembly 和 JS 创建快速图像数学的核心
日期
-
Luxon – 用于处理日期和时间的库
-
date-fns – 现代日期工具
-
Moment.js – 分析、验证、操作和显示日期
-
Day.js – Moment.js 之外可选的使用 Immutable 的日期库
-
dateformat – 日期格式化
-
tz-format – 带时区格式化时间:?
2015-11-30T10:40:35+01:00
- cctz – 快速解析, 格式化, 和时区转化工具
URL
-
normalize-url – 规范化 URL
-
humanize-url – 可读化 URL:?
http://sindresorhus.com
?→?sindresorhus.com
-
url-unshort – 将短地址还原
-
speakingurl – 通过音译从字符串生成子段
-
linkify-it – 具有完整 Unicode 支持的链接模式检测器
-
url-pattern – 比 regex 字符串更简单的 URLs 和其他字符串的模式匹配
- embedza – 使用 oEmbed、Open Graph、meta 标记中的信息从 url 创建 HTML 片段/嵌入
数据校验
-
joi – JavaScript 对象的对象模式描述语言和验证器
-
is-my-json-valid – 极速 JSON 格式校验工具
-
property-validator – 用于 Express 的属性校验工具
-
schema-inspector – JSON API 清理和验证
-
ajv – 最快的 JSON 概要验证器,支持 v5、v6 和v7 方案
- Superstruct – 简单基础的 JavaScript 和 TypeScript 数据验证器
解析
-
remark – 插件化的 Markdown 处理器
-
markdown-it – 100% 支持 CommonMark、扩展和语法插件的 Markdown 解析器
-
parse5 – 快速全功能规范兼容的 HTML 解析器
-
strip-json-comments – JSON 去除注释
-
strip-css-comments – CSS 去除注释
-
parse-json – 有更多错误提示的 JSON 处理工具
-
URI.js – URL 转化工具
-
PostCSS – CSS 解析、压缩工具
-
JSONStream – 流式处理 JSON.parse 和 stringify
-
csv-parser – 旨在比其他任何工具都快的流式 CSV 解析器
-
PEG.js – 简单的具有出色错误报告功能的语法分析器生成器
-
x-ray – Web 爬虫工具
-
nearley – 简单,快速,强大的 JavaScript 解析器
-
binary-extract – 无需解析整个对象就可以从 JSON 缓冲区中提取一个值的工具
-
Stylecow – 可扩展插件的,用于解析,操纵和转换现代 CSS 的工具,使其与所有浏览器兼容
-
js-yaml – 快速的 YAML 解析器
-
xml2js – XML 到 JavaScript 对象的转换器
-
Jison – 友好的 JavaScript 解析程序生成器. 与 Bison, Yacc 和 family 一样的思路
-
google-libphonenumber – 解析、格式化、存储和验证电话号码
-
ref – 读/写缓冲区中的结构化二进制数据
-
xlsx-populate – 读/写 Excel XLSX
-
Chevrotain – 非常快速且功能丰富的 JavaScript 解析程序构建工具包
- fast-xml-parser – 验证和解析 XML
人性化
-
pretty-bytes – 将字节数转换成可读的字符串:?
1337
?→?1.34 kB
-
pretty-ms – 将毫秒数转化为可读时间字符串:?
1337000000
?→?15d 11h 23m 20s
-
ms – 小巧的毫秒转换工具
-
pretty-error – 简化的错误信息
- read-art – 从任何页面提取可读内容
压缩
-
yazl – 压缩
-
yauzl – 解压缩
-
Archiver – 流式接口的文件归档工具,支持 ZIP 和 TAR 格式
-
pako – javascript 的高速 zlib 端口(deflate, inflate, gzip)
-
tar-stream – 流式 tar 解析器和生成器,另见tar-fs.
- decompress – 解压模块,支持?
tar
、tar.gz
?和?zip
?文件开箱即用
网络
-
get-port – 获取一个空闲的端口
-
ipify – 获取你的公网 IP 地址
-
getmac – 获取电脑的 MAC 地址
-
DHCP – DHCP 客户端和服务器
- netcat – 纯 JS 实现的 Netcat 端口
数据库
-
数据库驱动
-
-
PostgreSQL – 使用纯 JavaScript 和原生 libpq 实现的 PostgreSQL 客户端
-
Redis – Redis 客户端
-
LevelUP – LevelDB
-
MySQL – MySQL 客户端
-
couchdb-nano – CouchDB 客户端
-
Aerospike – Aerospike 客户端
-
Couchbase – Couchbase 客户端
- MongoDB – MongoDB 驱动
-
-
ODM / ORM
-
-
Sequelize – 支持 PostgreSQL,SQLite,MySQL 以及更多数据库的 ORM
-
Bookshelf – Backbone.js 风格的PostgreSQL,MySQL 和 SQLite3 的 ORM
-
Massive – PostgreSQL 数据访问工具
-
Mongoose – 优雅的 MongoDB 对象建模
-
Waterline – 与数据存储区无关的工具,可大大简化与一个或多个数据库的交互
-
OpenRecord – 类似于 ActiveRecord 的,用于 PostgreSQL,MySQL,SQLite3 和 RESTful 数据存储的 ORM
-
pg-promise – 基于 Promise 的使用原生 SQL 的 PostgreSQL框架
-
slonik – 具有严格类型,详细日志记录和断言的 PostgreSQL 客户端
-
Objection.js – 基于 SQL 查询生成器 Knex 的轻量级 ORM
-
TypeORM – 支持 PostgreSQL,MariaDB,MySQL,SQLite 等数据库的 ORM
- MikroORM – TypeScript 的基于数据映射的 ORM,使用工作单元和身份映射模式,支持 MongoDB,PostgreSQL,MySQL 和 SQLite
-
最后
总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/170618.html