Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动、非阻塞式 I/O 模型,让 JavaScript 运行在服务端的开发平台。
为什么使用Node.js写后端?
- 高效性。Node.js采用非阻塞I/O和事件驱动模型,能够处理高并发请求,提高系统的吞吐量。1
- 灵活性。Node.js的模块化设计和丰富的第三方模块库使得开发者可以快速构建复杂的Web应用,并根据应用需求自由组合和扩展模块。2
- 易学易用。Node.js的语法基于JavaScript,对于已经熟悉JavaScript的开发者来说,学习成本低,可以快速上手。3
- 跨平台。Node.js支持多个主流操作系统,提高了开发的灵活性。4
- 社区活跃。Node.js拥有广泛的社区和强大的生态系统,有成千上万的开源模块可供使用,解决了很多开发者的痛点,提高了开发效率。
- 单线程。Node.js保持了JavaScript在浏览器中的单线程特点,避免了多线程编程中的同步问题,简化了编程模型。5
- 适合I/O密集型应用。Node.js擅长处理并行I/O,特别适合网络应用和实时应用场景。
真实的原因其实很简单:别的我也不会!
一个简单的Node.js项目示例
1.创建项目目录:
mkdir my_node_api
cd my_node_api
2.初始化npm项目:
npm init -y
3.安装Express:
npm install express
4.创建服务器文件:
创建名为service.js文件,开始编写功能代码,并修改package.json文件的"main":"service.js",将项目启动文件替换成service.js
const app = express();
const port = process.env.PORT || 3000;
// 用于解析JSON和URL编码的中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// API端点:返回当前时间
app.get('/time', (req, res) => {
const now = new Date();
res.json({ message: `Current time: ${now.toLocaleTimeString()}` });
});
// API端点:根据GET请求参数返回信息
app.get('/greet', (req, res) => {
const { name } = req.query;
if (!name) {
return res.status(400).json({ error: 'Please provide a name as a query parameter' });
}
res.json({ message: `Hello, ${name}!` });
});
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: 'Something went wrong!' });
});
// 启动服务器
app.listen(port, () => {
console.log(`Server running on http://localhost:${port}`);
});
5.运行服务器
node server.js
现在你可以在浏览器通过http://127.0.0.1:3000/time 获取当前时间了
现在有了api,如何在APP内访问api呢?本地服务只能局域网访问,没有服务器该如何实现外网访问呢?下一篇将使用内网穿透实现外网访问