Express 基础操作和详解

简介: Express.js 是一个基于 Node.js 平台的 Web 应用程序框架,它旨在帮助开发者轻松构建和管理 Web 服务和应用程序。Express 提供了许多强大的功能,使得创建可扩展、灵活且高性能的 Web 应用变得相对容易。以下是 Express 的主要特点和一些核心概念的详细解释

Express.js 是一个基于 Node.js 平台的 Web 应用程序框架,它旨在帮助开发者轻松构建和管理 Web 服务和应用程序。Express 提供了许多强大的功能,使得创建可扩展、灵活且高性能的 Web 应用变得相对容易。以下是 Express 的主要特点和一些核心概念的详细解释:



安装 Express.js


在开始之前,确保你已经安装了 Node.js 和 npm。接下来,你可以使用 npm 来安装 Express.js:


npm install express


创建一个简单的 Express 应用


首先,创建一个名为 app.js 的文件,用于编写 Express 应用程序。然后,按照以下步骤创建一个简单的 Express 应用:


步骤 1: 导入 Express 模块


app.js 文件中,首先导入 Express 模块:


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


步骤 2: 创建一个 GET 请求处理程序


使用 Express,你可以创建不同类型的路由来处理不同的 HTTP 请求。下面是一个简单的 GET 请求处理程序,用于处理根路径 / 上的 GET 请求:


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


在上面的代码中,我们使用 app.get() 方法创建一个 GET 请求处理程序。当用户访问根路径 / 时,服务器将响应 “Hello, Express!”。


步骤 3: 启动 Express 应用


最后,在文件的末尾,添加以下代码以启动 Express 应用并监听端口:


const port = 3000;
app.listen(port, () => {
  console.log(`Express app listening at http://localhost:${port}`);
});


这将启动 Express 应用并监听端口 3000。你可以根据需要更改端口号。


运行 Express 应用


在终端中,通过以下命令运行 Express 应用:


node app.js


1. 路由处理


Express 提供了一个简单而灵活的路由系统,用于处理不同 HTTP 请求方法(如 GET、POST、PUT、DELETE)和 URL 路径的请求。通过路由,你可以将请求映射到特定的处理程序函数,实现不同 URL 路径的响应。


示例:


app.get('/', (req, res) => {
  res.send('Hello, Express!');
});
app.post('/user', (req, res) => {
  // 处理 POST 请求
});


2. 中间件


Express 中间件是一个函数链,用于在请求到达路由处理程序之前或之后执行一些操作。中间件可以处理身份验证、日志记录、请求解析等任务,可以根据需要添加、排列和自定义中间件。


示例:


// 自定义中间件
app.use((req, res, next) => {
  console.log('Request received at: ', new Date());
  next(); // 调用下一个中间件或路由处理程序
});


3. 模板引擎


Express 允许你使用各种模板引擎(如 EJS、Pug、Handlebars)来渲染动态的 HTML 页面。这使得构建服务器端渲染的应用程序变得容易。


示例:


app.set('view engine', 'ejs');
app.get('/profile', (req, res) => {
  res.render('profile', { name: 'John' });
});


4. 静态文件服务


通过 express.static 中间件,Express 可以轻松地提供静态文件(如 CSS、JavaScript、图像)的服务,而无需为它们编写额外的路由。


示例:


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


核心概念:


1. app 对象


app 对象是 Express 应用程序的核心,它包含了路由、中间件和其他配置。你可以使用 app 对象来定义路由、设置中间件、启动服务器等。


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


2. 路由


路由是用于定义请求处理程序的映射规则。Express 使用不同的 HTTP 请求方法(如 GET、POST)和 URL 路径来匹配路由规则,并执行相应的处理程序。


3. 中间件


中间件是一个函数链,用于处理请求和响应。它可以在请求到达处理程序之前或之后执行各种任务,如身份验证、日志记录、请求解析等。


4. 请求(req)和响应(res)


