Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,主要用于在服务器端运行 JavaScript。它使得开发者能够使用 JavaScript 编写高性能的后端服务,广泛应用于 Web 开发、API 服务、实时通信等领域。以下是 Node.js 的核心知识点整理。
一、Node.js 基础
1.1 Node.js 是什么?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,设计用于在服务器端运行 JavaScript。它的特点包括:
-
事件驱动:基于事件循环模型,适合处理高并发请求。
-
非阻塞 I/O:通过异步 I/O 操作提升性能。
-
单线程:通过事件循环处理并发请求,避免多线程的复杂性。
-
高性能:Node.js 运用 V8 引擎与高效事件循环机制,可应对大量并发连接,适用于高负载实时应用。
-
跨平台:Node.js 能在多操作系统运行,如 Windows、Linux、macOS 。
1.2 Node.js 的作用
-
搭建 Web 服务:可以快速构建后端服务,处理 HTTP 请求。
-
运行 JavaScript:在服务器端运行 JavaScript 代码。
-
编写后台接口:提供 RESTful API 或 GraphQL 接口。
二、Node.js 环境搭建
2.1 安装 Node.js
从 Node.js 官网 下载并安装 Node.js。
2.2 初始化项目
使用 npm init
初始化项目,生成 package.json
文件。
npm init -y
2.3 运行 JavaScript 文件
-
使用
node
命令运行 JavaScript 文件。node app.js
-
使用
nodemon
实现热更新。nodemon app.js
三、Node.js 核心模块
3.1 文件系统(fs 模块)
Node.js 提供了 fs
模块用于操作文件系统。
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('文件写入成功');
});
3.2 模块系统
Node.js 使用 CommonJS 模块系统,支持模块的导入和导出。
-
导出模块:
// math.js module.exports = { add: (a, b) => a + b, subtract: (a, b) => a - b };
-
导入模块:
const math = require('./math'); console.log(math.add(2, 3)); // 5
四、搭建 Web 服务
4.1 使用 Express 框架
Express 是 Node.js 中最流行的 Web 框架。
npm install express
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World');
});
app.listen(4000, () => {
console.log('服务已启动:http://127.0.0.1:4000');
});
4.2 设置静态资源路径
使用 express.static
设置静态资源目录。
app.use(express.static('public'));
4.3 跨域资源共享(CORS)
使用 cors
模块解决跨域问题。
npm install cors
const cors = require('cors');
app.use(cors());
五、路由分发
5.1 创建路由文件
在 router/exam.js
中定义路由。
const router = require('express').Router();
router.get('/category', (req, res) => {
res.send({ code: 200, data: [] });
});
module.exports = router;
5.2 加载路由
在 app.js
中加载路由。
app.use('/api/exam', require('./router/exam'));
六、数据库操作
6.1 安装 MySQL 模块
使用 mysql
模块操作 MySQL 数据库。
npm install mysql
6.2 配置数据库连接
在 common/db/database.js
中配置数据库连接信息。
module.exports = {
mysql: {
host: 'localhost',
user: 'root',
password: 'password',
database: 'test',
port: 3306
}
};
6.3 创建数据库连接池
在 common/db/db.js
中创建连接池。
const mysql = require('mysql');
const dbconfig = require('./database');
const pool = mysql.createPool(dbconfig.mysql);
module.exports = {
query: function (sql) {
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
connection.query(sql, (err, rows) => {
if (err) reject(err);
else resolve(rows);
connection.release();
});
});
});
}
};
七、拓展知识点
7.1 中间件
中间件是 Express 的核心概念,用于处理请求和响应。
app.use((req, res, next) => {
console.log('请求时间:', new Date());
next();
});
7.2 错误处理
使用错误处理中间件捕获异常。
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('服务器错误');
});
7.3 文件上传
使用 multer
模块处理文件上传。
npm install multer
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
res.send('文件上传成功');
});
7.4 WebSocket
使用 ws
模块实现实时通信。
npm install ws
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
ws.on('message', (message) => {
console.log('收到消息:', message);
});
ws.send('连接成功');
});
八、总结
Node.js 是一个强大的后端开发工具,结合 Express 框架可以快速搭建 Web 服务。通过文件系统、模块系统、路由分发、数据库操作等知识点,开发者可以构建功能完善的后端应用。此外,中间件、错误处理、文件上传和 WebSocket 等拓展知识点进一步提升了 Node.js 的应用场景和开发效率。
希望这份整理对你有帮助!如果需要进一步细化某部分内容,可以告诉我! 😊