Node.js使用步骤
本文详细介绍了如何使用 Node.js 和 Express 框架搭建 Web 服务,涵盖项目初始化、静态资源处理、跨域配置、路由分发、数据库操作等核心知识点,并拓展了中间件、错误处理、文件上传和 WebSocket 等进阶内容。通过学习本文,开发者可以快速掌握 Node.js 后端开发的基础与进阶技能,构建高效、可扩展的 Web 应用。
一、搭建 Web 服务
1.1 初始化项目
使用 npm init -y 初始化项目,生成 package.json 文件。
npm init -y
1.2 安装 Express 框架
Express 是 Node.js 中最流行的 Web 框架,用于快速搭建 Web 服务。
npm install express --save
1.3 创建后端程序
在 app.js 中编写代码,设置端口并响应数据。
const express = require('express');
const app = express();
// 响应根路径请求
app.get('/', (req, res) => {
res.send('Hello World');
});
// 设置端口
const PORT = 4000;
app.listen(PORT, () => {
console.log(`服务已启动:http://127.0.0.1:${PORT}`);
});
1.4 配置启动脚本
在 package.json 中添加启动脚本,使用 nodemon 实现热更新。
"scripts": {
"start": "nodemon ./app.js"
}
二、静态资源处理
2.1 导入路径模块
使用 Node.js 的 path 模块处理文件路径。
const path = require('path');
2.2 设置静态资源目录
通过 express.static 设置静态资源目录。
app.use(express.static(path.resolve(__dirname, 'public')));
-
访问地址:
http://127.0.0.1:4000/1.jpg -
如果资源路径为
public/images/1.jpg,则访问地址为http://127.0.0.1:4000/images/1.jpg
2.3 自定义静态资源路径
可以为静态资源设置虚拟路径。
app.use('/static', express.static(path.resolve(__dirname, 'public')));
三、跨域资源共享(CORS)
3.1 安装 CORS 模块
使用 cors 模块解决跨域问题。
npm install cors
3.2 配置 CORS
在 app.js 中启用 CORS。
const cors = require('cors');
app.use(cors());
3.3 手动设置跨域请求头
可以为特定请求手动设置跨域请求头。
app.get('/list', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.setHeader('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
res.send({ code: 200, data: [1, 2, 3] });
});
四、路由分发
4.1 创建路由文件
在 router/exam.js 中定义路由。
const router = require('express').Router();
// GET 请求示例
router.get('/category', (req, res) => {
res.send({ code: 200, data: [] });
});
// POST 请求示例
router.post('/category_add', (req, res) => {
res.send({ code: 200, msg: '添加成功' });
});
module.exports = router;
4.2 在 app.js 中加载路由
将路由挂载到指定路径。
app.use('/api/exam', require('./router/exam'));
4.3 解析 POST 请求
使用 body-parser 解析 POST 请求的请求体。
npm install body-parser
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: false }));
五、数据库操作
5.1 安装 MySQL 模块
使用 mysql 模块操作 MySQL 数据库。
npm install mysql
5.2 配置数据库连接
在 common/db/database.js 中配置数据库连接信息。
module.exports = {
mysql: {
host: 'localhost',
user: 'root',
password: 'password',
database: 'test',
port: 3306
}
};
5.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();
});
});
});
}
};
5.4 使用模型操作数据库
在 models/userModel.js 中定义用户模型。
const db = require('../common/db');
const aes = require('../common/aes');
class User {
async register(nickName, account, password, email) {
const rows = await db.query(`SELECT account FROM pre_user WHERE account='${account}'`);
if (rows.length === 0) {
const pwd = aes.aesEncrypt(password);
await db.query(`INSERT INTO pre_user (nickName, account, password, email) VALUES ('${nickName}', '${account}', '${pwd}', '${email}')`);
return { code: 200, msg: '注册成功' };
} else {
return { code: 1, msg: '账号已存在' };
}
}
}
module.exports = new User();
六、拓展知识点
6.1 中间件
中间件是 Express 的核心概念,用于处理请求和响应。
app.use((req, res, next) => {
console.log('请求时间:', new Date());
next();
});
6.2 错误处理
使用错误处理中间件捕获异常。
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('服务器错误');
});
6.3 文件上传
使用 multer 模块处理文件上传。
npm install multer
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
res.send('文件上传成功');
});
6.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 的应用场景和开发效率。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)