req 对象表示客户端请求,包含有关请求的信息(如 URL、HTTP 头、请求体等)。res 对象用于构建和发送响应给客户端。


5. 监听端口


使用 app.listen() 方法来启动 Express 应用程序,并监听指定的端口号以接受传入的请求。


示例:


const port = 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});


6. 错误处理


Express 提供了一种机制来处理错误,你可以使用中间件来捕获和处理应用程序中的错误。


示例:


app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});


你将在终端看到输出,表示 Express 应用已经在指定的端口上运行。现在,你可以在浏览器或 API 工具中访问 http://localhost:3000/,应该会看到 “Hello, Express!” 的响应。


452fc0d979e945b6bc746cbab77564b3.gif

以上就是Express 基础操作和详解感谢大家的阅读


如碰到其他的问题 可以私下我 一起探讨学习


如果对你有所帮助还请 点赞 收藏谢谢~!


关注收藏博客 作者会持续更新…

相关文章
|
NoSQL Shell Linux
Linux上MongoDB无法连接解决之道
解决重启机器后mongodb不能连接的问题
19140 0
|
机器学习/深度学习 人工智能 安全
AI攻克132年的未解之谜 | AI大咖说
本文探讨了AI在数学证明和自然科学研究中的最新进展,特别是AI成功找到新的李雅普诺夫函数,解决了132年的数学难题。文中介绍了李雅普诺夫函数的重要性,AI如何通过Transformer模型实现高准确率的预测,并讨论了AI在数学和自然科学领域的广泛应用及未来挑战。【10月更文挑战第9天】
431 1
|
人工智能 算法 搜索推荐
通义灵码在Python项目开发中的应用实践
通义灵码在Python项目开发中的应用实践
481 0
|
数据库
sqlmap过滤连续空格的方法(一)
sqlmap过滤连续空格的方法(一)
CSM 和 PSM 认证对比以及含金量和市场认可度
CSM:由Scrum Alliance提供。Scrum Alliance是最早的Scrum认证机构之一,专注于敏捷方法和Scrum框架的推广。 PSM:由Scrum.org提供。Scrum.org由Scrum的创始人Ken Schwaber创立,专注于Scrum框架的认证和培训
|
存储 消息中间件 NoSQL
Redis从入门到精通之底层数据结构基数树和listpacks详解
Redis是一种内存数据库,其高性能的基础来自于其底层的数据结构的设计。在Redis中,数据结构是一种抽象和具体的概念,可以看作是Redis提供的一些操作的实现方式。Redis支持多种数据结构,如字符串、列表、哈希、集合、有序集合等。其中,底层的数据结构包括基数树和listpacks,本文将对这两种数据结构进行详细的介绍。
729 0
Redis从入门到精通之底层数据结构基数树和listpacks详解
|
安全 定位技术 API
无代码平台评测:草料二维码
无代码平台让创建应用变得简单,无需编写代码,通过图形界面和预设模块,实现软件开发。草料二维码作为无代码平台,具备丰富功能,使用门槛低,适合一线业务人员和中小企业。其核心功能包括内容展示、表单、动态数据和批量生码,广泛应用于产品介绍、签到报名等场景。优点是搭建简单、使用方便且多数功能免费;缺点在于功能相对简单,不支持私有化部署。总体而言,它是实现低成本信息化管理的高性价比选择。
|
Kubernetes 网络安全 容器
使用Kubespray部署Kubernetes集群
Kubespray是Google开源的一个部署生产级别的Kubernetes服务器集群的开源项目,它整合了Ansible作为部署的工具。项目地址:github.com/kubernetes-… 部署历程 目前为止,对于Kubernetes集群的部署,我只谈的上是一个入门者,涉及到了众多的运维知识,对于一个开发来说,确实挺难的。
3963 0
|
Windows 程序员 Perl
汇编语言 标志位介绍
一、运算结果标志位 1、进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。
2118 0