使用 TypeScript 创建 Koa 服务器
概述尽管使用 NodeJS 搭建 HTTP 服务器早已是 Web 开发者们的家常便饭,但结合时下最热门的 TypeScript 却能带来更棒的开发体验。今天,我们就来一起尝试将它们结合起来,快速搭建一个健壮的 Koa 服务。 Koa 基础环境搭建我们从 Koa 开始,它是一个轻量且富有表现力的 NodeJS Web 框架。 安装核心依赖安装 Koa 及其常用的中间件 (Middleware): 1npm install koa koa-bodyparser koa-json koa-logger koa-router 注意: koa-bodyparser、koa-json、koa-logger 和 koa-router 都属于 Koa 的中间件。 编写基础 Koa 代码首先,创建 src 目录用于存放源代码,并在其中创建 index.js 文件: 12src└── index.js 基础 Koa 服务 (index.js): 123456789101112131415161718192021222324252627import Koa from 'koa...
Node.js 应用提取 Heap 并加以分析的一些常用方法
提取heap snapshot在 Node.js 的本地运行环境中,开发者可以利用多种工具来提取堆(heap)转储,以分析内存使用情况,检测内存泄漏,优化性能。以下是一些常用且有效的工具: heapdump 模块heapdump 是一个流行的 Node.js 模块,允许在运行时生成 V8 引擎的堆快照。通过这些快照,开发者可以深入分析应用程序的内存使用情况,识别潜在的内存泄漏。 安装与使用: 1npm install heapdump 在应用程序中引入并使用: 12345678910const heapdump = require('heapdump');// 在需要生成堆快照的地方调用heapdump.writeSnapshot((err, filename) => { if (err) { console.error('Heap snapshot failed:', err); } else { console.log('Heap snapshot written...
Web 开发通用代码记录
结合 Koa 写出流文件/图片到前端/浏览器1npm i fs-extra mime-types axios 读取本地文件写回前端123const localPath = path.join(__dirname, '../..', 'pic/not_found.png');ctx.type = mime.lookup(localPath);ctx.body = fs.readFileSync(localPath); 读取外部链接流文件写回前端12345678import mime from 'mime-types';const response = await axios({ url, responseType: 'stream',});ctx.type = mime.lookup(url);ctx.body = response.data; 读取外部链接流文件并写入本地再返回前端123456789101112131415161718import fs...
自定义ESLint规则并整合到SonarQube
概述本文介绍如何自定义ESLint规则,并将其整合到SonarQube平台进行统一的代码质量管理。通过这种方式,可以将团队的编码规范和最佳实践落地到实际项目中,在编码阶段对开发者进行提示和约束。 背景介绍ESLint简介ESLint是目前最流行的JavaScript代码静态分析工具,通过设定的语法规则来检查代码,约束代码风格,提高代码的健壮性,避免因代码不规范导致应用出现bug。 核心特点: 规则可自定义,适应团队特定需求 支持使用社区热门规则集(如Airbnb、Standard等) 可扩展的插件机制 SonarQube简介SonarQube是一个开源的代码质量管理平台,用于持续检测代码质量和安全漏洞。 支持语言: Java, C#, C/C++, PL/SQL, Cobol JavaScript, TypeScript, Python, Go 等二十几种主流编程语言 为什么需要自定义规则在实际业务中,通过自定义规则可以: 落地编码规范:将团队约定的编码规范转化为可执行的检查规则 提前发现问题:在编码阶段即时提示,而非等到代码审查 统一代码风格:多人...
记录 K8s 环境下结合 Alinode 的使用
alinode官方地址:https://help.aliyun.com/product/60298.html?spm=a2c4g.60418.0.0.710343961QetaC 介绍 阿里官方提供的nodejs性能平台面向所有 Node.js 应用,提供 性能监控、安全提醒、故障排查、性能优化 等服务的整体性解决方案,尤其适合业务发展迅速、应用发布频繁、流量上升明显的 Node.js 应用。 Node.js 性能平台特别适合业务发展迅速、应用发布频繁、流量上升明显的 Node.js 应用。 平台全部功能免费使用 Node.js性能平台使用指南https://github.com/aliyun-node/Node.js-Troubleshooting-Guide/blob/master/0x04_%E5%B7%A5%E5%85%B7%E7%AF%87_Node.js%20%E6%80%A7%E8%83%BD%E5%B9%B3%E5%8F%B0%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97.md 使用创建应用 登录阿里云官网 https://www.al...
Node 环境 Canvas 安装慢、安装失败的解决方法
摘自:https://blog.csdn.net/EverRose/article/details/122846767 Node.js 是跨平台的,那么对于任何的 Node 模块理论也是应该是跨平台的。然而,有些 Node 模块直接或间接使用原生 C/C++ 代码,这些东西要跨平台,就需要使用源码根据实际的操作平台环境进行原生模块编译。这也是 Canvas、SQLite3 等模块安装的折磨之源。 Canvas 的安装过程 npm 下载在仓库中的 Canvas 包 执行 Canvas 的 package.json 中的 install 命令(node-pre-gyp install --fallback-to-build) node-pre-gyp 下载 Canvas 已编译好的 macOS、Linux 和 Windows 的二进制文件,如果预构建的二进制文件不存在或不可用,则回退到从源代码构建 node-gyp 编译为当前平台可用的 Node 模块 为什么安装慢,还容易失败从安装过程可以发现,步骤 3 和步骤 4 是核心问题区。Canvas 的二进制文件托管在 h...
NVM 的安装及使用
NVM 是一个非常方便的 Node.js 包管理工具,可以实现在 Node.js 各个不同版本之间自由地进行切换。下面介绍用 root 权限安装 NVM 工具。到 2021 年 7 月,NVM 的最新版本为 v0.39.1。 Linux 安装 NVMGitHub 地址:https://github.com/nvm-sh/nvm 1. 下载包12cd /usr/localwget --no-check-certificate https://github.com/nvm-sh/nvm/archive/refs/tags/v0.39.1.tar.gz 2. 解压包1tar -xvf v0.39.1.tar.gz 在这里拿到文件的安装目录,放哪里无所谓。 3. 配置 bashrc 文件将 export NVM_DIR="/usr/local/nvm-0.39.1" 改成自己的目录。 123456# 编辑文件vim ~/.bashrcexport NVM_DIR="/usr/local/nvm-0.39.1"[ -s "$NV...
Node.js 的包更新策略及实践
package.json 版本123456^ 开头的版本会固定首个大版本,后面的两个小版本会更新到最新,如 vue ^2.5.0 => vue 2.6.14~ 开头的版本会固定前两个版本,后面的小版本会更新到最新 vuex ~3.1.0 => vuex 3.1.3不带符号,直接写版本号会安装固定的版本 vue-router 3.5.3 => vue-router 3.5.3最小的版本设置为 x 或者 *,其最小的版本号会更新到最新 react 15.4.x => react 15.4.2依次类推任何一位版本设置为 x 或者 *,其当前位置的版本号都会更新到最新永远保持最新版本可以将版本号设置为 x 或者 *,如 pinia * => pinia 2.0.12 npm-check-updates(npm i -g npm-check-updates)工具的使用查看单个包的最新版本1ncu vue 更新 package.json(所有)的最新依赖项1ncu -u 更新单个依赖1ncu -u vue 查看全局的安装包最新版本1ncu -g 检查某...
Node 项目中使用 ESLint
ESLint1. 介绍 ESLint 是最流行的 JavaScript Linter。 Linter 是检查代码风格/错误的小工具。其他类似的 Linter 工具还有:TSLint、stylelint。 它包含三个功能: check syntax find problems 前两个可以统称为 Code-quality rules,例如 no-unused-vars 规则。 enforce code style 最后一个可以称为 Formatting rules,例如 keyword-spacing 规则。 下面介绍的 Prettier 就只有这一个 Formatting rules 功能。 2. 安装12npm install -g eslint # 全局安装npm i -D eslint # 局部安装 3. 使用(1) 生成配置文件下面的命令,可以在项目的根目录创建 .eslintrc.js 配置文件。 1eslint --init 按照交互提示,依次选择进行: (2) 校验文件12eslint yourfile.js ...
Node.js 整合 ELK + Zipkin,输出日志到 Logstash
依赖Web 框架(要求 2.7+)1"koa": "^2.13.1" 日志(基于 TCP 协议)参考:log4js-logstash-tcp 12"log4js": "^3.0.5","log4js-logstash-tcp": "^2.0.0" Zipkin参考:zipkin-instrumentation-koa 12"zipkin-instrumentation-koa": "^0.22.0","zipkin-transport-http": "^0.22.0" 代码(Zipkin 部分)123456789101112// 下游(上游略,上游改 localServiceName 即可)const { Tracer, BatchRecorder, ExplicitContext } = require('zipkin');const ...
