Express 框架的基本操作

目录

1、应用生成器

2、基本路由

2.1、在跟路由下配置 GET请求,返回对应相应内容。

 2.2、在跟路由下配置 POST请求,返回对应相应内容。

 2.3、在跟路由下配置 PUT请求,返回对应相应内容。

2.4、在根路由下配置DELETE请求,返回对应的内容。

2.5、在根路由下配置PAATCH请求,返回对应的内容。 

3、静态文件


1、应用生成器

使用应用生成器工具 express-generator 快速创建应用骨架。

你可以使用 npx 命令(在 Node.js 8.2.0 中可用)运行应用生成器。

npx express-generator

对于较早的 Node 版本,将应用生成器安装为全局 npm 包,然后启动它:

npm install -g express-generator
express

执行完成之后如下所示:

页面默认模板为 jade

express 带有 -h 选项的命令选项:

$ express -hUsage: express [options] [dir]Options:--version        版本编号-e, --ejs            增加ejs引擎支持--pug            增加pug引擎支持--hbs            增加handlebars 引擎支持-H, --hogan          增加hogan.js引擎支持 -v, --view <engine>  增加视图引擎支持(dust|ejs|hbs|hjs|jade|pug|twig|vash) (defaults to jade)--no-view        使用静态html而不是视图引擎-c, --css <engine>   增加样式表引擎支持(less|stylus|compass|sass) (defaults to plain css)--git            增加 .gitignore-f, --force          强制非空目录-h, --help           输出使用信息

然后安装依赖:

cd myapp
npm install

在命令窗口下,运行 npm start 启动项目。

npm start

默认接口为 3000,在浏览器中输入 http://localhost:3000/,页面如下所示:

2、基本路由

路由是指确定应用如何响应客户端对特定端点的请求,该端点是 URI(或路径)和特定的 HTTP 请求方法(GET、POST 等)。

每个路由可以有一个或多个处理函数,当路由匹配时执行。

路由定义采用以下结构:

app.METHOD(PATH, HANDLER)
  • app 是 express 的一个实例。
  • METHOD 是小写的 HTTP 请求方法
  • PATH 是服务器上的路径。
  • HANDLER 是路由匹配时执行的函数。

对应路由方法:

  • ACL
  • BIND
  • CHECKOUT
  • CONNECT
  • COPY
  • DELETE
  • GET
  • HEAD
  • LINK
  • LOCK
  • M-SEARCH
  • MERGE
  • MKACTIVITY
  • MKCALENDAR
  • MKCOL
  • MOVE
  • NOTIFY
  • OPTIONS
  • PATCH
  • POST
  • PROPFIND
  • PROPPATCH
  • PURGE
  • PUT
  • REBIND
  • REPORT
  • SEARCH
  • SOURCE
  • SUBSCRIBE
  • TRACE
  • UNBIND
  • UNLINK
  • UNLOCK
  • UNSUBSCRIBE
  • acl
  • bind
  • checkout
  • connect
  • copy
  • delete
  • get
  • head
  • link
  • lock
  • m-search
  • merge
  • mkactivity
  • mkcalendar
  • mkcol
  • move
  • notify
  • options
  • patch
  • post
  • propfind
  • proppatch
  • purge
  • put
  • rebind
  • report
  • search
  • source
  • subscribe
  • trace
  • unbind
  • unlink
  • unlock
  • unsubscribe

以下用常用的几个方法简单测试各个路由:

2.1、在跟路由下配置 GET请求,返回对应相应内容。

app.get('/', (req, res) => {res.send("这是一个GET请求,返回的结果!")
})

 2.2、在跟路由下配置 POST请求,返回对应相应内容。

app.post('/', (req, res) => {res.send("这是一个POST请求,返回的结果!")
})

 2.3、在跟路由下配置 PUT请求,返回对应相应内容。

app.put('/', (req, res) => {res.send("这是一个PUT请求,返回的结果!")
})

2.4、在根路由下配置DELETE请求,返回对应的内容。

app.delete('/', function(req, res, next) {res.send("这是一个DELETE请求,返回的结果!");
});

2.5、在根路由下配置PAATCH请求,返回对应的内容。 

app.patch('/', function(req, res, next) {res.send("这是一个PATCCH请求,返回的结果!");
});

3、静态文件

像我们常见的静态文件,比如,图像,css,javascript,html,字体文件等,在Express中提供了express.static() 内置的中间件函数进行处理。基于serve-static

语法结构如下所示:

express.static(root, [options])

注意:为了获得更好的性能,使用反向代理可以提高服务器静态资源的性能。

root参数指定静态资源的根目录。

下表描述了options对象的属性。

属性描述类型默认值
dotfiles确定如何处理点文件(以点“.”开头的文件或目录)。String“ignore”
etag启用或禁用 etag 生成

