超级实用!详解Node.js中的util模块和express模块

简介: 超级实用!详解Node.js中的util模块和express模块

5. util 模块

提供一些常用的实用函数,包括继承、类型判断等功能。

const util = require('util');

util 模块是 Node.js 的内置模块之一,提供了一些实用函数的集合,用于辅助开发者进行常见的功能操作。util 模块包含了各种实用函数的集合,方便开发者编写高效、可维护的代码。

下面我们来详细讲解一些 util 模块中常用的功能:

1. 继承

util 模块提供了一个 inherits 函数,用于实现对象间的继承关系。这个函数可以将一个构造函数从一个原型继承到另一个构造函数的原型链上。使用方法如下:

const util = require('util');
function Parent() {
  this.name = 'Parent';
}
Parent.prototype.sayHello = function() {
  console.log('Hello!');
};
function Child() {
  this.name = 'Child';
}
util.inherits(Child, Parent);
const child = new Child();
child.sayHello(); // 输出 'Hello!'

在上述代码中,我们定义了一个 Parent 构造函数和一个 Child 构造函数。然后,使用 util.inherits 函数将 Child 构造函数继承自 Parent 构造函数。继承后,Child 对象就可以使用 Parent 原型链上的属性和方法。

2. 促进回调函数的使用

util 模块提供了一些函数,可以帮助处理回调函数的调用和处理。下面是一些常用的函数:

2.1 promisify

promisify 函数将一个基于回调的异步函数转换为返回 Promise 的函数。

const util = require('util');
const fs = require('fs');
const readFile = util.promisify(fs.readFile);
readFile('file.txt', 'utf8')
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });

在上述代码中,我们使用 promisify 函数将 Node.js 内置的 fs.readFile 函数转换为返回 Promise 的函数 readFile。这样,我们就可以使用 async/awaitPromise 语法处理异步操作。

2.2 callbackify

callbackify 函数将返回 Promise 的函数转换为接受回调函数的函数。

const util = require('util');
const fs = require('fs');
const readFileAsync = util.promisify(fs.readFile);
const readFileCallback = util.callbackify(readFileAsync);
readFileCallback('file.txt', 'utf8', (error, data) => {
  if (error) {
    console.error(error);
  } else {
    console.log(data);
  }
});

在上述代码中,我们首先使用 promisify 函数将 fs.readFile 函数转换为返回 Promise 的函数 readFileAsync。然后,使用 callbackify 函数将其转换为接受回调函数的函数 readFileCallback。这样,我们就可以继续使用回调函数风格的编程方式。

3. 类型判断和错误处理

3.1 util.inspect

util.inspect 方法返回一个对象的字符串表示,通常用于调试和日志输出。

const util = require('util');
const obj = { name: 'John', age: 30 };
console.log(util.inspect(obj)); // 输出 "{ name: 'John', age: 30 }"

在上述代码中,我们使用 util.inspect 方法将 obj 对象转换为字符串并输出。

3.2 util.types.is

util.types 提供了一系列函数,用于检查 JavaScript 内置类型的实例。

const util = require('util');
console.log(util.types.isDate(new Date())); // true
console.log(util.types.isRegExp(/abc/)); // true
console.log(util.types.isError(new Error())); // true

在上述代码中,util.types.isDate 函数用于检查是否为 Date 实例,util.types.isRegExp 函数用于检查是否为正则表达式实例,util.types.isError 函数用于检查是否为错误对象实例。

3.3 util.throwDeprecation

util.throwDeprecation 方法用于抛出一个废弃警告错误。

const util = require('util');
if (someCondition) {
  util.throwDeprecation('This feature is deprecated');
}

在上述代码中,当满足某个条件时,我们可以使用 util.throwDeprecation 方法抛出一个废弃警告错误。

这些只是 util 模块的一部分功能,还有其他实用函数可以了解和使用。通过使用 util 模块,开发者可以更加高效地处理继承、回调函数、类型判断和错误处理等常见任务。

6. express 模块

一个流行的 Web 框架,简化了 Node.js Web 应用程序的开发过程。

const express = require('express');

express 是一个流行的基于 Node.js 的 Web 应用框架,它简化了开发 Web 应用程序的过程。使用 express 可以快速构建出具有路由、中间件和模板引擎等功能的 Web 应用。

下面我们来详细讲解 express 模块的一些常用功能:

1. 创建 Express 应用

首先,我们需要通过 require 函数引入 express 模块,并创建一个 Express 应用实例。

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

