Node.js入门教程 - 从零开始学习后端开发
node.js 学习开始
版本
node -v
V 12.16.1
- 在cmd 命令行输入 node 即进入node的交互环境。
node
在node环境中可以输入js代码并立马执行
node
Welcome to Node.js v12.16.1.
Type ".help" for more information.
100+200
300
npm
WARNING
- npm 是NODE.js 的包管理工具(package manager)
- 大家可以将自己开发的模块打包上传到npm,需要时可以直接下载,开源共享。
- 重要的是,如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错
第一个node程序(hello Word)
- 新建一个js文件,命名hello.js,输入以下代码
console.log('hello word')
- 使用cmd命令cd 进入到当前js文件的目录,然后 输入 node hello.js,
C:\Users\Administrator>cd desktop
C:\Users\Administrator\Desktop>node hello.js
hello word
hello word 成功输入,说明程序运行成功!
注意
DANGER
一定要先进入当前js文件的目录,不然会报错
Express 框架入门
Express 是最流行的 Node.js Web 框架,用于构建 API 和 Web 应用。
安装 Express
# 创建项目目录
mkdir my-api
cd my-api
# 初始化 package.json
npm init -y
# 安装 Express
npm install express
第一个 Express 应用
创建 app.js 文件:
const express = require('express');
const app = express();
const port = 3000;
// 中间件:解析 JSON 请求体
app.use(express.json());
// 路由:首页
app.get('/', (req, res) => {
res.send('Hello World!');
});
// 启动服务器
app.listen(port, () => {
console.log(`服务器运行在 http://localhost:${port}`);
});
运行:
node app.js
RESTful API 开发
创建用户 API
const express = require('express');
const app = express();
app.use(express.json());
// 模拟数据库
let users = [
{ id: 1, name: '张三', email: 'zhangsan@example.com' },
{ id: 2, name: '李四', email: 'lisi@example.com' }
];
// GET - 获取所有用户
app.get('/api/users', (req, res) => {
res.json({
code: 200,
data: users,
message: '获取成功'
});
});
// GET - 获取单个用户
app.get('/api/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) {
return res.status(404).json({ code: 404, message: '用户不存在' });
}
res.json({ code: 200, data: user });
});
// POST - 创建用户
app.post('/api/users', (req, res) => {
const { name, email } = req.body;
if (!name || !email) {
return res.status(400).json({ code: 400, message: '缺少必填字段' });
}
const newUser = {
id: users.length + 1,
name,
email
};
users.push(newUser);
res.status(201).json({ code: 201, data: newUser, message: '创建成功' });
});
// PUT - 更新用户
app.put('/api/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) {
return res.status(404).json({ code: 404, message: '用户不存在' });
}
const { name, email } = req.body;
if (name) user.name = name;
if (email) user.email = email;
res.json({ code: 200, data: user, message: '更新成功' });
});
// DELETE - 删除用户
app.delete('/api/users/:id', (req, res) => {
const index = users.findIndex(u => u.id === parseInt(req.params.id));
if (index === -1) {
return res.status(404).json({ code: 404, message: '用户不存在' });
}
users.splice(index, 1);
res.json({ code: 200, message: '删除成功' });
});
app.listen(3000, () => {
console.log('API 服务器运行在 http://localhost:3000');
});
中间件使用
常用中间件
const express = require('express');
const cors = require('cors'); // 需要 npm install cors
const app = express();
// 解析 JSON 请求体
app.use(express.json());
// 解析 URL 编码的请求体
app.use(express.urlencoded({ extended: true }));
// 跨域支持
app.use(cors());
// 自定义日志中间件
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
next();
});
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ code: 500, message: '服务器内部错误' });
});
连接 MySQL 数据库
安装 mysql2
npm install mysql2
数据库操作
const mysql = require('mysql2/promise');
// 创建连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: 'your_password',
database: 'test_db',
waitForConnections: true,
connectionLimit: 10
});
// 查询示例
async function getUsers() {
try {
const [rows] = await pool.execute('SELECT * FROM users');
return rows;
} catch (error) {
console.error('查询失败:', error);
throw error;
}
}
// 在路由中使用
app.get('/api/users', async (req, res) => {
try {
const users = await getUsers();
res.json({ code: 200, data: users });
} catch (error) {
res.status(500).json({ code: 500, message: '数据库查询失败' });
}
});
项目结构建议
my-api/
├── app.js # 入口文件
├── package.json
├── routes/ # 路由
│ ├── users.js
│ └── products.js
├── controllers/ # 控制器
│ ├── userController.js
│ └── productController.js
├── models/ # 数据模型
│ └── user.js
├── middleware/ # 中间件
│ ├── auth.js
│ └── logger.js
└── config/ # 配置文件
└── database.js
常用命令
# 安装依赖
npm install
# 启动开发服务器(使用 nodemon 自动重启)
npm install -g nodemon
nodemon app.js
# 生产环境启动
NODE_ENV=production node app.js
推荐学习资源
如有问题,欢迎在评论区留言讨论!
Powered by Waline v2.15.8
