• 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 - 解压模块,支持?tartar.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

最后

总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了

全网最全面的 Node,前端开发大全

全网最全面的 Node,前端开发大全

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】