标签: node
带有该标签的全部文章 "node".
Body Parse / Raw Body
发布于更新于在 Node Server 中, HTTP Request 基于 Readable Stream ,我们可以通过读取可读流的方式,将原始请求体读取出来。 简单粗暴的解析代码如下: 我们知道,为了节省带宽,在针对静态资源进行部署时,往往会做 gzip/brotli 的压缩。 从浏览器发的请求来看,也会有经过压缩的内容,此时在服务器端需要先把
如何使用 Node 开发一个命令行工具
发布于更新于一个 Node 脚本,一个 PATH 环境变量,npm 安装全局模块时是如何处理命令行脚本的?本文将引导你使用 Node 开发一个好用漂亮的命令行工具
async_hooks、CLS 与 ALS
发布于更新于为什么需要监听异步资源?在一个 Node 应用中,异步资源监听使用场景最多的地方在于:异常捕捉时需要提供用户信息,在每次客户端请求中保持一致的用户信息
浏览器跨域问题与服务器中的 CORS 配置
发布于更新于跨域,这或许是前端面试中最常碰到的问题了,大概因为跨域问题是浏览器环境中的特有问题,而且随处可见,如同蚊子不仅盯你肉而且处处围着你转让你心烦。你看,在服务器发起 HTTP 请求就不会有跨域问题的。当谈到跨域问题的解决方案时,最流行也最简单的当属 CORS 了。
Javascript 调试基础与示例
发布于更新于使用 Javascript 写代码,如论是在 Node 后端环境还是前端单页应用,调试是资深程序员的进身之阶! 程序员的水平提示之路只有一条,那就是乐此不疲地调试代码。某非著名非大师山月如是说道。 + Resume : 执行到下一个断点 + Step Over : 执行下一语句 + Step Into : 执行下一语句,如遇到函数,则进入
使用 Docker 部署 Node 应用
发布于更新于从最小 Node HTTP 服务写 Dockerfile,谈 NODE_ENV=production、npm ci、config/migrate 步骤及 node-gyp 多阶段构建。
环境变量应该扔在哪里
发布于更新于+ Application: .env + Container: .env + CI: Gitlab CI + Kubernetes Config/Environment + Consul/Vault
Node 中的事件循环
发布于更新于一句关于 Node 事件循环面试题的随想:你只能看到你想看到的观点,面试官只想听到他所背会的面试题。
FileSystem API
发布于更新于Node 文件系统相关的 npm 包清单:fsevents、fs-extra、chokidar、graceful-fs、readdirp、fstream,以及 Stat、Mode 等要点。
一个简单的 HTTP Server
发布于更新于> 本文涉及到的核心模块: > > + http > + stream > + buffer > + zlib: (间接设计) > > 本文涉及到以下库及模块: > + $1: 解析 MIME TYPE > + $1 > + $1: 用以解析 URL。同时也可使用原生模块 url。 > + $1: 用以接续 querystring。同时也
40 行代码实现精简版 koa
发布于更新于当我们在深入学习一个框架或者库时,为了了解它的思想及设计思路,也为了更好地使用和避免无意的 Bug,有时很有必要研究源码。对于 koa 这种极为简单,而应用却很广泛的框架/库更应该了解它的源码。
日志的收集
发布于更新于日志收集笔记:filebeat、IOPS、日志对 CPU 与内存的影响等要点,附一段在 class / extends 小节下用原型链实现继承的 JavaScript 示例。
如何写一个 C 扩展
发布于更新于大家好,我是山月。 我还有工作的时候,据我同事说,他作为一个 Node 开发者去字节跳动面试时,面试官问到: 你写过 C++ 的扩展吗? 自此之后,他再也没有面试过 Node,前几天听闻他的消息时,他的 title 已变成前端开发工程师,当他再次大厂面试时,对以前的 Node 经验闭口不提。 今天将学习 node 中的 napi , 并从
我是如何高效地组织 npm scripts
发布于更新于众所周知,一个 Javasript 项目的脚本类工具,可以使用 package.json 中的 scripts 字段来组织,简单来说,这就是 npm script 。 最典型最常用约定俗成的一个是 npm start ,用以启动项目: 约定俗成的还有很多,如下所列 + npm install + npm test + npm publis
Node 做服务端开发的那些事儿
发布于更新于Node 做服务端开发时,你要了解的这些事 + $1 + Node实践语法篇: 当导入一个 module 时都做了什么 + $1 + $1 + $1 + $1 + $1 + $1 TODO: + $1 TODO: + $1 + $1 TODO: + $1 TODO: + $1 + $1 + $1 TODO: + $1 TODO:
在 Node 中引入一个模块时发生了什么
发布于更新于(function(exports, require, module, __filename, __dirname) { // 所有的模块代码都被包裹在这个函数中 const fs = require('fs') const _ = require('lodash') }); js require('internal/modules/cj
Node 服务端框架路由解析
发布于更新于大家好,我是山月。在上篇文章介绍了 HTTP 报文及简单的服务端框架要素,如如何接受请求参数等。这篇文章介绍另一个常见的主题:路由。 最简单的路由可使用 req.url 进行路由分发不同的逻辑,代码如下所示。 但是对于一个非Demo式的页面,业务逻辑都堆在一起,这显得太为简陋。 作为一个能够在生产环境使用,较为复杂的路由至少能够解析以下路
Stream
发布于更新于1. 服务器中的 HTTP Request 1. 客户端中的 HTTP Response 1. 标准输出 stdout + destroy + finish + error + WritableState / + needDrain + buffered + Symbol(KHandler) + res._removeTE / res.c
Stringify: Node 服务端序列化及反序列化优化
发布于更新于> https://github.com/fastify/fastify/blob/main/docs/Validation-and-Serialization.md fast-json-stringify https://npm.devtool.tech/json-stringify-safe 在服务端向客户端发送数据时,需要把梳理好的
Node 应用中的单元测试
发布于更新于新增或迭代功能时,用 BDD/TDD 思路配合 assert/chai、mocha 或 jest 组织用例,并用 nyc、codecov 查看覆盖率与 API 测试。