超级实用!详解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 应用。

相关文章
|
19天前
|
JavaScript 前端开发 中间件
探索后端技术:Node.js与Express框架的完美融合
【10月更文挑战第7天】 在当今数字化时代,Web应用已成为日常生活不可或缺的一部分。本文将深入探讨后端技术的两大重要角色——Node.js和Express框架,分析它们如何通过其独特的特性和优势,为现代Web开发提供强大支持。我们将从Node.js的非阻塞I/O和事件驱动机制,到Express框架的简洁路由和中间件特性,全面解析它们的工作原理及应用场景。此外,本文还将分享一些实际开发中的小技巧,帮助你更有效地利用这些技术构建高效、可扩展的Web应用。无论你是刚入门的新手,还是经验丰富的开发者,相信这篇文章都能为你带来新的启发和思考。
|
5天前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
23 1
|
19天前
|
JSON JavaScript 前端开发
Node.js Express 框架
10月更文挑战第7天
19 2
|
19天前
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
10月更文挑战第7天
27 0
|
19天前
|
JavaScript 网络协议
Node.js 工具模块
10月更文挑战第7天
18 0
|
JavaScript 前端开发
Node.js 常用工具util包
Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足。 util.isError(obj); util.isDate(obj); util.inherits(constr,super); util.isRegExp(/some regexp/); util.isArray(obj); util.inspect(obj); util.inherits util.inherits(constructor, superConstructor)是一个实现对象间原型继承 的函数。
1437 0
|
2月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
24天前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
21 2
|
2月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)