【Npde.js】express以及nodemon

news/2024/4/25 8:36:36/文章来源:https://blog.csdn.net/weixin_44899940/article/details/129086555

express

        • 初始Express
          • 什么是Express
          • 不使用Express可以创建web服务器吗?
          • Express能做什么
          • 安装Express
          • 监听GET请求和post请求
          • 获取URL中携带的查询参数
          • 获取URL中携带的动态参数
          • 托管静态资源
        • nodemon
          • 为什么使用nodemon

初始Express

什么是Express
  • 官方给出的概念,Express是基于Node.js平台,快速,开放,极简的web开发框架
  • 通俗的说,和node.js的http模块类似,是专门用来创建web服务器的
  • EXpress,本质上是一个npm的第三方包,提供了快速创建web服务器的便捷方法
  • 官网:http://www.expressjs.com.cn/
不使用Express可以创建web服务器吗?
  • 能,使用node.js提供的原生http模块即可
  • 那为什么不使用http模块呢?
  • http模块使用复杂,开发效率低。Express基于内置http模块进一步封装出来的,能够极大提高开发效率
  • Express是基于前者进一步封装出来的
Express能做什么
  • 对于前端程序员来说,最常见的两种服务器
  • Web网站服务器,专门对外提供web网页资源的服务器
  • API接口服务器,专门对外提供APi接口的服务器
  • 使用Express,就可以快速创建这两种服务器
安装Express
  • npm i express@4.17.1
// 导入express
const express = require('express')
// 创建web服务器
const app = express()
// 启动文本服务器
app.listen(80,()=>{console.log("80服务器启动")
})

在这里插入图片描述

监听GET请求和post请求
  • 通过app.get()方法,可以监听客户端的GET请求
  • 通过app.post()方法,可以监听客户端的POST请求
  • 通过res.send()方法,可以把处理好的内容,发送给客户端
// 监听客户端的GET请求
// 参数1,客户端请求的url地址
// 参数2,请求对应的处理函数//req,请求对象(包含了与请求相关的属性和方法)//res,响应对象,包含了与响应相关的属性和方法
app.get("/user", function (req, res) {// res.send()方法,可以把处理好的json内容,发送给客户端res.send({name: "乞力马扎罗",age: '24'})
})
app.post("/user", function (req, res) { // res.send()方法,可以把处理好的文本内容,发送给客户端res.send("乞力马扎罗请求成功")
})
  • 我是在Apifox在线测试的,结果如下(代码还是敲一下才有印像)
  • 测试之前,可以重启一下服务器
  • GET请求
    在这里插入图片描述

在这里插入图片描述

  • POST请求
    在这里插入图片描述
获取URL中携带的查询参数
  • 通过req.query对象,可以访问客户端通过查询字符串的形式。查询发送到服务器的参数
  • req.query默认是空对象
app.get("/user", function (req, res) {// req.query默认是空对象// 当客户端使用?name=ls&age=24 这种查询字符串形式,发送到服务器的参数// 可以通过req.query对象访问到console.log(req.query)
})
  • 请求
    在这里插入图片描述

  • 终端打印出了
    在这里插入图片描述

获取URL中携带的动态参数
  • 通过req.params对象,可以访问url中,通过:匹配到的动态参数
  • 可以有多个动态参数
//:匹配传来的参数,注意冒号后面的属性名自己起名
app.post("/user/:id", function (req, res) {// res.send()方法,可以把处理好的文本内容,发送给客户端res.send("乞力马扎罗请求成功")console.log(req.params)//也可以把拿到的返回//res.send(req.params)
})
//多个动态参数
app.get("/user/:name/:age", function (req, res) {// req.query默认是空对象// 当客户端使用?name=ls&age=24 这种查询字符串形式,发送到服务器的参数// 可以通过req.query对象访问到console.log(req.query)
})
  • 以不同方式请求
  • 请求:http://127.0.0.1/user/1
  • 终端返回{ id: ‘1’ }
  • 请求:http://127.0.0.1/user/2
  • 终端返回{ id: ‘2’ }
  • 多个动态参数请求
    在这里插入图片描述
托管静态资源