注意:始终发送弱 ETag。express.static
Booleantrue
extensions设置文件扩展名回退:如果未找到文件,请搜索具有指定扩展名的文件,并提供找到的第一个文件。例:。['html', 'htm']Mixedfalse
fallthrough让客户端错误作为未处理的请求落空,否则转发客户端错误。Booleantrue
immutable启用或禁用响应标头中的指令。如果启用,还应指定该选项以启用缓存。该指令将阻止支持的客户端在选项的生命周期内发出条件请求,以检查文件是否已更改。immutableCache-ControlmaxAgeimmutablemaxAgeBooleanfalse
index发送指定的目录索引文件。设置为 以禁用目录索引。Mixed“index.html”
lastModified将标头设置为操作系统上文件的上次修改日期。Last-ModifiedBooleantrue
maxAge

设置缓存控制标头的maxAge属性(以毫秒为单位)或 ms 格式的字符串。

Number0
redirect当路径名是目录时,重定向到末尾跟随“/”。Booleantrue
setHeaders用于设置 HTTP 标头以与文件一起服务的函数。Function

例如,通过如下代码就可以将 public 目录下的图片、CSS 文件、JavaScript 文件对外开放访问了:

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

在public目录下创建一个html文件,例如:test.html 

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body>H5 页面
</body>
</html>

启动服务,访问 http://localhost:3000/test.html

如果要使用多个静态资源目录,请多次调用 express.static 中间件函数:

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

访问静态资源文件时,express.static 中间件函数会根据目录的添加顺序查找所需的文件。

当前我们还可以给静态文件的目录,添加前缀例如:static

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

那么访问地址就变成了 http://localhost:3000/static/test.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音视频开发-ffmpeg介绍-系列一

目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念&#xff1a; 三.ffmpeg、ffplay、ffprobe区别 4.1 ffmpeg是用于转码的应用程序 4.2 fffplay是用于播放的应用程序 4.3 ffprobe是用于查看文件格式的应用程序 4.4 ffmpeg是用于转…

华为鲲鹏920 aarch64 版本 Ambari HDP 下载地址

声明&#xff1a;为有效缓解各位同行兄弟们的痛&#xff0c;特推出此文 本文能够适配兼容 华为鲲鹏920 aarch64 版本&#xff0c;仅限 CentOS7、openEuler20.03-LTS 操作系统 以下是详细下载地址 1、CentOS7 aarch64版本 CentOS7 aarch64 https://mirrors.huaweicloud.com/…

Langchain 的 Conversation summary memory

Langchain 的 Conversation summary memory 现在让我们看一下使用稍微复杂的内存类型 - ConversationSummaryMemory 。这种类型的记忆会随着时间的推移创建对话的摘要。这对于随着时间的推移压缩对话中的信息非常有用。对话摘要内存对发生的对话进行总结&#xff0c;并将当前摘…

91、RabbitMQ事务消息

RabbitMQ事务消息 通过对信道的设置实现 channel.txSelect(); 通知服务器开启事务模式;服务端会返回Tx.Select-ok channel.basicPublish; 发送消息&#xff0c;可以是多条&#xff0c;可以是消费消息提交ack channel.txCommit() 提交事务 channel.txRollback() 回滚事务 …

《零基础入门学习Python》第054讲:论一只爬虫的自我修养2:实战

0. 请写下这一节课你学习到的内容&#xff1a;格式不限&#xff0c;回忆并复述是加强记忆的好方式&#xff01; 今天我们决定在实战中来进行学习&#xff0c;会举两个例子&#xff0c;第一个例子是我们会下载一只猫&#xff0c;第二个例子是我们用Python来模拟浏览器通过在线的…

MySQL8.0索引新特性

文章目录 1 支持降序索引2 隐藏索引 1 支持降序索引 举例&#xff1a;分别在MySQL 5.7版本和MySQL 8.0版本中创建数据表ts1&#xff0c;结果如下&#xff1a; CREATE TABLE ts1(a int,b int,index idx_a_b(a,b desc) );在MySQL 5.7版本中查看数据表ts1的结构&#xff0c;从结…

83、讲下Zookeeper watch机制

讲下Zookeeper watch机制 客户端&#xff0c;可以通过在znode上设置watch&#xff0c;实现实时监听znode的变化。 Watch事件是一个一次性的触发器&#xff0c;当被设置了Watch的数据发生了改变的时候&#xff0c;则服务器将这个改变发送给设置了Watch的客户端 父节点的创建&…

45:ECMAScript 6 简介

