Express 框架的基本操作

news2024/11/27 18:31:06

目录

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 -h

  Usage: 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.coloradmin.cn/o/778038.html

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

相关文章

【剑指offer】学习计划day4

目录 一. 前言 二.数组中重复的数字 a.题目 b.题解分析 c.AC代码 三.在排序数组中查找数字 I a.题目 b.题解分析 c.AC代码 四.0&#xff5e;n-1中缺失的数字 a.题目 b.题解分析 c.AC代码 一. 前言 本系列是针对Leetcode中剑指offer学习计划的记录与思路讲解。详情查看以下…

学习系统编程No.32【线程互斥实战】

引言&#xff1a; 北京时间&#xff1a;2023/7/19/15:22&#xff0c;昨天更新完博客&#xff0c;和舍友下了一会棋&#xff0c;快乐就是这么简单&#xff0c;哈哈哈&#xff01;总体来说&#xff0c;摆烂程度得到一定的改善&#xff0c;想要达到以前的水准&#xff0c;需要一定…

分布式 - 消息队列Kafka:Kafka分区常见问题总结

文章目录 01. Kafka 的分区是什么&#xff1f;02. Kafka 为什么需要分区&#xff1f;03. Kafka 分区有什么作用&#xff1f;03. Kafka 为什么使用分区的概念而不是直接使用多个主题呢&#xff1f;04. Kafka 分区的数量有什么限制&#xff1f;05. Kafka 分区的副本有什么作用&am…

[内网渗透]XXE-vulnhub

文章目录 [内网渗透]XXE-vulnhub环境安装信息收集解题步骤总结 [内网渗透]XXE-vulnhub 环境安装 首先在 vulnhub 下载文件&#xff1a; 将其解压为ovf格式&#xff1a; 使用vmware打开&#xff0c;新建一个虚拟机&#xff0c;然后开机&#xff0c;环境就搭好了 信息收集 由于…

【仿写spring】一、通过反射读取带有@RequestMapping与@Controller注解的类并模拟请求路径调用方法

目录 简介思路实践一、自定义注解RequestMapping&#xff0c;Controller二、路径转全限定名方法三、扫描文件夹四、通过反射来寻找有RequestMapping以及Controller的类五、获取对象实例六、通过invoke调用方法 文件结构以及测试结果1、文件结构2、TestController3、测试结果 简…

uniapp 条件编译失败,跑不起来

因为这行代码整个uniapp都跑不起来&#xff0c;谁懂救命。再说uniapp的异常提示也太反人类了<!-- <image :src"require(/ baseListItem.url)" /> -->

Linux进程控制(三)---进程替换+简易shell的实现

目录 execl() execv() execlp() execvp() 如何利用execl执行自己写的C/C可执行程序&#xff1f; 如何利用makefile同时编译两个文件 execle() execvpe() 简单shell的编写 什么是进程替换&#xff1f; 我们之前fork之后&#xff0c;是父子进程各自执行代码的一部分&am…

【人工智能】大模型平台新贵——文心千帆

个人主页&#xff1a;【&#x1f60a;个人主页】 &#x1f31e;热爱编程&#xff0c;热爱生活&#x1f31e; 文章目录 前言大模型平台文心千帆发布会推理能力模型微调 作用 前言 在不久的之前我们曾讨论过在ChatGPT爆火的大环境下&#xff0c;百度推出的“中国版ChatGPT”—文…

深度神经网络基础——深度学习神经网络基础 Tensorflow在深度学习的应用

目录 一、二、Tesnsflow入门 & 环境配置 & 认识Tensorflow三、线程与队列与IO操作神经网络基础知识1.简单神经网络2.卷积神经网络卷积层新的激活函数-Relu池化层(Pooling)计算 案例&#xff1a;Mnist手写数字图片识别卷积网络案例 一、二、Tesnsflow入门 & 环境配置…

IDEA无法链接代理The driver has not received any packets from the server.

问题如下: 1、本地部署Proxifier,且设置全局代理,截图如下 代理工具 2、通过Navicat 工具连接该远程数据库,连接正常,截图如下 3、通过IDEA或者Eclipse连接(通过代理),抛连接失败(数据库地址绝对无误),如果把数据库地址改成本地的mysql地址,可以正常连接(不用通过代理)…

mac使用mvn下载node-sass 会Binary download failed, trying source

m1 上使用nvm 以下node的版本可以直接下载&#xff08;Binary download&#xff0c;而不是 trying source&#xff09;而不用切换mac cpu架构 zhiwenwenzhiwenwendeMBP cockpit % nvm install 14.15.5 Downloading and installing node v14.15.5... Downloading https://node…

二十五章:TransUNet:Transformer为医学图像分割提供强大的编码器

0.摘要 医学图像分割是发展医疗系统的重要先决条件&#xff0c;特别是对于疾病诊断和治疗计划。在各种医学图像分割任务中&#xff0c;U型架构&#xff0c;也称为U-Net&#xff0c;已成为事实上的标准&#xff0c;并取得了巨大的成功。然而&#xff0c;由于卷积操作的固有局部性…

Zabbix监控linux主机(agent端)

目录 一、Linux-clinet操作&#xff08;agent&#xff09; 二、源码安装zabbix 三、Zabbix添加linux主机 为agent.zabbix.com添加模板 等待一会 查看效果如下 一、Linux-clinet操作&#xff08;agent&#xff09; [rootlocalhost ~]# ifconfig ens33[rootlocalhost ~]# vim…

免费的游戏图标素材库分享

游戏图标设计在游戏UI中占有非常重要的地位。例如&#xff0c;当我们看到一个游戏的启动图标时&#xff0c;很容易区分它是哪个游戏。设计游戏图标不仅是一个图形&#xff0c;也是一个标志。 本文将通过各种游戏图标设计素材分享游戏图标的类别和设计游戏图标的思考。 1. 游戏…

程序员基础知识—IP地址

文章目录 一、什么是IP地址二、IP地址的分类三、子网掩码 一、什么是IP地址 IP地址就像我们需要打电话时的电话号码一样&#xff0c;它用来标识网络中的一台主机&#xff0c;每台主机至少有一个IP地址&#xff0c;而且这个IP地址是全网唯一的。IP地址由网路号和主机号两部分组…

vue 3.0 如何加载图片

.logo { background: url(~/assets/images/logo.svg) no-repeat center center/contain; width: 117px; height: 24px; margin: 0 20px; } <a class"logo" href"#"></a> 比较实用的书写方式

小程序制作教程

步骤一&#xff1a;规划和设计 在开始制作微信小程序之前&#xff0c;首先需要规划和设计您的小程序。确定您想要提供的服务或功能&#xff0c;并考虑用户体验和界面设计。绘制草图和构思完整的页面布局&#xff0c;这将使您更好地理解小程序结构和功能。 步骤二&#xff1a;…

Arrays.asList

文章目录 摘要详解我们再去看看 java.util.ArrayList 为什么可变的呢&#xff1f;Arrays.asList()和 Collections.singletonList()额外&#xff1a;Collections.singletonList() 摘要 先总结要点&#xff0c;接下来详细讲解 返回由指定数组支持的长度不可变的列表&#xff0c…

题目3 文件包含(保姆级教程)

url&#xff1a;http://192.168.154.253:83 #打开http://XXX:81/&#xff0c;XXX为靶机的ip地址 审题 1、打开题目看到有一个提示&#xff0c;此题目需要通过利用存在的文件包含漏洞&#xff0c;尝试获取webshell&#xff0c;最后从根目录下key.php文件中获得flag 2、开始答题…

老年公寓人员定位管理系统:提升安全与关怀的智能解决方案

老年公寓作为提供安全居住环境和关怀服务的重要场所&#xff0c;面临着人员管理和安全控制的挑战。为了解决这些问题&#xff0c;老年公寓人员定位管理系统应运而生。基于为提供全面的安全管理和个性化关怀服务&#xff0c;华安联大便通过老年公寓人员定位管理系统的技术原理、…