express.static(),通过这个,可以方便的创建一个静态资源服务器

  • 通过代码将public目录下的图片,css文件,js文件对外开放访问
  • Express在指定的静态目录中查找文件,并对外提供资源的访问路径,因此,存放静态文件的目录名不会出现在url中
  • 访问图片地址类似:http://localhost:3000/images/bg.jpg,(不包括指定的静态目录)
  • 本次在项目中新建imgs文件夹,存放wechat.png文件
// 导入express
const express = require('express')
// 创建web服务器
const app = express()
// 启动文本服务器
app.listen(80, () => {console.log("80服务器启动http://127.0.0.1/")
})
//托管静态资源,imgs是你存放文件的文件名
app.use(express.static('./imgs'))
//托管多个静态资源,public是你存放文件的文件名
app.use(express.static('./public'))
  • 启动服务器,访问路径为http://127.0.0.1/wechat.png,就可以看到了
  • 如果托管多个静态资源目录,请多次调用express.static()函数
  • 访问静态资源时,express.static()函数会根据目录的添加顺序查找所需的文件,类似上面imgs和public都有wechat.png文件,优先按顺序查找,会先找imgs中的

挂载路径前缀

  • 如果希望在托管的静态资源访问路径之前,挂载路径前缀,可以打开指定路径下的文件
  • 使得访问路径变成http://127.0.0.1/imgs/wechat.png
app.use('/imgs',express.static('./imgs'))

nodemon

