mcpField
C
coding-node

coding-node

github.com/alphaonedev开发49 次安装
代码仓库

关于 coding-node

coding-node 是面向 Node.js 22 及更高版本服务端开发者的技能,涵盖异步编程、模块、流、包管理及常见 Web 框架。

主要功能

  1. 01异步编程模式
  2. 02支持 ECMAScript Modules
  3. 03使用 npm 和 pnpm 管理依赖
  4. 04事件循环与流处理
  5. 05构建 Express、Fastify 和 Hono 服务

适用场景

  1. 01使用 Node.js 创建 HTTP API
  2. 02排查事件循环阻塞
  3. 03以流方式处理文件
  4. 04使用 npm 或 pnpm 管理项目依赖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill coding-node

安装后在 Claude Code 中输入/coding-node确认已加载。

详细介绍

coding-node

用途

此技能提供 Node.js 22 及以上版本的专业知识,涵盖异步编程模式、ECMAScript 模块(ESM)、npm 和 pnpm 等包管理器、事件循环、流,以及 Express、Fastify 和 Hono 等框架。可用于指导用户构建高效、现代的服务端应用程序。

适用场景

当用户需要处理 Node.js 中的异步操作、使用 npm 或 pnpm 管理依赖项、调试事件循环问题、处理流,或使用 Express、Fastify 或 Hono 搭建 Web 服务器时,请使用此技能。它也适用于 JavaScript 环境中的后端开发任务,例如创建 API、处理文件或构建实时应用程序。

核心能力

  • 异步模式:使用 async/await 编写非阻塞代码;例如,async function fetchData() { const data = await fetch('url'); return data; }。
  • ESM 支持:使用 import 语法导入模块;例如,在扩展名为 .mjs 的 Node.js 22+ 文件中,或在 package.json 中设置 "type": "module" 后,使用 import express from 'express';。
  • 包管理器:使用 npm(例如,npm install express --save)或 pnpm(例如,pnpm add fastify)管理依赖项;pnpm 支持工作区,安装速度更快。
  • 事件循环:说明并优化阻塞操作;使用 process.nextTick() 在下一个事件循环阶段之前安排回调。
  • 流:使用 Readable、Writable 或 Transform 流分块处理数据;例如,const fs = require('fs'); const readStream = fs.createReadStream('file.txt'); readStream.on('data', chunk => console.log(chunk));。
  • 框架:使用 Express(例如,app.use(express.json()))、Fastify(例如,fastify.get('/path', handler))或 Hono(例如,app.get('/route', c => c.text('Hello')))搭建服务器。

使用模式

要完成任务,请始终在项目设置中指定 Node.js 22+。使用 ESM 时,在 package.json 中添加 "type": "module" 并使用 import 语句。处理异步任务时,将代码放入 async 函数并使用 try-catch 块。使用 npm 时,运行 npm init -y 创建 package.json,然后安装软件包。使用 pnpm 时,通过 pnpm init 初始化,并将其作为 npm 命令的直接替代品。处理流时,直接对其进行管道传输;例如:readStream.pipe(writeStream)。使用框架时,创建 HTTP 服务器实例并定义路由;例如,使用 app.listen(3000) 启动 Express。

常用命令/API

  • Npm 命令:初始化项目:npm init -y。安装软件包:npm install express --save-prod。更新依赖项:npm update。运行脚本:在 package.json 中使用 npm run start。
  • Pnpm 命令:添加软件包:pnpm add fastify。移除软件包:pnpm remove package。安装全部依赖项:pnpm install。
  • API 端点:在 Express 中,定义路由,例如 app.get('/users', (req, res) => res.json(users))。在 Fastify 中,使用 fastify.post('/login', async (req, reply) => { /* auth logic */ reply.send({ token: 'abc' }); })。在 Hono 中,设置:const app = new Hono(); app.get('/api/data', c => c.json({ data: 'value' }));。
  • 事件循环交互:对 I/O 回调使用 setImmediate();例如,setImmediate(() => console.log('After current event loop'));。
  • Streams API:创建可读流:const { Readable } = require('stream'); const readable = Readable.from(['line1', 'line2']); readable.pipe(process.stdout);。 如果需要 API 密钥(例如,用于外部服务),请将其设为环境变量:process.env.API_KEY = 'your_key',并在命令中通过 $YOUR_API_KEY 访问。

集成说明

将此技能与其他工具集成时,可使用 Node.js 作为运行环境。例如,可通过 mongoose 与 MongoDB 数据库集成:使用 pnpm add mongoose 安装,然后在代码中连接:const mongoose = require('mongoose'); mongoose.connect(process.env.MONGO_URI);。使用 dotenv 管理环境变量:运行 npm install dotenv 安装,然后引入并配置:require('dotenv').config(); const key = process.env.API_KEY;。部署时,可将服务导出到 Vercel 或 Heroku 等工具;例如,在 package.json 中将 start 脚本设置为 "start": "node server.js"。在 package.json 中指定运行环境要求,以确保兼容性:"engines": { "node": ">=22" }。集成流时,可与 zlib 等模块串联以进行压缩:readStream.pipe(zlib.createGzip()).pipe(writeStream)。

错误处理

异步函数始终使用 try-catch:例如,try { const result = await someAsyncFunction(); } catch (error) { console.error(error.message); }。对于流,监听 'error' 事件:例如,readStream.on('error', err => { console.error('Stream error:', err); process.exit(1); })。在 Express 中,使用中间件处理错误:app.use((err, req, res, next) => { res.status(500).send('Server Error'); })。对于 npm/pnpm,检查退出代码:例如,在脚本中使用 if [ $? -ne 0 ]; then echo "Command failed"; fi。验证输入以防止阻塞事件循环,并使用 process.on('uncaughtException', (err) => { console.error(err); process.exit(); }) 处理未捕获的错误。

具体用法示例

  1. 搭建基本的 Express 服务:创建文件 server.js,内容如下:import express from 'express'; const app = express(); app.get('/', (req, res) => res.send('Hello World')); app.listen(3000, () => console.log('Server running'));。如果使用 ESM,请通过 node --experimental-vm-modules server.js 运行,然后访问 http://localhost:3000。
  2. 使用 Pnpm 处理文件流:首先安装依赖:pnpm add fs。然后在代码中执行:const fs = require('fs'); const readStream = fs.createReadStream('input.txt'); readStream.on('data', chunk => console.log(chunk.toString())); readStream.on('end', () => console.log('Done'));。运行 node script.js,即可分块读取并记录文件内容。

图关系

  • 相关于:coding(同一集群),因为它们共享 JavaScript 基础知识。
  • 关联到:通过 "nodejs" 和 "javascript" 等标签与其他编码技能相连,并可能关联到前端技能以进行全栈开发。
  • 集成于:与“coding”集群中的工具集成,例如数据库或部署技能,以构建端到端应用。

评论

支持 Markdown