Node 牛刀小试
本系列合计 49 篇,按推荐阅读顺序列出。
- Node 中的 require 与 module
在 `node` 环境中,有两个内置的全局变量无需引入即可直接使用,并且无处不见,它们构成了 `nodejs` 的模块体系: `module` 与 `require`。
Published: at 16:00 - 40 行代码实现精简版 koa
当我们在深入学习一个框架或者库时,为了了解它的思想及设计思路,也为了更好地使用和避免无意的 Bug,有时很有必要研究源码。对于 koa 这种极为简单,而应用却很广泛的框架/库更应该了解它的源码。
Published: at 08:10 - 浏览器跨域问题与服务器中的 CORS 配置
跨域,这或许是前端面试中最常碰到的问题了,大概因为跨域问题是浏览器环境中的特有问题,而且随处可见,如同蚊子不仅盯你肉而且处处围着你转让你心烦。你看,在服务器发起 HTTP 请求就不会有跨域问题的。当谈到跨域问题的解决方案时,最流行也最简单的当属 CORS 了。
Published: at 16:00 - 如何高效及正确地打日志
在服务器应用(后端项目)中,完善并结构化的日志不仅可以更好地帮助定位问题及复现,也能够发现性能问题的端倪,甚至能够帮忙用来解决线上 CPU 及内存爆掉的问题。
Published: at 13:00 - async_hooks、CLS 与 ALS
为什么需要监听异步资源?在一个 Node 应用中,异步资源监听使用场景最多的地方在于:异常捕捉时需要提供用户信息,在每次客户端请求中保持一致的用户信息
Published: at 12:01 - Node 中的全链路式日志
有效解决此类问题,我们需要依赖全链路式的日志作为蛛丝马迹。如当发现测试环境某条 API 延迟过高时,通过该 API 在日志系统中找到所涉及到的所有关键逻辑及数据库查询,查找是否 SQL 查询过多或其中有慢查询所致,或者是否被上游服务拖累。
Published: at 13:00 - 我是如何高效地组织 npm scripts
众所周知,一个 Javasript 项目的脚本类工具,可以使用 package.json 中的 scripts 字段来组织,简单来说,这就是 npm script 。 最典型最常用约定俗成的一个是 npm start ,用以启动项目: 约定俗成的还有很多,如下所列 + npm install + npm test + npm publis
Published: at 16:00 - 如何使用 Node 开发一个命令行工具
一个 Node 脚本,一个 PATH 环境变量,npm 安装全局模块时是如何处理命令行脚本的?本文将引导你使用 Node 开发一个好用漂亮的命令行工具
Published: at 14:18 - 如何写一个 C 扩展
大家好,我是山月。 我还有工作的时候,据我同事说,他作为一个 Node 开发者去字节跳动面试时,面试官问到: 你写过 C++ 的扩展吗? 自此之后,他再也没有面试过 Node,前几天听闻他的消息时,他的 title 已变成前端开发工程师,当他再次大厂面试时,对以前的 Node 经验闭口不提。 今天将学习 node 中的 napi , 并从
Published: at 03:31 - 在 VS Code 中调试 nodejs
大家好,我是山月。 不啰嗦,直接开始。 由于 VSCode 内置 Node 调试器,调试 Node 极其简单,遵循以下步骤 1. 在 ToolBar 中找到 Run And Debug 按钮并点击,或直接 <Command+Shift+D> 打开调试 1. 在调试面板顶测选择 Run Current File 1. 点击绿色调试小按钮,开
Published: at 05:37 - Javascript 调试基础与示例
使用 Javascript 写代码,如论是在 Node 后端环境还是前端单页应用,调试是资深程序员的进身之阶! 程序员的水平提示之路只有一条,那就是乐此不疲地调试代码。某非著名非大师山月如是说道。 + Resume : 执行到下一个断点 + Step Over : 执行下一语句 + Step Into : 执行下一语句,如遇到函数,则进入
Published: at 02:20 - 如何调试 node.js 源码
node.js 源码托管在 $1。 通过以下命令对 node.js 源码进行编译。 **等待的时间较长,需要一顿吃火锅的功夫。** 源码编译之后会生成 ./out 目录,在根目录中会生成可执行命令行工具 node 与 node_g ,指向 ./out 中的符号链接。 **使用 node_g 替代全局的 node ,可对源码进行调试。**
Published: at 16:00 -
addon
撰写中
- Body Parse / Raw Body
在 Node Server 中, HTTP Request 基于 Readable Stream ,我们可以通过读取可读流的方式,将原始请求体读取出来。 简单粗暴的解析代码如下: 我们知道,为了节省带宽,在针对静态资源进行部署时,往往会做 gzip/brotli 的压缩。 从浏览器发的请求来看,也会有经过压缩的内容,此时在服务器端需要先把
Published: at 16:00 -
raw-data
撰写中
-
child-process
撰写中
-
ci-release
撰写中
-
debug-tips
撰写中
- 环境变量应该扔在哪里
+ Application: .env + Container: .env + CI: Gitlab CI + Kubernetes Config/Environment + Consul/Vault
Published: at 05:06 - Node 中异常上报与监控
date: 2018-07-18 21:00 --- 在一个后端服务设计中,异常捕获是必不可少需要考虑的因素 **而当异常发生时,能够第一时间捕捉到并且能够获得足够的信息定位到问题至关重要** 这也是本篇文章的内容 刚开始,先抛出两个问题 1. 在生产环境中后端连接的数据库挂了,是否能够第一时间收到通知并定位到问题,而不是等到用户反馈之后
Published: at 16:00 -
进程:exec 与 spawn
撰写中
-
form
撰写中
- FileSystem API
+ fsevents + fs-extra + chokidar + graceful-fs + readdirp + fstream
Published: at 17:18 -
gc
撰写中
-
gyp
撰写中
- 一个简单的 HTTP Server
> 本文涉及到的核心模块: > > + http > + stream > + buffer > + zlib: (间接设计) > > 本文涉及到以下库及模块: > + $1: 解析 MIME TYPE > + $1 > + $1: 用以解析 URL。同时也可使用原生模块 url。 > + $1: 用以接续 querystring。同时也
Published: at 16:00 -
监控
撰写中
-
nexttick
撰写中
-
oom
撰写中
-
process
撰写中
-
protolbuffer
撰写中
- 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:
Published: at 16:00 -
relese-error
撰写中
- 在 Node 中引入一个模块时发生了什么
(function(exports, require, module, __filename, __dirname) { // 所有的模块代码都被包裹在这个函数中 const fs = require('fs') const _ = require('lodash') }); js require('internal/modules/cj
Published: at 16:00 - Node 服务端框架路由解析
大家好,我是山月。在上篇文章介绍了 HTTP 报文及简单的服务端框架要素,如如何接受请求参数等。这篇文章介绍另一个常见的主题:路由。 最简单的路由可使用 req.url 进行路由分发不同的逻辑,代码如下所示。 但是对于一个非Demo式的页面,业务逻辑都堆在一起,这显得太为简陋。 作为一个能够在生产环境使用,较为复杂的路由至少能够解析以下路
Published: at 04:15 - sentryPublished: at 16:00
- Stream
1. 服务器中的 HTTP Request 1. 客户端中的 HTTP Response 1. 标准输出 stdout + destroy + finish + error + WritableState / + needDrain + buffered + Symbol(KHandler) + res._removeTE / res.c
Published: at 16:00 - Stringify: Node 服务端序列化及反序列化优化
> https://github.com/fastify/fastify/blob/main/docs/Validation-and-Serialization.md fast-json-stringify https://npm.devtool.tech/json-stringify-safe 在服务端向客户端发送数据时,需要把梳理好的
Published: at 16:00 -
epoll
撰写中
-
timeout
撰写中
-
如何加载 typescript 与 babel 代码
撰写中
-
v8-compile-cache
撰写中