在上述代码中,我们使用 require 函数引入 express 模块,并将其赋值给变量 express。然后,调用 express 函数创建一个 Express 应用实例,并将其赋值给变量 app

2. 定义路由

Express 使用路由来处理客户端请求。通过定义不同的路由,我们可以映射不同的 URL 路径到相应的处理函数上。

app.get('/', (req, res) => {
  res.send('Hello, World!');
});
app.post('/users', (req, res) => {
  // 处理创建用户的逻辑
});

在上述代码中,我们使用 app.get 方法定义了一个处理 GET 请求的路由,它将根路径 / 映射到一个回调函数上。当客户端发送一个 GET 请求到根路径时,服务器将会执行回调函数,并通过 res.send 将响应发送给客户端。

同样地,我们可以使用 app.post 方法定义一个处理 POST 请求的路由,将路径 /users 映射到一个处理创建用户逻辑的回调函数上。

Express 还支持其他 HTTP 方法的路由处理,例如 app.put 用于处理 PUT 请求,app.delete 用于处理 DELETE 请求,以及 app.all 用于处理所有方法的请求。

3. 中间件

Express 的中间件允许我们在处理请求和发送响应之间执行一些操作。这些操作可以是验证请求、处理请求数据、记录日志等。

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(loggerMiddleware);

在上述代码中,我们通过调用 app.use 方法来注册中间件。express.json 中间件用于解析请求的 JSON 数据,express.urlencoded 中间件用于解析请求的 URL 编码数据。loggerMiddleware 是一个自定义的日志记录中间件。

中间件函数接受三个参数:req(请求对象)、res(响应对象)和 next(下一个中间件函数)。中间件函数可以修改请求和响应对象,或者将控制权传递给下一个中间件函数。

4. 静态文件服务

Express 具有内置的中间件函数 express.static,用于提供静态文件服务。

app.use(express.static('public'));

在上述代码中,我们通过调用 app.use 方法使用 express.static 中间件函数,将 public 目录下的静态文件提供给客户端。当客户端请求一个静态文件时,Express 将会在 public 目录下寻找该文件并返回给客户端。

5. 使用模板引擎

Express 支持多种模板引擎,例如 ejspughandlebars 等。我们可以使用模板引擎来渲染动态页面。

app.set('view engine', 'ejs');
app.get('/users', (req, res) => {
  const users = ['Alice', 'Bob', 'Charlie'];
  res.render('users', { users });
});

在上述代码中,我们通过调用 app.set 方法设置模板引擎为 ejs。然后,使用 res.render 方法渲染名为 users 的模板,并传递一个包含用户数据的上下文对象。

模板文件可以放在指定的模板目录中,默认是在项目根目录下的 views 目录。在模板文件中,可以使用模板引擎的语法和标记来动态地生成 HTML 内容。

这些只是 express 模块的一部分功能,还有许多其他的功能和功能组件可以使用。通过使用 express 模块,开发者可以快速构建出具有路由、中间件、静态文件服务和模板引擎等功能的 Web 应用。

相关文章
|
30天前
|
开发框架 JavaScript 安全
js开发:请解释什么是Express框架,以及它在项目中的作用。
Express是Node.js的Web开发框架,简化路由管理,支持HTTP请求处理。它采用中间件系统增强功能,如日志和错误处理,集成多种模板引擎(EJS、Jade、Pug)用于HTML渲染,并提供安全中间件提升应用安全性。其可扩展性允许选用合适插件扩展功能,加速开发进程。
|
16天前
|
开发框架 JavaScript 中间件
node+express搭建服务器环境
node+express搭建服务器环境
node+express搭建服务器环境
|
12天前
|
域名解析 网络协议 JavaScript
【Node系列】node工具模块
Node.js有多个内置的工具模块,这些模块提供了用于执行各种任务的功能。
22 2
|
12天前
|
开发框架 JavaScript 前端开发
【Node系列】Express 框架
Express.js 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,提供一系列强大的特性来帮助你创建各种 web 和移动设备应用。
33 2
|
27天前
11_nest.js模块
11_nest.js模块
24 0
|
1月前
|
Web App开发 JavaScript 前端开发
使用Node.js和Express构建RESTful API
使用Node.js和Express构建RESTful API
19 0
|
1月前
|
JavaScript 前端开发
Node.js之path路径模块
Node.js之path路径模块
|
1月前
|
JavaScript
Node.js之http模块
Node.js之http模块
|
2月前
|
开发框架 JavaScript 前端开发
比较两个突出的node.js框架:koa和express
接上文讲述了 koa框架,这边文章比较一下这两个突出的node.js框架:koa和express
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0