随笔分类 - node
摘要:一、前言 通常我们在做ServerLess的时候会想到用各种云的Faas服务,比如腾讯云,AWS,阿里云等等。但我们很少去研究自己怎么搭建一个ServerLess服务。本篇文章重点会讲解如何自己在服务器上搭建ServerLess服务,并如何使用它。 二、什么是ServerLess? Serv
阅读全文
摘要:做过后端研发的基本对接口限频完全不陌生,特别是针对一些核心接口受到攻击的时候,比如 Jmeter 来通过一些用户填写接入恶意灌入脏数据。 那在 nodejs 这边如何设计限频接口呢? 基于 express 的 express-rate-limit 源码地址: https://github.com/n
阅读全文
摘要:1. 基本概念 1.1. 流的历史演变 流不是 Node.js 特有的概念。它们是几十年前在 Unix 操作系统中引入的,程序可以通过管道运算符(|)对流进行相互交互。 在基于 Unix 系统的 MacOS 以及 Linux 中都可以使用管道运算符(|),它可以将运算符左侧进程的输出转换成右侧的输入
阅读全文
摘要:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。早期的 Node.js 采用的是 CommonJS 模块规范,从 Node v13.2.0 版本开始正式支持 ES Modules 特性。直到 v15.3.0 版本 ES Modules 特性才稳定下来并与 N
阅读全文
摘要:Puppeteer是 Google Chrome 团队官方的 Headless Chrome 工具,平时常用它来完成一些烦杂的重复性工作,也写过一些爬虫,在浏览器中手动完成的大部分事情都可以使用 Puppeteer 完成。也算是测试同学手中的一大利器吧。 安装 就按管方文档中来吧,主要就是设置两个环
阅读全文
摘要:前言 最近优化了几个新人写出的动态表格文件下载接口的性能瓶颈,感觉非常有必要总结一篇文章作为文档来抛砖引玉,以促进大家学习一起写出更专业的代码。 HTTP 文件下载 讲具体问题之前需要先了解一些 HTTP 基础,下面简单介绍一下用 Node.js&Koa 怎么实现文件下载。 参考: rfc2616
阅读全文
摘要:导语 通过这篇文章可以大致了解 Whistle 的实现原理,并学习如何实现一个简单的抓包调试工具。 项目 Github 地址:https://github.com/avwo/whistle Whistle 是基于 Node.js 实现的跨平台 Web 抓包调试(HTTP)代理,主要功能: 实时抓包:
阅读全文
摘要:管理依赖是一个复杂软件开发过程中必定会遇到的问题。 在Node.js项目开发的时候,我们也经常需要安装和升级对应的依赖。虽然 npm 以及语意化的版本号 (semantic versioning, semver) 让开发过程中依赖的获取和升级变得非常容易, 但不严格的版本号限制,也带来了版本号的不确
阅读全文
摘要:全链路追踪技术的两个核心要素分别是 全链路信息获取 和 全链路信息存储展示。 Node.js 应用也不例外,这里将分成两篇文章进行介绍;第一篇介绍 Node.js 应用全链路信息获取, 第二篇介绍 Node.js 应用全链路信息存储展示。 一、Node.js 应用全链路追踪系统 目前行业内, 不考虑
阅读全文
摘要:用 Node 写服务端的时候,比较头疼的是排查定位问题,因为不像 Chrome 浏览器中,我们有直接的报错提示在 dev tool 中,或者我们可以直接打断点调试。 经常我们会遇到在明明我在 test 环境可以啊,为什么 live 环境不行的问题。假如没有日志,对于这种问题,根据毫无头绪。 所以这篇
阅读全文
摘要:Node.js 提供的 Inspector 非常强大,不仅可以用来调试 Node.js 代码,还可以实时收集 Node.js 进程的 Heap Snapshot、Cpu Profile 等数据,同时支持静态、动态开启,是一个非常强大的工具,也是我们调试和诊断 Node.js 进程非常好的方式。本文从
阅读全文
摘要:Node.js 是一个 Javascript 的运行时,提供了系统能力的 api,主要是文件、网络相关的 IO api,而 IO api 的实现是在 libuv,提供了同步异步两种形式的 api。 本来就来探究下 libuv 的功能和提供的 api 的形式。 同步异步、事件循环 cpu 是顺序执行代
阅读全文
摘要:学习 nodejs 最重要的是什么?可能每个人都有自己的答案。 我觉得学习 nodejs 除了要掌握基础的 api、常用的一些包外,最重要的能力是学会使用 debugger。因为当流程复杂的时候,断点调试能够帮你更好的理清逻辑,有 bug 的时候也能更快的定位问题。 狼叔说过,是否会使用 debug
阅读全文
摘要:项目地址 这个项目很神奇,直接将node.js项目打包成windows可以直接执行的exe文件(也支持FreeBSD、linux、macos、arm系统),甚至不需要安装Node.js,且无须修改你项目中的任何代码! 首先安装pkg npm install -g pkg 然后在项目目录下执行 pkg
阅读全文
摘要:GitHub: https://github.com/zeit/ncc ncc 是一个简单的 CLI 工具,可以一键把一个 Node.js 项目编译打包成单个 JS 文件。 安装 npm i -g @zeit/ncc 使用 例如我们有一个项目引入了 chalk 包,首先安装 NPM 依赖: cd m
阅读全文
摘要:文件系统 这些工具包的功能就是在 Node 本身的 fs 模块基础上提供更加方便的文件系统操作 API。 glob 一句话介绍 glob 是一种文件匹配模式,起源于 Unix,比如我们常见 *.js 匹配所有 js 文件就是使用了 glob 模式。 GitHub 地址:https://github.
阅读全文
摘要:JavaScript 程序越来越复杂,调试工具的重要性日益凸显。客户端脚本有浏览器,Node 脚本怎么调试呢? 2016年,Node 决定将 Chrome 浏览器的"开发者工具"作为官方的调试工具,使得 Node 脚本也可以使用图形界面调试,这大大方便了开发者。 本文介绍如何使用 Node 脚本的调
阅读全文
摘要:Puppeteer 是 Chrome 开发团队在 2017 年发布的一个 Node.js 包,用来模拟 Chrome 浏览器的运行。我们团队从 Puppeteer 刚发布出来就开始成为忠实用户了(主要是因为 PhantomJs 坑太多了),本文主要在介绍 Puppeteer 的同时,结合我们平时的实
阅读全文
摘要:使用 node.js + ffmpeg 实现视频转动图接口服务,利用 child_process 执行 ffmpeg 命令行实现,理论上可以ffmpeg所有功能。 环境 ffmpeg 官网下载 node 中文网下载 依赖包 使用npm 安装所需的依赖包 # npm npm install expre
阅读全文
摘要:简介 Node.js 有多重并发的能力,包括单线程异步、多线程、多进程等,这些能力可以根据业务进行不同选择,帮助提高代码的运行效率。 本文希望通过读 p-limit、pm2 和 worker_threads 的一些代码,来了解 Node.js 的并发能力。 版本说明 Node.js 15.4.0 N
阅读全文