ECMAScript 6 简介 [ECMAScript 和 JavaScript 的关系](https://es6.ruanyifeng.com/#docs/intro#ECMAScript 和 JavaScript 的关系)[ES6 与 ECMAScript 2015 的关系](https://es6.ruanyifeng.com/#docs/intro#ES6 与 ECMAScript 2015 的关系)语法提案的批准流程[ECMAScript 的…

选择前端框架重要依据是什么?

状态更改检测&#xff0c;也就是检测应用程序对状态值的改变&#xff0c;这样才会相应地更新 UI。 &#xff08;#MVC模式中模型Model的改变会更新View界面UI&#xff0c;这点类似后端的ORM&#xff0c;对象状态更改通过ORM框架自动变更相应数据表值&#xff09; 变更检测是前…

IntelliJ IDEA2023中利用maven-archetype-quickstart模板创建项目无src文件夹及maven插件下载过慢问题的解决

目录 介绍问题之解决问题2的解决问题1的解决 介绍 昨天下载并安装了IntelliJ IDEA 2023的最新版&#xff08;以下简称为IDEA 2023&#xff09;&#xff0c;学习利用该IDE编写Java项目及将其与maven结合构建项目。我所安装的maven是去年暑假安装的&#xff0c;版本为Apache Mav…

linux系统如何使用GPT工具进行分区

GPT&#xff08;GUID Partition Table&#xff09;是一种用于硬盘分区的新分区表格式&#xff0c;它具有比旧的MBR&#xff08;Master Boot Record&#xff09;分区表更高的灵活性和可靠性。在Linux系统中&#xff0c;我们可以使用GPT工具进行分区操作&#xff0c;本文将对如何…

linux常用命令—— less、more、head、cat

文章目录 1、less&#xff1a;向前或向后查看文件内容&#xff08;推荐使用&#xff09;1.1、less 基本用法1.2、快捷键操作1.3、查找文件中的关键字使用说明 1.4、linux中 less和more 的区别 2、more&#xff1a; 分页显示文件内容3、head&#xff1a;查看文件开头的内容4、ca…

认识主被动无人机遥感数据、预处理无人机遥感数据、定量估算农林植被关键性状、期刊论文插图精细制作与Appdesigner应用开发

目录 第一章、认识主被动无人机遥感数据 第二章、预处理无人机遥感数据 第三章、定量估算农林植被关键性状 第四章、期刊论文插图精细制作与Appdesigner应用开发 更多推荐 遥感技术作为一种空间大数据手段&#xff0c;能够从多时、多维、多地等角度&#xff0c;获取大量的…

[SQL挖掘机] - 删除数据库

介绍: 使用 SQL 中的 drop database命令。它会删除指定的数据库及其所有相关的表、视图、索引等对象。 使用命令: 下面是 drop database命令的基本语法&#xff1a; drop database database_name;其中&#xff0c;database_name是要删除的数据库的名称。 请注意&#xff0…

【数据结构常见七大排序(一)】—插入排序篇【直接插入排序】And【希尔排序】

目录 1.排序的概念及其运用1.1排序的概念1.2排序运用​​​​​​​​​​​​​​​​​​​​​1.3常见的七大排序 ​​2.直接插入排序2.1基本思想​​2.2直接插入排序2.3动图助解2.4直接插入排序源码​2.5直接插入排序的特性总结 ​​3.希尔排序( 缩小增量排序 )​​3.1希尔…

STM32CubeMX X-CUBE-AI更新模型

如题&#xff0c;我采用一个采用stm32CUBEMX生成了工程&#xff0c;工程里面使用了X-CUBE-AI对自定义的模型进行模型压缩&#xff0c;但是我经常要更新模型&#xff0c;那么怎样更新模型了。这里开博客记录一下。 如图所示&#xff0c;为基于STM32CUBEMX生成的工程文件目录结构…

C/C++ 程序 IDE 开发工具 CLion

下载地址&#xff1a; https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/ 下载地址&#xff1a; https://www.jetbrains.com/clion/download/ https://www.jetbrains.com/clion/download/ 历史版本&#xff08;老版本&#xff09;下载地址&#xff1a; h…

TCP/IP网络编程 第二十章:Windows中的线程同步

同步方法的分类及CRITICAL_SECTION同步 用户模式&#xff08;User mode)和内核模式&#xff08;Kernal mode&#xff09; Windows操作系统的运行方式是“双模式操作”&#xff08;Dual-mode Operation&#xff09;,这意味着Windows在运行过程中存在如下2种模式。 □用户模式&…

【分布式学习】服务注册与发现:Eureka、zk、Nacos、Consul对比

服务发现框架对比 –NacosEurekaConsulCoreDNSZookeeper一致性协议CPAPAPCP—CP健康检查TCP/HTTP/MYSQL/Client BeatClient BeatTCP/HTTP/gRPC/Cmd—Keep Alive负载均衡策略权重/metadata/SelectorRibbonFabioRoundRobin—雪崩保护有有无无无自动注销实例支持支持不支持不支持…

预处理过程(2/13)

头文件包含&#xff1a;#include定义一个宏&#xff1a;#define条件编译&#xff1a;#if、#else、#endif编译控制&#xff1a;#pragma 编译器提供的这些预处理命令&#xff0c;大大方便了程序的编写&#xff1a;通过头文件包含可以实现模块化编程&#xff1b;使用宏可以定义一…