Skip to content

NodeJs文档

快速导航

什么是Node.js?

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境。它让开发者可以使用JavaScript来编写服务器端程序。Node.js采用事件驱动、非阻塞I/O模型,使其轻量且高效,特别适合构建数据密集型的实时应用程序。

Node.js的起源

Node.js由Ryan Dahl于2009年创建。他的目标是创建实时推送网站的实时应用程序。在观察到当时流行的Apache HTTP服务器处理大量并发连接的局限性后,他决定创建一个轻量级的、事件驱动的平台。Node.js的第一个版本发布后迅速获得了开发者社区的关注和支持。

Node.js的特点

事件驱动

Node.js使用事件循环机制处理并发,这使得它能够高效地处理大量并发连接:

  • 基于回调的事件处理
  • 异步编程模型
  • 高效的事件循环

非阻塞I/O

采用非阻塞I/O模型,提高应用程序性能:

  • 异步文件操作
  • 并行请求处理
  • 高并发支持

跨平台

支持多个操作系统平台:

  • Windows
  • macOS
  • Linux
  • Unix

包管理系统

强大的npm生态系统:

  • 庞大的模块库
  • 便捷的依赖管理
  • 版本控制
  • 脚本运行

Node.js的应用场景

Node.js特别适合以下场景:

  • Web应用开发
  • 实时通讯系统
  • 命令行工具
  • 微服务架构
  • API服务
  • 流数据处理

安装Node.js

安装步骤

  1. 下载安装包 从官网下载对应系统的安装包:https://nodejs.org/

  2. Windows安装

bash
# 下载并运行.msi安装包
# 验证安装
node --version
npm --version
  1. Linux安装
bash
# 使用包管理器
sudo apt update
sudo apt install nodejs npm  # Ubuntu/Debian
sudo dnf install nodejs npm  # Fedora
  1. macOS安装
bash
# 使用Homebrew
brew install node

安装注意事项

  1. 版本选择

    • LTS版本:稳定性好,建议生产环境使用
    • Current版本:最新特性,可能不稳定
  2. 环境变量

    • 确保Node.js已添加到系统PATH
    • 验证环境变量设置
  3. 权限设置

    • Linux/macOS可能需要sudo权限
    • Windows可能需要管理员权限
  4. npm配置

    • 设置npm源
    • 配置全局安装路径

Node.js的基本操作

基本概念

模块系统

javascript
// 导入模块
const fs = require('fs');
const path = require('path');

// 导出模块
module.exports = {
    functionName: function() {
        // 函数实现
    }
};

包管理

package.json基本结构:

json
{
  "name": "project-name",
  "version": "1.0.0",
  "description": "项目描述",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.7"
  }
}

异步编程

Promise示例:

javascript
const fs = require('fs').promises;

async function readFile() {
    try {
        const data = await fs.readFile('file.txt', 'utf8');
        console.log(data);
    } catch (error) {
        console.error('Error:', error);
    }
}

常用操作

文件操作

javascript
const fs = require('fs');

// 读取文件
fs.readFile('file.txt', 'utf8', (err, data) => {
    if (err) throw err;
    console.log(data);
});

// 写入文件
fs.writeFile('file.txt', 'Hello World!', (err) => {
    if (err) throw err;
    console.log('File written');
});

HTTP服务器

javascript
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
});

server.listen(3000, () => {
    console.log('Server running at http://localhost:3000/');
});

事件处理

javascript
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();

myEmitter.on('event', () => {
    console.log('事件触发');
});

myEmitter.emit('event');

调试技巧

使用调试器

bash
# 启动调试模式
node --inspect app.js

# 断点调试
debugger;

性能分析

  1. 使用内置分析器
bash
node --prof app.js
  1. 使用Chrome DevTools
  2. 使用第三方工具(如clinic.js)

最佳实践

错误处理

javascript
// 异步错误处理
process.on('uncaughtException', (err) => {
    console.error('未捕获的异常:', err);
    process.exit(1);
});

// Promise错误处理
process.on('unhandledRejection', (reason, promise) => {
    console.error('未处理的Promise拒绝:', reason);
});

安全建议

  1. 依赖管理

    • 定期更新依赖
    • 使用npm audit检查安全问题
    • 锁定依赖版本
  2. 代码安全

    • 输入验证
    • 参数消毒
    • 使用安全的依赖
  3. 环境配置

    • 使用环境变量
    • 区分开发和生产环境
    • 安全的配置管理

性能优化

  1. 代码优化

    • 异步操作
    • 缓存使用
    • 内存管理
  2. 运行优化

    • 负载均衡
    • 集群使用
    • 监控系统
  3. 部署优化

    • Docker容器化
    • CI/CD流程
    • 自动化测试