当前位置: 首页 > news >正文

Express入门和实践(一)

1、什么是Express?

Express是一种Node框架,是许多其他流行Node框架的底层哭,它提供了以下机制:

  • 为不同URL路径中使用不同 http 动词的请求(路由)便携处理程序。
  • 集成了“视图”渲染引擎,一边通过将数据插入模版来生成响应。
  • 设置常见web应用设置,比如用于连接的端口,以及渲染响应模版的位置。
  • 在请求处理管道的任何位置添加额外的请求处理“中间件”

Express中间件可以实现 cookie、会话、用户登录、URL参数、POST数据、安全头等功能。

2、安装Express

npm install express

3、Express代码是什么样子的?

使用 Express 可以调用特定 HTTP 动词(GETPOSTSET等)函数和 URL 模式(“路由”)函数,还可以指定模板(“视图”)引擎的种类、模板文件的位置以及渲染响应所使用的模板。可以使用 Express 中间件来添加对 cookie、会话、用户、获取 POST/GET 参数,等。可以使用 Node 支持的任何类型数据库(Express 本身没有定义任何数据库行为)。

4、导入和创建模块

可以用 Node 的 require() 函数将它们导入其他代码。Express 本身就是一个模块,Express 应用中使用的中间件和数据库也是。

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

为了让对象暴露于模块之外,只需把它们设置为 exports 对象的附加属性即可。

exports.area = (width) => {return width * width;
};
exports.perimeter = (width) => {return 4 * width;
};

可以用 require() 导入这个模块,然后调用导出的方法

const square = require("./square");
// 这里 require() 了文件名,省略了 .js 扩展名(可选)
console.log("边长为 4 的正方形面积为 " + square.area(4));

一次赋值不仅能构建一个单一的属性,还能构建一个完整的对象,可以像下面这样把对象赋值给 module.exports

module.exports = {area: (width) => {return width * width;},perimeter: (width) => {return 4 * width;},
};

5、创建路由处理器(Route handler)

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

回调函数将请求和响应对象作为参数。该函数直接调用响应的 send() 以返回字符串“Hello World!”。有许多其他响应方法可以结束请求/响应周期,例如,通过调用 res.json() 来发送 JSON 响应、调用 res.sendFile() 来发送文件。

虽然回调函数的参数命名没有限制,但是当调用回调时,第一个参数将始终是请求,第二个参数将始终是响应。合理的命名它们,在回调体中使用的对象将更容易识别。

有一个特殊的路由方法 app.all(),它可以在响应任意 HTTP 方法时调用。用于在特定路径上为所有请求方法加载中间件。

处理程序将在监听到针对 /secret 的任意 HTTP 动词:

app.all("/secret", (req, res, next) => {console.log("访问私有文件 ...");next(); // 控制权传递给下一个处理器
});

6、使用中间件(Middleware)

中间件可以执行任何操作,运行任何代码,更改请求和响应对象,也可以结束“请求 - 响应”周期。如果它没有结束循环,则必须调用 next() 将控制传递给下一个中间件函数(否则请求将成为悬挂请求)。

大多数应用会使用第三方中间件来简化常见的 web 开发任务,比如 cookie、会话、用户身份验证、访问请求 POST 和 JSON 数据,日志记录等。

中间件和路由函数是按声明顺序调用的。一些中间件的引入顺序很重要(例如,如果会话中间件依赖于 cookie 中间件,则必须先添加 cookie 处理器)。绝大多数情况下要先调用中间件后设置路由,否则路由处理器将无法访问中间件的功能。

如何使用这两种方法添加中间件功能,以及是否使用路由:

const express = require("express");
const app = express();// 示例中间件函数
const a_middleware_function = (req, res, next) => {// ... 进行一些操作next(); // 调用 next() ,Express 将调用处理链中下一个中间件函数。
};// 用 use() 为所有的路由和动词添加该函数
app.use(a_middleware_function);// 用 use() 为一个特定的路由添加该函数
app.use("/someroute", a_middleware_function);// 为一个特定的 HTTP 动词和路由添加该函数
app.get("/", a_middleware_function);app.listen(3000);

http://www.dtcms.com/a/398476.html

相关文章:

  • 从零开始搭建深度学习大厦系列-4.Transformer生成式大语言模型
  • 【MySQL初阶】04-数据表的操作
  • 展会进行时 | Splashtop Inc.(浪桥科技)亮相2025中国国际工业博览会
  • SMTPman,smtp服务器的使用全解析与指南!
  • 39.应用层HTTP协议(二)
  • 网站调用微信js视频深圳微信网站建设公司哪家好
  • 佛山网站建设策划做网站需提供什么资料
  • Swift 实现 DLNA 投屏功能:完整技术解析与实践指南
  • Axios 请求
  • Macbook突然无法开机和充电导致项目无法编译-《时光小铺》的开发意外事故~另寻求维修高手指导
  • 用html5写一个宠物小精灵游戏
  • 客观与主观评估扩散模型在构音障碍语音增强中的应用
  • Xcode 26 error
  • python+django/flask的宠物救助及领养系统javaweb
  • 半导体网站建设装饰公司网页设计
  • 企业网站建设策划书 前言做影视网站需要多大硬盘
  • 电子基石:硬件工程师的器件手册 (十六) - 射频电路:电磁波的有意操控
  • DeepSeek辅助整合精简的DuckDB大数运算插件
  • InnoDB Undo Log机制全解析
  • K8s学习笔记(三) kubectl 常用命令
  • 第二章:Java到Go的思维转变
  • EFR32MG21模组(Zigbee)与STM32单片机通信
  • 部署的git仓库地址变更后更改新地址
  • 加强部门网站建设wordpress验证码失效
  • 昆山做网站的jofuns商务网站开发课程体会
  • PyTorch 神经网络模型构建与训练笔记(2)
  • 某旅游学院网络安全项目:构建高效监控集中管理与巡检系统
  • 【开题答辩全过程】以 J2EE应用于母婴健康管理系统的开发与实施为例,包含答辩的问题和答案
  • 网站设计与制作公司中铁中基建设集团网站
  • 怎么样自己做百度网站做网站什么主题好做