☰
Node.js核心关键字与模块详解
2026/10/30 5:16:30 网站建设 项目流程

1. Node.js核心关键字解析

Node.js作为JavaScript运行时环境,其关键字体系构成了开发的基础框架。这些关键字不仅包含语言本身的保留字,还涵盖了Node.js特有的模块、API和编程模式。理解这些关键字对于编写高效、稳定的Node.js应用至关重要。

1.1 基础语言关键字

Node.js继承了JavaScript的核心关键字,这些是构建任何程序的基础:

// 变量声明 const, let, var // 流程控制 if, else, switch, case, default for, while, do, break, continue // 函数相关 function, return, yield async, await // 异常处理 try, catch, finally, throw // 类与对象 class, extends, super new, this, typeof, instanceof // 其他 null, undefined, true, false export, import

注意:在Node.js中应优先使用const和let,var由于变量提升特性可能导致意外行为。async/await是处理异步操作的首选方式。

1.2 全局对象关键字

Node.js环境特有的全局对象:

// 核心全局对象 global, process, console, Buffer // 模块系统 module, exports, require, __dirname, __filename // 定时器 setTimeout, setInterval, setImmediate clearTimeout, clearInterval, clearImmediate

这些全局对象无需require即可使用,是Node.js区别于浏览器JavaScript的关键特征。process对象特别重要,它提供了与当前Node.js进程交互的接口。

2. 核心模块关键字

2.1 文件系统模块(fs)

文件操作是Node.js的强项,fs模块提供同步和异步两种API:

const fs = require('fs'); // 异步文件读取 fs.readFile('/path/to/file', (err, data) => { if (err) throw err; console.log(data); }); // 同步版本 const data = fs.readFileSync('/path/to/file'); // 常用方法 fs.writeFile, fs.appendFile, fs.stat fs.mkdir, fs.readdir, fs.rename, fs.unlink

实践建议:生产环境优先使用异步API,避免阻塞事件循环。对大文件操作考虑使用fs.createReadStream和fs.createWriteStream。

2.2 HTTP模块

构建Web服务的核心模块:

const http = require('http'); // 创建服务器 const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); // 启动监听 server.listen(3000, '127.0.0.1', () => { console.log('Server running at http://127.0.0.1:3000/'); }); // 客户端请求 http.get('http://example.com', (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log(data); }); });

2.3 事件模块(events)

Node.js事件驱动架构的核心:

const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const myEmitter = new MyEmitter(); myEmitter.on('event', () => { console.log('an event occurred!'); }); myEmitter.emit('event'); // 常用方法 emitter.once(), emitter.removeListener() emitter.prependListener(), emitter.eventNames()

3. 异步编程关键字

3.1 Promise相关

new Promise((resolve, reject) => { // 异步操作 if (success) { resolve(value); } else { reject(error); } }) .then(value => { /* 处理结果 */ }) .catch(err => { /* 处理错误 */ }) .finally(() => { /* 最终执行 */ }); // 工具方法 Promise.all(), Promise.race() Promise.resolve(), Promise.reject()

3.2 async/await模式

async function fetchData() { try { const result = await someAsyncOperation(); console.log(result); } catch (error) { console.error('Error:', error); } } // 立即执行async函数 (async () => { await fetchData(); })();

4. 常用NPM包关键字

4.1 Express框架

const express = require('express'); const app = express(); // 路由处理 app.get('/', (req, res) => { res.send('Hello World!'); }); // 中间件 app.use(express.json()); app.use('/static', express.static('public')); // 启动服务器 app.listen(3000, () => { console.log('Example app listening on port 3000!'); });

4.2 Socket.IO

实时通信解决方案:

const io = require('socket.io')(3000); io.on('connection', (socket) => { console.log('a user connected'); socket.on('chat message', (msg) => { io.emit('chat message', msg); }); socket.on('disconnect', () => { console.log('user disconnected'); }); });

5. 调试与性能关键字

5.1 调试工具

// 使用debug模块 const debug = require('debug')('myapp:server'); debug('Starting server...'); // Node.js内置调试器 node inspect script.js // 或 node --inspect script.js

5.2 性能分析

// 性能钩子 const { performance, PerformanceObserver } = require('perf_hooks'); const obs = new PerformanceObserver((items) => { console.log(items.getEntries()[0].duration); performance.clearMarks(); }); obs.observe({ entryTypes: ['measure'] }); performance.mark('A'); // 执行一些操作 performance.mark('B'); performance.measure('A to B', 'A', 'B');

6. 安全相关关键字

6.1 加密模块(crypto)

const crypto = require('crypto'); // 创建hash const hash = crypto.createHash('sha256'); hash.update('some data to hash'); console.log(hash.digest('hex')); // 加密解密 const cipher = crypto.createCipheriv(algorithm, key, iv); let encrypted = cipher.update('some clear text data', 'utf8', 'hex'); encrypted += cipher.final('hex'); const decipher = crypto.createDecipheriv(algorithm, key, iv); let decrypted = decipher.update(encrypted, 'hex', 'utf8'); decrypted += decipher.final('utf8');

6.2 环境变量管理

// 使用dotenv管理环境变量 require('dotenv').config(); console.log(process.env.DB_HOST); // 生产环境应直接设置环境变量 // 启动时:DB_HOST=localhost node app.js

7. 现代Node.js特性关键字

7.1 ES模块系统

// package.json中添加 "type": "module" // 使用import/export语法 import fs from 'fs'; import { readFile } from 'fs/promises'; export function myFunction() { ... } export default myDefaultExport;

7.2 Worker Threads

CPU密集型任务的解决方案:

const { Worker, isMainThread, parentPort } = require('worker_threads'); if (isMainThread) { const worker = new Worker(__filename); worker.on('message', (msg) => { console.log(msg); }); worker.postMessage('Hello worker'); } else { parentPort.on('message', (msg) => { parentPort.postMessage(msg.toUpperCase()); }); }

8. 实用工具关键字

8.1 路径处理(path)

const path = require('path'); // 路径拼接 const fullPath = path.join(__dirname, 'public', 'index.html'); // 路径解析 path.parse('/home/user/dir/file.txt'); /* { root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' } */ // 常用方法 path.resolve(), path.relative() path.basename(), path.extname()

8.2 实用工具模块(util)

const util = require('util'); // 回调转Promise const sleep = util.promisify(setTimeout); await sleep(1000); // 调试输出 console.log(util.inspect(obj, { depth: null, colors: true })); // 继承工具 util.inherits(MyStream, EventEmitter);

9. 测试相关关键字

9.1 断言模块(assert)

const assert = require('assert'); assert.strictEqual(1, 1); // 通过 assert.deepStrictEqual({ a: 1 }, { a: 1 }); // 深度比较 // 常用断言方法 assert.ok(), assert.equal() assert.throws(), assert.rejects()

9.2 测试框架(Jest/Mocha)

// Jest测试示例 describe('my function', () => { test('should return true when...', () => { expect(myFunction()).toBe(true); }); }); // Mocha测试示例 describe('Array', function() { describe('#indexOf()', function() { it('should return -1 when not present', function() { assert.equal([1,2,3].indexOf(4), -1); }); }); });

10. 部署与运维关键字

10.1 进程管理(PM2)

// 启动应用 pm2 start app.js --name "my-app" // 集群模式 pm2 start app.js -i max // 常用命令 pm2 list, pm2 logs, pm2 monit pm2 reload, pm2 delete

10.2 配置管理

// 使用config模块 const config = require('config'); // config/default.json { "server": { "port": 3000, "host": "localhost" } } // 获取配置 const port = config.get('server.port');

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询