作为一名前端工程师,你可能已经熟练掌握了 HTML、CSS 和 JavaScript,甚至对 React、Vue 这种前端框架如数家珍。然而,当涉及到后端开发,尤其是编写 API 时,可能会有点手足无措。别担心,Node.js 就是为你这种“从前端转后端”的开发者量身定制的神器!今天,我们就用一种轻松愉快的方式,带你快速上手 Node.js 并开始编写 API。
什么是 Node.js?
简单来说,Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境。翻译成人话就是:你可以用 JavaScript 写后端代码了!它不仅性能强大,还拥有一个巨大的生态系统(npm),让你可以轻松找到各种工具和库。
如果你还在担心“我不会后端语言怎么办?”,Node.js 会告诉你:“兄弟,用你熟悉的 JavaScript 就能搞定!”
为什么前端工程师应该学 Node.js?
- 语言一致性:前端用 JavaScript,后端也用 JavaScript,开发效率直接起飞。
- 学习曲线平缓:不用再去啃新的编程语言,直接用熟悉的语法写后端代码。
- 全栈开发:掌握 Node.js,你就能从前端到后端一手包办,成为传说中的“全栈开发工程师”。
- 生态系统丰富:Node.js 有无数现成的库和工具,几乎可以满足你的所有需求。
环境搭建
在开始之前,你需要先安装 Node.js 和 npm(Node.js 自带 npm)。可以到 Node.js 官网 下载对应版本。建议选择 LTS(长期支持版),稳定性更高。
安装完成后,在终端输入以下命令检查是否安装成功:
node -v
npm -v
如果这两条命令都输出了版本号,那么恭喜,你已经成功迈出了第一步!
第一个 Node.js 程序
按照惯例,我们先来写个“Hello World”程序。新建一个文件 app.js,然后写下以下代码:
// 引入内置的 http 模块
const http = require('http');
// 创建一个服务器
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World!');
});
// 监听 3000 端口
server.listen(3000, () => {
console.log('服务器已启动,访问 http://localhost:3000');
});
然后,在终端运行:
node app.js
打开浏览器访问 http://localhost:3000,你会看到页面上写着“Hello World!”。恭喜,你已经成功运行了第一个 Node.js 程序!
用 Express 快速搭建 API
虽然我们用 http 模块写了一个简单的服务器,但它实在太基础了。如果你想快速构建 API,那么推荐使用 Express 框架。它是一个轻量级但功能强大的 Web 框架,非常适合初学者。
安装 Express
在终端运行以下命令:
npm init -y
npm install express
这会初始化一个新的 Node.js 项目,并安装 Express 框架。
创建一个简单的 API
新建一个文件 server.js,然后写下以下代码:
const express = require('express');
const app = express();
// 中间件:解析 JSON 数据
app.use(express.json());
// 定义一个简单的 GET 接口
app.get('/', (req, res) => {
res.send('欢迎来到我的第一个 API!');
});
// 定义一个 POST 接口
app.post('/api/data', (req, res) => {
const data = req.body;
res.json({
message: '数据接收成功!',
receivedData: data,
});
});
// 启动服务器
const PORT = 3000;
app.listen(PORT, () => {
console.log(`服务器正在运行,访问 http://localhost:${PORT}`);
});
运行服务器:
node server.js
现在,你可以通过浏览器访问 http://localhost:3000 查看 GET 接口的响应;也可以用 Postman 或其他工具向 http://localhost:3000/api/data 发起 POST 请求,发送 JSON 数据。
路由和控制器
随着项目变大,把所有代码都堆在一个文件里显然不太优雅。我们可以将路由和控制器分离,让代码更加清晰。
新建一个文件夹 routes,并在其中创建 api.js 文件:
const express = require('express');
const router = express.Router();
// 定义 API 路由
router.get('/', (req, res) => {
res.send('这是 API 的根路由');
});
router.post('/data', (req, res) => {
const data = req.body;
res.json({
message: '数据已接收',
receivedData: data,
});
});
module.exports = router;
然后,在 server.js 中引入这个路由:
const express = require('express');
const apiRoutes = require('./routes/api');
const app = express();
app.use(express.json());
// 挂载路由
app.use('/api', apiRoutes);
const PORT = 3000;
app.listen(PORT, () => {
console.log(`服务器正在运行,访问 http://localhost:${PORT}`);
});
现在,你的项目结构更加清晰了!
使用中间件
Express 的中间件功能非常强大,可以用来处理日志记录、权限验证、错误处理等。举个例子,我们可以添加一个简单的日志中间件:
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next(); // 调用 next() 将请求传递给下一个中间件或路由处理程序
});
这个中间件会在每次请求时打印请求方法和路径。
与数据库交互
如果你的 API 需要存储数据,那么可以选择使用数据库。常见的数据库有关系型数据库(如 MySQL、PostgreSQL)和非关系型数据库(如 MongoDB)。
这里以 MongoDB 为例,简单介绍如何与数据库交互。
安装 Mongoose
Mongoose 是一个用于操作 MongoDB 的库。在终端运行以下命令安装 Mongoose:
npm install mongoose
连接数据库
在 server.js 中添加以下代码:
const mongoose = require('mongoose');
// 连接 MongoDB
mongoose.connect('mongodb://localhost:27017/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const db = mongoose.connection;
db.on('error', console.error.bind(console, '连接数据库失败:'));
db.once('open', () => {
console.log('成功连接到数据库');
});
定义模型
新建一个文件夹 models,并在其中创建 User.js 文件:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: String,
age: Number,
});
module.exports = mongoose.model('User', userSchema);
使用模型操作数据
在路由中,我们可以使用模型来创建和查询数据。例如:
const User = require('../models/User');
router.post('/users', async (req, res) => {
const { name, age } = req.body;
const user = new User({ name, age });
try {
await user.save();
res.json({ message: '用户创建成功', user });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
router.get('/users', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
总结
通过这篇文章,我们快速了解了如何用 Node.js 和 Express 搭建 API。从环境搭建到路由分离,再到与数据库交互,你已经掌握了构建一个简单后端服务的基本技能。接下来,你可以尝试加入更多功能,比如用户认证、文件上传等。
Node.js 的世界充满乐趣,只要你愿意探索,就能发现更多可能性。赶紧打开编辑器,开始你的全栈开发之旅吧!