打造闪电般响应的Node.js Web服务

484 阅读4分钟

前言

当我们用node写一个全栈项目时,当项目运行起来时候前端部分 是跑在浏览器上加载, 而后端部分是跑在服务器上。这时候我们就不得不提到前后端交互了

前端通过发送HTTP请求(GET、POST、PUT、DELETE等)与后端交互,后端处理请求并返回JSON对象或数组、文件等资源格式的数据。具体实现呢我们可以用XHR、 Fetch、Axios、jQuery。

node web服务实现

初始化项目

首先我们新建文件夹node-web2 屏幕截图 2024-07-05 095550.png 并使用如下指令

屏幕截图 2024-07-05 095337.png 初始化为后端项目

简单版node.js HTTP服务器

屏幕截图 2024-07-05 104633.png 以上的代码便创建了一个简单的node.js HTTP服务 器,服务器监听在3000端口.res.end() 标志着响应的结 束,res.end('hello world') 来结束响应并发送 "hello world" 字符串给前端。 当我们在浏览器上访问localhost:3000便可以看到所展示的hello world了

url模块

url 模块提供了丰富的工具来解析、格式化和操作 URL。在处理网络请求和响应时,这些功能非常有用。url 模块是 Node.js 中的一个核心模块,用于解析和处理 URL(统一资源定位符)。这个模块可以帮助我们解析、格式化和处理 URL 字符串。可以让我们清晰的看明白前端请求的路径!!!。

屏幕截图 2024-07-05 113031.png 这样我们便可以看到格式画好的路径啦!

image.png

响应头

响应头(Response Headers)是 HTTP 响应的一部分,它包含了关于响应的信息,如内容类型、内容长度、服务器信息等。这些头部信息由服务器发送到客户端,用于描述响应的性质和处理方式。响应头帮助浏览器或客户端理解如何处理返回的数据。

常见的响应头

  1. Content-Type:指定响应内容的媒体类型。例如,Content-Type: text/html 表示响应内容是 HTML 文本。
  2. Content-Length:表示响应体的字节长度。例如,Content-Length: 1234 表示响应内容长度为 1234 字节。
  3. Server:指示服务器的软件信息。例如,Server: Apache/2.4.1 (Unix)
  4. Set-Cookie:用于设置 HTTP cookie。例如,Set-Cookie: sessionId=abc123; Path=/; HttpOnly
  5. Location:用于重定向时指定新 URL。例如,Location: http://www.example.com/

那我们就以 Content-Type为例看看效果如何吧!!

屏幕截图 2024-07-05 121212.png

我们可以看到代码

res.writeHead(200,{'content-type':'application/json;charset=utf-8'})
res.end(JSON.stringify(data))

其中writeHead()函数包含了两个参数第一个参数 设置HTTP状态码为200,表示“OK”。第二个参数是一个对象,用来设置相应的头部信息。

  • 'content-type': 'application/json;charset=utf-8' 设置响应的内容类型为JSON,并指定字符编码为UTF-8。
  • 其中JSON.stringify(data) 是JavaScript中的一个方法,
  • 用于将JavaScript对象或数组转换为JSON字符

前端展示

屏幕截图 2024-07-05 121335.png

响应页面给前端

首先呢先介绍一下fs。 Node.js 中的 fs 模块是用于与文件系统进行交互的模块。 它提供了用于读取、写入、删除和操作文件和目录的功能。 当我们在浏览器上输入的路径访问不到时例如输入http://localhost:3100/kkm ,这时候我们希望后端响应回来一个404页面 我们只需要写如下代码

屏幕截图 2024-07-06 092208.png 浏览器显示结果如下

image.png

koa框架

原生的js可以选择用vue这个框架,同理当我们写node的时候是不是也可以选择框架? node.js官方打造了许多框架,其中koa这款框架是更小、更富表现力和更 健壮的 Web 框架。它有如下优点:

  1. 现代语法:Koa 使用 ES6 的 async/await 语法,使得编写异步代码变得更简单直观。
  2. 中间件机制:Koa 的中间件机制非常强大,可以轻松地组合和复用中间件函数。
  3. 简洁的 API:Koa 的 API 非常简洁,只有少量核心方法和属性,使得学习和使用更加轻松。
  4. 高度模块化:Koa 没有内置路由、模板引擎等功能,需要用户根据需求选择第三方中间件进行扩展。

那我们看看koa框架的高性能吧!!

首先执行如下指令

image.png

image.png 初始化好项目后我们新建一个app.js和,router文件夹 并在router文件夹里边新建user.js文件 我们在app.js里边添加如下代码

image.png 并且在user.js里边添加如下代码

image.png

代码运行后我们在浏览器上访问localhost:3078/user,展示如下!!

image.png

通过对比Koa框架相比于传统的简单版的node.js http服务更加简洁 和优雅,我们不需要写一大堆的if else 这种繁琐的语句,我们只需要在user.js文件中写 很多router接口,然后抛出router,根据浏览器访问到的路径返回相应的结果给前端