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

yizhihongxing

浅谈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日

相关文章

  • 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+Mysql模块封装实现详解

    当我们开发Node.js后台应用时,常常需要使用数据库来存储和管理数据。而Mysql数据库是使用最广泛的关系型数据库之一。在Node.js中使用Mysql,需要使用mysql模块来连接Mysql数据库。但是,每次使用mysql模块时,都需要写很多重复的代码,包括连接数据库、执行sql语句等。为了提高开发效率,我们可以将这些常用的操作封装成一个模块,使得我们在…

    node js 2023年6月8日
    00
  • Node.js进程退出的深入理解

    Node.js进程退出的深入理解 Node.js进程退出是一个非常重要的问题,在应用程序开发中经常会遇到各种问题,例如应用程序崩溃、进程无法退出等等,所以我们需要深入理解Node.js进程退出的原理及技巧,以避免这些问题的发生。 Node.js进程退出的原理 在Node.js中,进程的退出分为两种情况: 程序正常退出 程序异常退出 在程序正常退出的情况下,可…

    node js 2023年6月8日
    00
  • require.js中的define函数详解

    当你使用require.js进行模块化开发时,你需要使用define函数来定义对应的模块。本文将对define函数的详细用法进行介绍。 1. define函数的基本语法 define(id?, dependencies?, factory); define函数接收三个参数: id : 一个可选参数,表示模块的ID,如果不提供该参数,define函数会根据当前…

    node js 2023年6月8日
    00
  • javascript 冒泡排序 正序和倒序实现代码

    冒泡排序是一种简单的排序算法,其基本思想是通过比较相邻元素的大小进行排序。在一个数组中,每次比较都会将相邻元素中较大的元素向右移动。重复此过程直到整个数组都按从小到大的顺序排列。 以下是 JavaScript 冒泡排序的正序实现代码: function bubbleSort(arr) { for (let i = 0; i < arr.length -…

    node js 2023年6月8日
    00
  • 详解JavaScript树结构

    详解JavaScript树结构 什么是树结构 树结构是一种非常常见的数据结构,它由多个节点(Node)和连接它们的边(Edge)所组成的集合体。其中树的顶部节点被称为根节点(Root),没有子节点的节点称为叶节点(Leaf),除了根节点外,每个节点都有一个父节点(Parent)。 树结构可以被用来表示许多信息,例如文件系统、公司组织架构、网页导航等。 用对象…

    node js 2023年6月8日
    00
  • 深入理解nodejs中Express的中间件

    深入理解nodejs中Express的中间件是一个非常重要的主题,在开始详细讲解前,我们先来了解一下Express的中间件的概念。 什么是Express中间件? Express中间件是一种可以访问请求对象(req)、响应对象(res)和应用程序的中间件函数。在Express应用程序中,中间件就像是可以在请求到达路由处理程序之前执行的“过滤器”,它们可以用于执…

    node js 2023年6月8日
    00
  • nodejs读取本地中文json文件出现乱码解决方法

    这里为大家提供一种解决nodejs读取本地中文json文件乱码的方法。 问题描述 在使用Node.js读取本地JSON文件的时候,如果文件中存在中文字符,有时会出现乱码的问题,即中文字符在程序中无法正常显示。原因是Node.js读取数据时默认编码为UTF-8,而中文JSON文件的编码常为GB2312。 解决方法 为了避免这个问题,我们需要将读取文件时的编码设…

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