【node.js】第六章 初识express

news2024/11/17 23:39:21

目录

1.  express简介

1.1  express的概念

1.2 express的作用

2. express的使用

2.1 使用express创建Web服务器

2.2 监听GET/POST请求

2.3  获取URL的请求参数

3.  托管静态资源

3.1 express.static

3.2 托管多个静态资源

3.3 挂载路径前缀 

4. nodemon


1.  express简介

1.1  express的概念

express是基于Node.js平台的快速,极简Web开发框架。express的作用类似于Node.js中的http模块,用于创建Web服务器的。

express的官网:https://www.express.com/cn

1.2 express的作用

常见的两种服务器,分别是:

Web网站服务器:专门对外提供Web网页资源的服务器。

API接口服务器:专门对外提供API接口的服务器。

使用Express,可以方便、快速地创建Web网站服务器或API接口服务器。 

2. express的使用

2.1 使用express创建Web服务器

// 导入express包
const express = require('express');
// 创建express服务器
const app = express();

// 启动服务器 监听80端口,并有个回调函数
app.listen('80',() => {
    console.log('express Web server is running at 127.0.0.1');
})

报错原因:没有安装express模块

解决:npm install express

 成功启动服务器:

 2.2 监听GET/POST请求

1. 通过app.get()方法,可以监听客户端的GET请求:

// 参数1: 客户端请求的URL地址
// 参数2: 请求对应的处理函数
//       req: 请求对象
//       res: 响应对象
app.get('请求URL', function(req, res) { /*处理函数*/ })

2. 通过app.post()方法,可以监听客户端的POST请求: 

app.post('请求URL', function(req, res) { /*处理函数*/ })

 3. 示例:

// 导入express包
const express = require('express');
// 创建express服务器
const app = express();

// // 启动服务器
app.listen('80',() => {
    console.log('express Web server is running at 127.0.0.1');
})

app.get('/user', (req, res) => {
    const jsonObj = {
        name: 'sun',
        age: '18',
        gender: 'women'
    }
    res.send(jsonObj); // 响应客户端JSON数据
})

app.post('/user', (req, res) => {
    res.send('请求成功') // 响应客户端文本数据
})

可以下载postman或者Apipost软件来模拟GET/POST请求的发送: 

 

 2.3  获取URL的请求参数

1. 获取静态参数 

通过req.query对象,可以访问到客户端通过查询字符串的形式,发送到服务器的参数:

// 模拟请求127.0.0.1?name=sun&age=20,URL附带参数、打印参数并响应参数
app.get('/', (req, res) =>{
    console.log(req.query);
    res.send(req.query);
})

2. 获取动态参数

app.get('/user/:id', (req,res) => {
    console.log(req.params); // 可以获取动态参数
    res.send(req.params); //响应动态参数id
})

3.  托管静态资源

3.1 express.static

express提供了一个非常好用的函数,叫做express.static(),通过它,我们可以非常方便地创建一个静态资源服务器,例如,通过如下代码就可以将public目录下的图片,CSS文件,JS文件对外开放访问了:

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

设置后,可以访问public目录的所有文件了:

http://localhost/images/bg.jpg
http://localhost/css/style.css
http://localhost/js/login.js
...

注意:Express在指定的静态目录中查找文件,并对外提供资源访问路径,因此,存放静态文件的目录名不会出现在URL中

3.2 托管多个静态资源

如果要托管多个静态资源目录,可以多次调用express.static()函数:

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

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

3.3 挂载路径前缀 

如果希望在托管的静态资源访问路径之前,挂载路径前缀,则可以使用如下方式:

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

这样就可以在访问路径出现需要的路径前缀了: 

4. nodemon

在编写调试Node.js项目时,如果修改了代码,需要频繁关闭服务,再重新启动,很麻烦。所以可以使用nodemon这个工具,可以监听项目的变动,如果代码被修改了,nodemon会自动帮我们重启项目,方面开发和调试。

安装nodemon:

npm install nodemon -g

安装nodemon后,我们运行项目的命令需要从node变为nodemon:

node test.js
// 安装nodemon后、替换为如下命令
nodemon test.js

这样nodemon可以监听test.js文件的改动,从而不需要我们手动关闭重启服务。nodemon会自动重启。 

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

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

相关文章

Docker镜像操作、容器操作、数据卷及挂载数据卷

目录 一、镜像操作 案例:从DockerHub中拉取一个nginx镜像并查看 案例:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来 二、容器操作 案例:创建运行一个Nginx容器 案例:创建并进入redis容器&#xf…

随笔记录-看nacos源码

Import注解 Import注解可以导入一些配置类,也就是创建一些指定对象。 使用Import导入普通类 项目结构中,import-consumer和import-provider都是同层级的module,import-consumer的pom文件中有引用import-provider的依赖; import…

