讲师中心 微信公众号
AI工具推荐 视频效率加速

什么是Node.js_如何使用它构建服务器端应用程序【教程】

小婷同学_7263

小婷同学_7263

发布时间:2026-01-17 21:07:33

|

697人浏览过

|

来源于php中文网

原创

Node.js是基于V8的JavaScript运行时,适合I/O密集型服务因事件驱动非阻塞I/O,但不适用于CPU密集型任务;单线程+事件循环避免上下文切换开销;内置模块多为异步,require同步加载;默认不支持ESM需配置;原生http模块可快速启服,须监听'0.0.0.0'并调用res.end();Express简化路由与中间件管理,但需注意中间件注册顺序。

什么是node.js_如何使用它构建服务器端应用程序【教程】

Node.js 不是编程语言,而是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它让你能在服务器端直接运行 JavaScript 代码。

为什么 Node.js 适合写服务器?

它的核心优势在于事件驱动、非阻塞 I/O 模型——这意味着一个进程能同时处理成百上千个连接,特别适合 I/O 密集型服务(比如 API 接口、实时聊天、文件上传代理)。

但注意:Node.js 不适合 CPU 密集型任务(如视频转码、复杂计算),这类操作会阻塞整个事件循环。

  • 单线程 + 事件循环机制,避免了多线程上下文切换开销
  • require() 加载模块是同步的,但绝大多数内置模块(如 fs、http)提供的是异步接口
  • 默认不支持 ES modules(import/export),除非加 "type": "module" 到 package.json 或用 .mjs 后缀

如何快速启动一个 HTTP 服务器?

不用任何框架,只用 Node.js 内置的 http 模块就能跑起来。这是最轻量、最贴近底层的理解方式。

JS X Monitor
JS X Monitor

X.com (Twitter) 账号监控自动化:定时抓取指定账号最新推文,发现新内容即时推送通知。

下载

常见错误:监听 localhost 却从外部网络访问失败;或没处理请求体导致 req 流未消费而卡住。

const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url, true);
  
  if (req.method === 'GET' && parsedUrl.pathname === '/') {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello from Node.js!\n');
  } else {
    res.writeHead(404);
    res.end('Not found\n');
  }
});

server.listen(3000, '0.0.0.0', () => {
  console.log('Server running on http://localhost:3000');
});
  • 监听 '0.0.0.0' 而不是 'localhost',才能从本机以外访问(如 Docker 容器、局域网设备)
  • 必须调用 res.end(),否则客户端会一直等待响应结束
  • 如果要读取 POST 数据,需监听 req.on('data', ...) 和 req.on('end', ...),不能跳过

用 Express 管理路由和中间件是否必要?

对简单脚本或原型来说,原生 http 足够;但只要涉及路径匹配、JSON 解析、静态文件、错误统一处理,Express 就几乎是标配。

容易踩的坑:app.use(express.json()) 必须在路由前注册;否则 req.body 始终为 undefined。

const express = require('express');
const app = express();

// 这两行顺序不能错
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.get('/', (req, res) => {
  res.json({ message: 'OK' });
});

app.post('/echo', (req, res) => {
  res.json(req.body); // 能拿到 JSON body 的前提是上面中间件已启用
});

app.listen(3000);
  • express.json() 只解析 Content-Type: application/json
  • express.urlencoded({ extended: true }) 支持嵌套对象(如 user[address][city]),设为 false 则只支持扁平键值对
  • 静态资源建议用 express.static('public'),别自己用 fs.readFile 发送文件——它不处理缓存头、范围请求、404 等细节

真正难的从来不是“怎么写个服务器”,而是怎么让这个服务器在真实场景中可靠运行:进程崩溃后自动重启、日志分级输出、环境变量隔离、请求超时控制、健康检查端点、与数据库连接池协同……这些都不是 http.createServer 一行代码能覆盖的。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

669

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

644

2025.12.18

ThinkPHP中间件机制与请求拦截处理实践
ThinkPHP中间件机制与请求拦截处理实践

本专题围绕 ThinkPHP 中间件体系展开,深入讲解中间件的定义、注册与执行流程。内容包括全局中间件与路由中间件的区别、请求前后处理逻辑、自定义中间件开发以及权限验证与日志处理应用。通过实际案例,帮助开发者掌握中间件在项目中的核心作用与最佳实践。

438

2026.03.31

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2195

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

3442

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1156

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

3959

2025.09.10

chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2806

2023.08.11

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

0

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn