Web前端高级工程师培训:使用 Node.js 构建一个 Web 服务端程序(2)

news/2024/10/25 4:41:44/

6、返回响应数据(资源)

6-1、使用 http.ServerResponse 类实例处理响应数据(资源)

在每一次的 request 事件中回调函数中会通过参数注入两个对象:

  • 第一个参数: IncomingMessage 对象。
  • 第二个参数:ServerResponse 对象。

我们可以使用 第二个参数 ServerResponse 对象来向客户端返回数据。

// 基于 #C5-5-1
// #C6-6-1...server.on('request', (req, res) => {console.log(`有客户端请求`);// 写入数据res.write('Hello');// 结束数据写入res.end();// 也可以直接调用res.end('Hello');
});...

参考:https://nodejs.org/dist/latest-v15.x/docs/api/http.html#http_class_http_serverresponse

7、多资源定位

7-1、使用 URI(URL) 定位不同的资源

参考:https://developer.mozilla.org/zh-CN/docs/Glossary/URL

访问上面那个 URL ,你就可以看到关于 URL 的详细资料。

8、获取请求信息

8-1、使用 http.IncomingMessage 类实例获取客户端请求信息

// 基于 #C6-6-1
// #C8-8-1...server.on('request', (req, res) => {console.log(`有客户端请求`);// 获取请求相关信息// 当前请求的 url 字符串console.log(req.url);// 写入数据res.write('Hello');// 结束数据写入res.end();
});...

参考:https://nodejs.org/dist/latest-v15.x/docs/api/http.html#http_class_http_incomingmessage

9、URL 字符串解析

9-1、使用 Node.js 中的 URL 模块解析 URL 字符串

// 基于 #C8-8-1
// #C9-9-1
...const url = require('url');...server.on('request', (req, res) => {console.log(`有客户端请求`);// 获取请求相关信息// 当前请求的 url 字符串console.log(req.url);// 使用 Node.js 的 url 模块中提供的工具方法解析 url 字符串const urlObj = url.parse(req.url);console.log(urlObj);// 写入数据res.write('Hello');// 结束数据写入res.end();
});...

9-2、使用 WHATWG(HTML5) 中的 URL API 解析 URL 字符串

// 基于 #C8-8-1
// #C9-9-2// const URL = require('url').URL; // 不需要引入
...server.on('request', (req, res) => {console.log(`有客户端请求`);// 获取请求相关信息// 当前请求的 url 字符串console.log(req.url);// 使用 WHATWG(HTML5) 中的 URL API 解析 URL 字符串const urlObj = new URL(req.url);console.log(urlObj);// 写入数据res.write('Hello');// 结束数据写入res.end();
});...

参考:https://nodejs.org/dist/latest-v15.x/docs/api/url.html#

10、静态资源

10-1、静态资源与动态资源

通俗来讲(广义),静态资源 指的是通过资源地址(URL)访问到的内容就是资源内容本身,不经过程序的特殊处理(如:逻辑判断处理、数据库读取、随机内容等……),一般我们把网站的 HTML文件、CSS文件、JS文件、图片文件 等称为静态资源。对于静态资源,我们如果不去修改这些静态资源本身的内容,那么通过同一个 URL 在任何时候看到的内容应该不变的。

而动态资源正好与之相反。

// #C10-10-1
...
server.on('request', (req, res) => {// 静态资源res.end('Hello');// 动态资源res.end( new Date() );
})
...

10-2、静态资源优化

通常,我们会把静态特性的资源存储到其它媒介(硬盘文件)中,在需要访问的时候根据一些规则(WebServerAPP自定义)进行读取访问,这样的好处:

  • 方便管理维护
  • 方便修改
// #C10-10-1
...
server.on('request', (req, res) => {// 1、获取当前客户端请求的url// 2、解析 url 字符串// 3、获取 url 中 path 部分的值// 4、根据 path 中的读取我们存放在硬盘中的对应资源文件// 5、把读取到的资源文件内容作为响应内容返回给客户端
});
...

问题!!!

  • 不同类型的资源内容(如:html、css、image……)在客户端接收到以后可能会无法正确被处理。

http://www.ppmy.cn/news/1541743.html

相关文章

React 项目热更新失效问题的解决方案和产生的原因

背景和意义 在修复React项目热更新失效的问题时,经过一系列问题排查和依赖升级,最终成功修复了问题并为后续开发规避了类似的问题。 依赖升级 Vite版本升级 原React项目Vite版本升级到^4.4.5 Vite 4 在构建和开发服务器的性能上进行了优化&#xff…

【OpenAI】第六节(语音生成与语音识别技术)从 ChatGPT 到 Whisper 的全方位指南

前言 在人工智能的浪潮中,语音识别技术正逐渐成为我们日常生活中不可或缺的一部分。随着 OpenAI 的 Whisper 模型的推出,语音转文本的过程变得前所未有的简单和高效。无论是从 YouTube 视频中提取信息,还是将播客内容转化为文本,…

Leetcode—1242. 多线程网页爬虫【中等】Plus(多线程)

2024每日刷题&#xff08;187&#xff09; Leetcode—1242. 多线程网页爬虫 实现代码 /*** // This is the HtmlParsers API interface.* // You should not implement it, or speculate about its implementation* class HtmlParser {* public:* vector<string>…

Android GPU Inspector分析帧数据快速入门

使用 谷歌官方工具Android GPU Inspector (AGI) 可以对Android 应用进行深入和全面的系统性能分析和帧性能分析 。AGI 是一个非常强大的分析工具&#xff0c;尤其是在需要诊断 GPU 性能问题和优化应用时&#xff0c;可以帮助你精准找到性能瓶颈。本文介绍如何使用该工具对帧数据…

二、Linux 入门教程:开启大数据领域的神奇之旅

Linux 入门教程&#xff1a;开启大数据领域的神奇之旅 在当今这个飞速发展的数字化时代&#xff0c;大数据所具有的重要性正日益凸显出来。而 Linux 作为一种极为强大的操作系统&#xff0c;在大数据这一广阔的领域当中发挥着至关重要、不可或缺的关键作用。倘若你怀有涉足大数…

Kafka 为什么要抛弃 Zookeeper?

嗨&#xff0c;你好&#xff0c;我是猿java 在很长一段时间里&#xff0c;ZooKeeper都是 Kafka的标配&#xff0c;现如今&#xff0c;Kafka官方已经在慢慢去除ZooKeeper&#xff0c;Kafka 为什么要抛弃 Zookeeper&#xff1f;这篇文章我们来聊聊其中的缘由。 Kafka 和 ZooKee…

WebGl 多缓冲区和数据偏移

1.多缓冲区 多缓冲区技术通常涉及到创建多个缓冲区对象&#xff0c;并将它们用于不同的数据集。这种做法可以提高数据处理效率&#xff0c;尤其是在处理大量数据或需要频繁更新数据时。通过预先分配和配置多个缓冲区&#xff0c;可以在不影响渲染性能的情况下&#xff0c;快速…

【C++指南】运算符重载详解

引言 C 提供了运算符重载这一特性&#xff0c;允许程序员为自定义类型&#xff08;如类和结构体&#xff09;定义运算符的行为。 通过运算符重载&#xff0c;可以使自定义类型对象像内置类型一样使用运算符&#xff0c;从而提高代码的可读性和易用性。 本文将详细介绍 C 中运算…