baby_web (攻防世界)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 进入网址 解题工具: 一个有F12的键盘 问题解析: 题目说想想初始页面是哪个 一般都是index.php 然后如题分析即可 科普时间叒到 HTTP状态码 (英语:HTTP Status Code…

从零开始操作系统-08:计时器

这一节主要主要是计时器。 所需要的文件在Github:https://github.com/yongkangluo/Ubuntu20.04OS/tree/main/Files/Lec7-ExternalInterrupt 计时器: 可编程间隔计时器:PIT(Programmalbe Interval Timer)8254 使用A…

Windows下文本生成图像AI画图尝鲜体验

工具库 transformers 的开源方 Hugging Face 发布了一个专注于 diffuser 模型的开源库,我们可以基于它,仅仅通过几行代码就开始生成自己的艺术作画。不过这个 diffuser 库是一个基础实现版本,训练和学习的数据也没有 OpenAI 的 DALL-E2、谷歌…

学习docker记录(三)

使用volume 创建一个数据卷 docker volume create test-first-volume创建完之后,可以在 /var/lib/docker/volumes/ 目录下看见新建了一个 test-first-volume文件夹 在Dockerfile中 volume的指定的目录是: /www/wwwroot/pictureManager/deploy原本以为…

三步教你快速入手一个新产品的测试

初入一家公司,当一个全新的产品摆在你的面前,你会如何快速入手呢? 虽说实践是熟悉系统的第一要素,但我们需要静静思考一下。 我是谁:QA 我在哪:产品组 我要做什么:保质量 有多少来熟悉&…

LeetCode 320 周赛

总结 本场周赛太拉跨了!T1做完后,T2一直被卡住,还好后面暂时跳过了T2去做T3,T3做完后又回过头来继续调试T2。在最后10分钟调过了(虽然后来看运行时长达到了1400ms(差点就过不了))。 …

vue3 斗兽棋游戏

近来掘金举办前端比赛,所以写了一个小游戏参加,而且熟悉一下vue3,写了一下游戏,思来想去就写了一个斗兽棋游戏。 欢迎去给我加油 点赞评论收藏 ,试玩地址 游戏地址 童年斗兽棋 - 码上掘金 https://code.juejin.cn/pen/716…

四川水泥杂志四川水泥杂志社四川水泥编辑部2022年第11期目录

水泥与混凝土 外加剂含固量对混凝土性能影响的分析 金世鑫; 1-4 《四川水泥》投稿:cnqikantg126.com 粉煤灰在干混砂浆中的应用研究 方光旭;古再努尔依明;杨博;陈南希;张琰琦; 5-7 浅析透光混凝土在建筑空间中的应用 李嘉;李嘉鑫; 8-10 研究与探讨…

c++ 智能指针 shared_ptr

C 智能指针 shared_ptr 详解与示例_码农小明的博客-CSDN博客_shared_ptr 一、简介 shared_ptr 是c11的智能类,可以在任何地方都不使用的时候自动删除和相关指针,从而彻底消除内存泄漏和指针悬空的问题。 她遵循共享所有权,即不同的shared_pt…

CVPR‘15 Joint action recognition and pose estimation from video

任务:action recognition and pose estimation 思路:对动作和姿态进行统一建模,将动作分成姿态,再将姿态分成part,学习三种level特征,通过动态规划有效的推断动作标签和姿态。 方法:统一建模…

通俗理解计算机操作系统的作用

“操作系统”,简称“OS”,是一个包含多个部分和多个目标的大型程序。 它的第一项工作是在你第一次打开计算机时启动并运行计算机。它的另一项工作是启动和结束应用程序,并给每个程序一个运行时间。它是那台计算机上所有其他程序的“老大”。当…

【App自动化测试】(一)Appium和移动端自动化

目录1. 目前mobile自动化解决方案1.1 iOS和Android 测试工具1.2 自动化工具的选择1.3 选择自动化工具的考虑因素2. Appium介绍2.1 Appium介绍2.2 多架构支持2.3 推荐Appium的理由2.4. Appium框架介绍2.4.1 Appium引擎列表2.4.2 Appium设计理念前言: 本文为在霍格沃兹…

多智能体强化学习MARL的概念和框架

1.多智能体强化学习 系统里的agents数量大于1,agents彼此之间不是独立的 每个agent的动作都能影响到下一个状态每个agent都能影响到其他agent 除非agent之间是独立的,否则单一agent的RL方法不适合MARL 2.MARL的类型 Fully cooperative(完…

智慧医院智慧医疗解决方案

IBM于2009年提出“智慧医疗”这一理念。作为“智慧的地球”战略的重要组成部分,致力于构建一个“以病人为中心”的医疗服务体系。通过在服务成本、服务质量和服务可及性三方面取得一个良好的平衡,从而优化医疗实践成果、创新医疗服务模式和业务市场&…

Unity插件Obi.Rope详解

前言 Obi.Rope插件的使用方法 绳子的创建 创建后的Obi Rope,Inspector面板如下所示,组件比较多,其中Obi Solver是绳子,布料,液体等的总处理器,也可以单独分出来此组件为一个独立的游戏对象。 绳子的形状…

风控标签体系的使用与介绍

随着大数据技术的深入研究与应用,企业的专注点日益聚焦于怎样利用大数据来为精细化运营及精准营销服务,进而深入挖掘潜在的商业价值。于是,用户画像的概念也就应运而生。 在推荐系统中, 【推荐系统内容,详情可以关注番…

弘玑Cyclone2022产品发布会:全新上线智能文档处理交互平台——尚书台

近日,在弘玑Cyclone“智无边界,数字未来”发布会上,弘玑Cyclone2022年超级自动化系列产品全新亮相,首席产品官贾岿博士带领产品团队以创新技术对新时代语境下的数字生产力进行了全新解读。 上期为大家介绍了人人可用的数字化工作…

Java工具库Guava的数学运算常用方法示例代码

场景 Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验: Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验_霸道流氓气质的博客-CSDN博客_guava 校验 为什么使用 Guava Math 1、Guava Math 针对各种不常见…