浅谈Node.js轻量级Web框架Express4.x使用指南

浅谈Node.js轻量级Web框架Express4.x使用指南

前言

Node.js 是一种非常流行的后端开发语言,可以快速构建高性能、可扩展的网络应用程序。而 Express 是 Node.js 中最流行的 Web 框架之一,其拥有轻量且易于使用的特点,同时具备完整的中间件系统。本文结合最新版 Express(4.x)来深入浅出地介绍使用指南。

安装

在使用 Express 前,我们首先需要安装它。可以使用 npm 命令进行安装:

npm install express

在安装 Express 的同时,我们还可以选择安装一些常用的中间件,例如:

npm install body-parser # 处理 HTTP 请求的 body 数据
npm install cookie-parser # 处理 HTTP 请求中的 cookie
npm install cors # 处理跨域请求
npm install express-session # 提供用户会话支持
npm install multer # 用于上传文件

Hello World

下面我们来通过一个 Hello World 的例子来展示 Express 的使用。首先,我们需要在 Node.js 中引入 Express:

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

然后,我们就可以定义一个路由,来响应用户的请求:

app.get('/', (req, res) => {
  res.send('Hello World')
})

最后,我们启动服务器:

app.listen(3000, () => {
  console.log('Server running at http://localhost:3000/')
})

这样,我们就完成了一个最简单的 Express 应用程序。

中间件

在 Express 中,中间件(Middleware)是一个函数,它可以访问请求对象(request object,简称 req)和响应对象(response object,简称 res),以及 Web 应用程序中的下一个中间件函数。中间件可以用来执行各种任务,例如请求日志、身份验证、数据转换等。

Express 应用程序可以使用多个中间件。在 Express 中,使用 app.use() 函数来安装中间件。例如:

const logger = (req, res, next) => {
  console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
  next()
}

app.use(logger)

上面的代码定义了一个名为 logger 的中间件,来记录每一个请求的时间、方法和 URL 地址。这个中间件将使用 app.use() 函数来安装到我们的应用程序中。

路由

在 Express 中,通过路由(Route)来定义应用程序如何响应客户端请求。路由由一个 HTTP 请求方法、一个路径和一个或多个处理函数组成。Express 提供了一系列的路由方法,包括 get()post()put()delete()patch() 等。

下面是一个使用 get() 方法定义路由的示例:

app.get('/users', (req, res) => {
  res.send('Get Users')
})

这个路由只会响应 GET 方式访问 /users 地址的请求,并返回一个字符串 'Get Users'

路由的路径可以使用参数,这可以让我们使用相同的路由处理程序来匹配不同的 URL。例如,我们可以这样定义一个带参数的路由:

app.get('/users/:id', (req, res) => {
  res.send(`User ID: ${req.params.id}`)
})

在调用这个路由时,可以使用形如 /users/123 的 URL 地址,其中的 123 就是参数值。

静态文件服务

在 Express 中,我们可以很方便地设置静态文件服务。例如,我们可以把所有的静态文件放在一个名为 public 的目录下,然后通过如下代码设置静态文件服务:

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

这样,就可以通过 URL 访问所有的静态文件,例如 http://localhost:3000/images/logo.png

模板引擎

在 Express 中,我们可以使用各种模板引擎来生成 HTML 页面。模板引擎提供了一个包含动态内容的模板文件和一个数据对象,模板引擎使用数据对象来渲染模板文件,最终生成 HTML 页面。Express 支持各种模板引擎,例如 Pug、EJS 等。

以下是一个使用 Pug 模板引擎的例子:

首先,我们需要在 Node.js 中安装 Pug:

npm install pug

然后,我们在 Express 中使用 Pug:

app.set('view engine', 'pug')

最后,我们定义一个路由来渲染 Pug 模板:

app.get('/', (req, res) => {
  res.render('index', { title: 'Express', message: 'Hello World!' })
})

在上面的例子中,我们定义了一个名为 index 的模板文件,它使用两个变量 titlemessage 来渲染模板。在路由处理程序中,我们使用 res.render() 函数来呈现模板。

示例一

下面是一个使用 Express 和 MongoDB 操作数据库的示例。首先,我们需要在 Node.js 中引入 mongoose 库和 Express 库:

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

然后,我们可以利用 mongoose 来连接 MongoDB 数据库:

mongoose.connect('mongodb://localhost/my_db', { useNewUrlParser: true })

这里,我们连接名为 my_db 的 MongoDB 数据库。接着,我们可以定义一个数据模型,并使用它来创建一个新的记录:

const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  age: Number
})

const User = mongoose.model('User', userSchema)

const user = new User({ name: 'Tom', email: 'tom@example.com', age: 20 })
user.save()

这里,我们定义了一个名为 User 的数据模型,它包含了 nameemailage 三个属性。然后,我们创建了一个新的记录,并保存到数据库中。

最后,我们可以定义一个路由,来查询所有的用户:

app.get('/users', async (req, res) => {
  const users = await User.find()
  res.json(users)
})

这个路由使用 User.find() 方法查询所有的用户,并使用 res.json() 函数返回一个 JSON 响应。

示例二

