【Node.js从基础到高级运用】七、基本的网络编程

基本的网络编程

在这一节中,我们将介绍 Node.js 在网络编程方面的基础,特别是如何使用 Node.js 创建一个 HTTP 服务器。这是构建 Web 应用和服务的核心技能。

创建 HTTP 服务器

Node.js 的 http 模块提供了创建 HTTP 服务器和客户端的能力。以下是创建一个基本 HTTP 服务器的步骤:

步骤 1: 导入 http 模块

首先,在你的 Node.js 应用中导入 http 模块。

javascript 复制代码
const http = require('http');

步骤 2: 创建服务器

使用http.createServer()方法创建一个服务器。这个方法接受一个回调函数,该函数在每次收到请求时被调用。

javascript 复制代码
const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello, World!\n');
});

步骤 3: 监听端口

最后,使用服务器的 listen 方法监听一个端口。

javascript 复制代码
const port = 3000;
server.listen(port, () => {
  console.log(`Server running at http://localhost:${port}/`);
});

运行这个程序,你的 Node.js 应用现在应该可以通过在浏览器访问 http://localhost:3000/ 来响应简单的 Hello, World! 消息。

处理请求和发送响应

在上面的示例中,我们的服务器对所有请求都返回相同的响应。但在实际应用中,你可能需要根据不同的 URL 路径和请求方法来提供不同的响应。

你可以通过检查 req 对象的 urlmethod 属性来实现这一点。

javascript 复制代码
const http = require('http');

const server = http.createServer((req, res) => {
  const { url, method } = req;

  if (url === '/' && method === 'GET') {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('<h1>Welcome to the homepage!</h1>');
  } else if (url === '/about' && method === 'GET') {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end('<h1>About Us</h1>');
  } else {
    res.writeHead(404, {'Content-Type': 'text/html'});
    res.end('<h1>404 Not Found</h1>');
  }
});

const port = 3000;
server.listen(port, () => {
  console.log(`Server running at http://localhost:${port}/`);
});

总结

通过这一节的学习,你已经掌握了如何使用 Node.js 创建一个基础的 HTTP 服务器,以及如何处理请求和发送响应。这为进一步学习构建完整的 Web 应用和服务打下了坚实的基础。

虽然使用原生的 Node.js http 模块就可以创建服务器,但在实际开发中,我们往往会借助于各种框架来简化开发。下一节,我们将介绍如何使用 Express------一个灵活且广泛使用的 Node.js Web 应用框架,来创建服务器和路由,处理更复杂的 Web 应用逻辑。

相关推荐
心易行者1 小时前
Python在线运行+SQLite数据库实战:0成本搭个人数据后台,5个场景直接套用
前端·网络·人工智能·python
@tangguo1231 小时前
npm 和 yarn 配置说明
前端·javascript·npm·node.js·yarn
zhiyouTech1 小时前
GEO实战:把生成式引擎优化当成检索工程来做(含五断点诊断与50题Benchmark)
前端·人工智能
志尊宝2 小时前
Vue3 零基础每日笔记(052):路由常见坑一次排雷——404、刷新丢参数、部署白屏
前端·javascript·vue.js·笔记·html5
linux_cfan2 小时前
videojs v10 源代码系列解读:13 · 能力型媒体契约:`Media` 的组合接口
前端·javascript·音视频
涛涛ing2 小时前
2026年9月,前端圈同时发生了四件事,指向同一个方向
前端
艾伦野鸽ggg2 小时前
Vue2 模板语法与样式绑定
前端
Amos_Web2 小时前
Rspack 源码解析(十一):资产 Hook 与增量构建
前端·rust·源码阅读
PC2005_cloud2 小时前
Windows 数据使用量页面卡死:1097 个热点档案和 161 MB 的 SRUM 库
前端·后端
烈风逍遥2 小时前
AI大模型中fetch 和 ReadableStream为啥一起出现
前端·人工智能