为什么使用nodemon
  • 编写调试Node.js的时候,需要频繁手动重启服务器,非常繁琐
  • 使用nodemon(http://www.npmjs.com/package/nodemon)这个工具,监听项目文件的变动,当代码被修改的时候,自动帮我们重启项目
  • 终端安装 npm install -g nodemon
  • 将node变为nodemon,运行项目的时候采用,nodemon 文件名 运行,就会边修改边自动重启了

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

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

相关文章

Vue3 基础

Vue3 基础 概述 Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面&…

Java:Java与Python — 编码大战

Java和Python是目前市场上最热门的两种编程语言,因为它们具有通用性、高效性和自动化能力。两种语言都有各自的优点和缺点,但主要区别在于Java 是静态类型的,Python是动态类型的。它们有相似之处,因为它们都采用了“一切都是对象”…

单片机输入输出模式

单片机输入输出模式输入模式模拟输入、浮空输入、上拉输入、下拉输入GPIO输出模式推挽输出、开漏输出、复用推挽输出、复用开漏输出。上下拉电阻上拉电阻下拉电阻输入模式 模拟输入、浮空输入、上拉输入、下拉输入 模拟输入:I/O端口的模拟信号(电压信号…

日志收集笔记(架构设计、Log4j2项目初始化、Lombok)

1 架构设计 ELK 技术栈架构设计图: 从左往右看, Beats:主要是使用 Filebeat,用于收集日志,将收集后的日志数据发送给 Kafka,充当 Kafka 的生产者Kafka:高性能消息队列,主要起缓冲…

关于客户背景调查的两个案例,说下我的真实看法

这篇文章我只是想客观陈述下事实,并没有对他人的贬低与对自己的吹捧之意。只是想通过这样两件小事,传递出来一个观点:在外贸业务开发过程中,很多时候正是那些我们内心抗拒,不愿意沉下心去做的事,才给了我们…

C#与三菱PLC MC协议通信,Java与三菱PLC MC协议通信

三菱PLC的MC协议是一种常用的通信协议,用于实现三菱PLC与其他设备之间的通信。以下是一些关于MC协议的基本信息:协议格式MC协议的通信数据格式如下:数据头网络编号PC编号目标模块IO编号目标模块站号本机模块IO编号本机模块站号请求数据长度请…

嵌套走马灯Carousel

Carousel 的应用很广泛,基础用法这里不多做阐述,感兴趣的可以去element-gui了解Carousel 组件。 今天主要是梳理嵌套走马灯的逻辑,背景如下: 需要对项目做一个展示,项目可能有一个或多个,同时一个项目可能…

初探 qiling ( 麒麟 ):开源的二进制分析、高级代码模拟框架

官方介绍: 官网:https://qiling.io/:https://twitter.com/qiling_iogithub 地址:https://github.com/qilingframework/qiling 1、qiling 简介 qiling 是什么 qiling 基于 python 开发,是一个开源的、可模拟多种架构…

Web前端:全栈开发人员的责任

多年来,关于全栈开发人员有很多说法,全栈开发人员是一位精通应用程序全栈开发过程的专业人士。这包括数据库、API、前端技术、后端开发语言和控制系统版本。你一定遇到过前端和后端开发人员。前端开发人员将构建接口,而后端开发人员将开发、更…

狂神说:方法

何为方法方法是语句和集合,一起执行一个功能【实际上方法就是函数,说法不一样而已】定义方法加了static才能被main方法调用修饰符(public static) 返回类型 方法名(参数类型 参数名)// main方法public stat…

vscode SSH 保存密码自动登录服务器

先在win local上拿到秘钥,然后再把这秘钥copy 进服务器 1. 创建 RSA 密钥对 第一步是在客户端机器(通常是您的计算机 win 10)上创建密钥对:打开powershell, 输入 ssh-keygen默认情况下ssh-keygen将创建一个 2048 位 RSA 密钥对…

“双碳”目标下二氧化碳地质封存技术应用前景及模型构建实践方法与讨论

我国二氧化碳地质封存技术起步较晚,目前仍没有一套相对完整的行业规范;且就该技术而言,涉及环节众多,理论相对复杂,对于行业的新入局者不太友好。因此,结合时代背景,我们首次尝试对二氧化碳地质…

nodejs出现require is not defined和__dirname is not define 错误

参阅此, Cesium环境搭建成功和初步看一下它的示例_bcbobo21cn的博客-CSDN博客 运行Cesium入门示例,出现下图错误,根据资料,这是node版本的问题; 解决方法是,在server.js头部加入, import { cre…

Flink04: Flink核心API之DataStream

一、Flink 4种不同层次的API Flink中提供了4种不同层次的API,每种API在简洁和易表达之间有自己的权衡,适用于不同的场景。目前上面3个会用得比较多。 • 低级API(Stateful Stream Processing):提供了对时间和状态的细粒度控制&#x…

Endless lseek导致的SQL异常

最近碰到同事咨询的一个问题&#xff0c;在执行一个函数时&#xff0c;发现会一直卡在那里。 strace抓了下发现会话一直在执行lseek&#xff0c;大致情况如下&#xff1a; 16:13:55.451832 lseek(33, 0, SEEK_END) 1368064 <0.000037> 16:13:55.477216 lseek(33, 0, SE…

linux下安装mongoDB

一、下载mongoDB包 下载地址&#xff1a; https://www.mongodb.com/try/download/community 个人建议&#xff1a;如果是学习阶段&#xff0c;使用5以下版本更好些。 二、安装及配置 1、安装 # 1、解压 $ tar -zxvf mongodb-linux-x86_64-rhel70-4.4.19-rc1.tgz# 2、迁移目…

【音视频处理】为什么MP3不是无损音乐?音频参数详解,码率、采样率、音频帧、位深度、声道、编码格式的关系

大家好&#xff0c;欢迎来到停止重构的频道。上期我们讨论了视频的相关概念&#xff0c;本期我们讨论音频的相关概念。包括采样率、码率、单双声道、音频帧、编码格式等概念。这里先抛出一个关于无损音频的问题。为什么48KHz采样率的.mp3不是无损音乐 &#xff0c;而48KHz采样率…

高性能爬虫之单线程、多进程、多线程的使用,线程池、进程池、协程池的使用

目录一、单线程爬虫代码实现二、 多线程爬虫1、多线程的方法使用2、队列模块的使用3、多线程实现思路剖析4、代码实现**注意点&#xff1a;**三、多进程爬虫1、多进程程的方法使用2、多进程中队列的使用3 代码实现**小结**四、线程池实现爬虫1、线程池使用方法介绍2、使用线程池…

365天深度学习训练营-第J3周:DenseNet算法实战与解析

目录 一、前言 二、论文解读 1、DenseNet的优势 2、设计理念 3、网络结构 4、与其他算法进行对比 三、代码复现 1、使用Pytorch实现DenseNet 2、使用Tensorflow实现DenseNet网络 四、分析总结 一、前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习…

基于OSG的虚拟校园系统的设计与实现

基于open scene graph的虚拟校园系统的设计与实现 摘要 •引言 • OSG基本原理 •OSG操作与动画 •视点的定位和切换 •自由漫游 •路径漫游 • 路径动画 • 点选和文字 • 粒子系统 • 3DMAX • 无线通信与数据库设计 • 实现步骤 • 结论 摘要 随着科技的不断发展,人工智能&a…