下面是一个使用 Express 和 Elasticsearch 搜索引擎的示例。首先,我们需要在 Node.js 中引入 elasticsearch 包和 Express 库:

const express = require('express')
const { Client } = require('@elastic/elasticsearch')
const app = express()

然后,我们可以创建一个 elasticsearch 客户端,并连接到我们的 Elasticsearch 集群:

const client = new Client({ node: 'http://localhost:9200' })
await client.ping()

这里,我们使用 new Client() 函数创建一个 elasticsearch 客户端,并指定了 Elasticsearch 节点的地址。然后,我们使用 client.ping() 方法来测试连接是否成功。

接着,我们可以定义一个路由,来搜索我们的 Elasticsearch 数据:

app.get('/search', async (req, res) => {
  const query = req.query.q
  const { body } = await client.search({
    index: 'my_index',
    body: { query: { match: { title: query } } }
  })
  const hits = body.hits.hits.map(hit => hit._source)
  res.json(hits)
})

这个路由使用 client.search() 方法查询 Elasticsearch 数据,并返回一个 JSON 响应。

总结

在本文中,我们介绍了 Express 的一些基本概念和结构,并给出了一些示例,包括 Hello World、中间件、路由、静态文件服务、模板引擎、连接 MongoDB 数据库和 Elasticsearch 搜索引擎等。我们希望通过这些示例,能够帮助读者更好地理解和使用 Express。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Node.js轻量级Web框架Express4.x使用指南 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 前端node Session和JWT鉴权登录示例详解

    我将为您详细讲解“前端node Session和JWT鉴权登录示例详解”的完整攻略。 什么是Session和JWT鉴权? Session和JWT鉴权都是用于登录验证的一种方式。Session是基于服务器端的,而JWT鉴权是基于客户端的。在Session中,用户登录后,服务器会为该用户创建一个session,并返回一个session ID 给客户端,后续的请求…

    node js 2023年6月8日
    00
  • Nodejs的express使用教程

    Node.js的Express使用教程 Express是一个基于Node.js平台的Web应用开发框架,它提供了一系列强大的特性,帮助我们快速而简单地构建高效的Web应用程序。本教程将带领你了解如何使用Node.js平台上的Express框架。 安装Express 在开始使用Express框架前,我们先需要安装它。在终端中输入以下命令安装: npm inst…

    node js 2023年6月7日
    00
  • 测试驱动ChatGPT编程示例详解

    下面就是测试驱动ChatGPT编程示例的完整攻略: 总述 第一步是准备好ChatGPT模型。ChatGPT是一种语言模型,可以进行自然语言生成。它的原理是基于大量文本数据进行训练,并且在训练好的基础上进行生成。 第二步是准备好ChatGPT的测试数据集。这个测试数据集可以来源于真实的人机对话,也可以仿真出来。测试数据集的作用是验证ChatGPT模型的生成效果…

    node js 2023年6月8日
    00
  • node.js中fs.stat与fs.fstat的区别详解

    下面是对于“node.js中fs.stat与fs.fstat的区别详解”的完整攻略: 标题 node.js中fs.stat与fs.fstat的区别详解 简介 在Node.js中,fs.stat和fs.fstat都是用于获取文件/目录状态信息的方法。它们的区别在于,fs.stat需要传入指向文件/目录的路径字符串,而fs.fstat需要传入指向文件/目录的文件…

    node js 2023年6月8日
    00
  • 分析node事件循环和消息队列

    分析Node事件循环和消息队列 什么是Node事件循环和消息队列 Node.js是一种基于事件驱动和异步I/O模型的JavaScript运行时环境。在Node.js中,事件循环和消息队列是实现异步事件处理的重要组成部分。 事件循环是 Node.js 的核心,它负责在主线程中不断地轮询队列,查看是否有新的事件需要处理。 消息队列是用来存放事件回调函数的队列,当…

    node js 2023年6月8日
    00
  • nodejs中内置模块fs,path常见的用法说明

    下面是对“nodejs中内置模块fs,path常见的用法说明”的攻略。 fs模块的常见用法 fs模块提供了许多文件系统相关的功能,比如读写文件、创建目录等。 读取文件的方法 const fs = require(‘fs’); // 异步读取文件 fs.readFile(‘path/to/file’, ‘utf-8’, function(err, data) …

    node js 2023年6月8日
    00
  • 基于node.js依赖express解析post请求四种数据格式

    安装express依赖 在使用express解析post请求时,需要安装express依赖。可以使用npm进行安装,命令如下: npm install express express处理post请求 Express提供了内置的中间件函数,可以轻松处理HTTP请求中的各种数据格式,包括post请求的四种数据格式。 我们可以使用express的app.post方…

    node js 2023年6月8日
    00
  • nodejs报digital envelope routines::unsupported错误的最新解决方法

    当在Node.js中使用TLS(Transport Layer Security)连接时,可能会遇到digital envelope routines::unsupported错误,这个错误通常表示您的证书格式不被TLS支持。以下是最新的解决方法: 1. 查看证书格式 首先需要使用以下命令来查看您的证书格式: openssl x509 -in /path/t…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部