NodeJS快速入门

发布于:2025-07-26 ⋅ 阅读:(21) ⋅ 点赞:(0)

本文详细介绍了如何快速入门Node.js的相关知识点。

1. Node.js概述

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,让 JavaScript 可以在服务器端运行,为构建网络应用程序提供了强大支持。Node.js以事件驱动、非阻塞 I/O 模型为核心,使得应用程序在处理大量并发连接时表现高效。主要应用场景有Web 服务器、实时通信、自动化工具等。

2. Node.js 与 JavaScript 比较

  • 相同点
    • 语法一致:Node.js 使用 JavaScript 作为编程语言,二者在基本语法上完全相同,如变量声明、函数定义、控制流语句等。
    • 数据类型相同:都支持常见的数据类型,如字符串、数字、布尔值、对象、数组等。
  • 区别
    • 运行环境:JavaScript 通常在浏览器环境中运行,依赖于浏览器的 API 进行 DOM 操作、事件处理等;而 Node.js 运行在服务器端,提供了文件系统操作、网络通信等服务器端相关的 API。
    • 全局对象不同:在浏览器中,全局对象是 window;在 Node.js 中,全局对象是 global
    • 用途不同:浏览器端 JavaScript 主要用于实现网页的交互效果和动态展示;Node.js 主要用于服务器端开发,构建网络应用、API 服务等。

3. Node.js 特性

  • 事件驱动
    • Node.js 基于事件驱动模型,通过事件触发相应的处理函数。在一些系统中,当有新的员工注册事件发生时,可以触发相应的处理函数来更新员工数据库。
// 创建一个事件发射器
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();

// 定义事件处理函数
const handleNewEmployee = (employee) => {
    console.log(`新员工 ${employee.name} 已注册`);
    // 添加更新数据库等操作
};

// 注册事件监听器
eventEmitter.on('newEmployee', handleNewEmployee);

// 触发事件
const newEmployee = { name: '张三', id: 1 };
eventEmitter.emit('newEmployee', newEmployee);
  • 非阻塞 I/O
    • 非阻塞 I/O 允许 Node.js 在进行 I/O 操作(如文件读写、网络请求)时,不会阻塞主线程,而是继续执行后续代码。在 OA 系统中,当处理大量并发的文件上传请求时,非阻塞 I/O 可以提高系统的响应性能。
const fs = require('fs');

// 非阻塞读取文件
fs.readFile('employee.txt', 'utf8', (err, data) => {
    if (err) {
        console.error('读取文件出错:', err);
        return;
    }
    console.log('文件内容:', data);
});

console.log('继续执行其他任务...');
  • 单线程与多线程
    • Node.js 的主线程是单线程的,但通过事件循环机制可以高效地处理并发请求。同时,Node.js 也提供了 child_process 模块来实现多线程处理,可用于处理一些 CPU 密集型任务,如 OA 系统中的数据统计和分析。
const { fork } = require('child_process');

// 创建子进程
const child = fork('worker.js');

// 向子进程发送消息
child.send({ task: '统计员工数量' });

// 接收子进程的消息
child.on('message', (result) => {
    console.log('统计结果:', result);
});
  • 模块化
    • Node.js 支持模块化开发,通过 requireexports 机制可以方便地引入和导出模块。在 OA 系统中,可以将不同的功能模块(如员工管理、考勤管理)封装成独立的模块,提高代码的可维护性和复用性。
// 模块文件:employee.js
const employees = [
    { name: '张三', id: 1 },
    { name: '李四', id: 2 }
];

const getEmployees = () => {
    return employees;
};

module.exports = {
    getEmployees
};

// 主文件:app.js
const employeeModule = require('./employee');
const allEmployees = employeeModule.getEmployees();
console.log('所有员工:', allEmployees);

4. npm 简介

  • 定义
    • npm(Node Package Manager)是 Node.js 的包管理工具,也是世界上最大的开源库生态系统之一。它允许开发者轻松地安装、共享和管理 Node.js 模块。
  • 功能
    • 包安装:使用 npm install 命令可以安装各种第三方模块。在 OA 系统中,可以安装 express 框架来快速搭建 Web 服务器。
npm install express
- **依赖管理**:npm 会自动处理模块之间的依赖关系,确保安装的模块及其依赖的模块版本兼容。在项目的 `package.json` 文件中可以记录项目的依赖信息,方便团队协作和项目部署。
{
    "name": "oa-system",
    "version": "1.0.0",
    "dependencies": {
        "express": "^4.17.1"
    }
}
- **脚本执行**:可以在 `package.json` 文件中定义各种脚本命令,使用 `npm run` 命令来执行这些脚本。例如,定义一个启动开发服务器的脚本。
{
    "name": "oa-system",
    "version": "1.0.0",
    "scripts": {
        "start": "node app.js"
    },
    "dependencies": {
        "express": "^4.17.1"
    }
}
npm run start

5. Node.js 预备知识

  • JavaScript 基础
    • 掌握 JavaScript 的基本语法,包括变量、数据类型、函数、对象、数组等。
    • 熟悉 JavaScript 的作用域、闭包、原型链等概念,这些概念在 Node.js 开发中同样重要。
  • 异步编程
    • 了解异步编程的概念,包括回调函数、Promise、async/await 等异步编程方式。Node.js 大量使用异步编程来处理 I/O 操作,因此掌握异步编程是 Node.js 开发的关键。
// Promise
const readFilePromise = (filePath) => {
    return new Promise((resolve, reject) => {
        const fs = require('fs');
        fs.readFile(filePath, 'utf8', (err, data) => {
            if (err) {
                reject(err);
            } else {
                resolve(data);
            }
        });
    });
};

readFilePromise('employee.txt')
  .then((data) => {
        console.log('文件内容:', data);
    })
  .catch((err) => {
        console.error('读取文件出错:', err);
    });

// async/await
const readFileAsync = async () => {
    try {
        const data = await readFilePromise('employee.txt');
        console.log('文件内容:', data);
    } catch (err) {
        console.error('读取文件出错:', err);
    }
};

readFileAsync();
  • 命令行基础
    • 熟悉基本的命令行操作,如文件和目录的创建、删除、移动等。在 Node.js 开发中,需要使用命令行来安装模块、启动服务器等。
  • HTTP 协议基础
    • 了解 HTTP 协议的基本概念,包括请求方法(GET、POST 等)、请求头、响应状态码等。因为 Node.js 常用于构建 Web 服务器和 API 服务,与 HTTP 协议密切相关。
const http = require('http');

const server = http.createServer((req, res) => {
    if (req.method === 'GET') {
        res.statusCode = 200;
        res.setHeader('Content-Type', 'text/plain');
        res.end('这是一个 GET 请求');
    } else if (req.method === 'POST') {
        let body = '';
        req.on('data', (chunk) => {
            body += chunk.toString();
        });
        req.on('end', () => {
            res.statusCode = 200;
            res.setHeader('Content-Type', 'text/plain');
            res.end(`这是一个 POST 请求,请求体内容: ${body}`);
        });
    }
});

const port = 3000;
server.listen(port, () => {
    console.log(`服务器正在监听端口 ${port}`);
});



← 上一篇 AngularJS知识快速入门(上)
记得点赞、关注、收藏哦!
下一篇 Ajax——在OA系统提升性能的局部刷新 →

网站公告

今日签到

点亮在社区的每一天
去签到