Node.js —— Express中服务器的创建、托管静态资源、nodemon

目录

Express的安装

 创建基本的 Web 服务器

 监听GET请求

监听POST请求

把内容响应给客户端

​编辑获取 URL 中携带的查询参数

​编辑获取 URL 中的动态参数

​编辑托管静态资源

express.static()

托管多个静态资源目录

挂载路径前缀

nodemon:

 为什么要使用 nodemon

安装 nodemon 

使用 nodemon


Express的安装

在项目所处的目录中,运行如下的终端命令,即可将 express 安装到项目中使用:

npm i express

 创建基本的 Web 服务器

//导入express模块
const express = require ('express')
//创建web服务器
const app = express()
//调用app.listen(端口号,启动成功后的回调函数),启动服务器
app.listen(2386,()=>{console.log('服务器启动成功')
})

 监听GET请求

监听POST请求

把内容响应给客户端

const express = require('express')
const app = express()
app.get('/user', (req, res) => {res.send({ user: '迪幻' })
})
app.post('/user', (req, res) => {res.send('请求成功')
})
app.listen(2386, () => {console.log('express server running at 127.0.0.1:2386');
})

获取 URL 中携带的查询参数

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

const express = require('express')
const app = express()
app.get('/', (req, res) => {console.log(req.query)res.send(req.query)
})
app.listen(2386, () => {console.log('express server running at 127.0.0.1:2386');
})

获取 URL 中的动态参数

通过 req.params 对象,可以访问到 URL 中,通过 : 匹配到的动态参数:

const express = require('express')
const app = express()
app.get('/user/:id/:username', (req, res) => {console.log(req.params)res.send(req.params)
})
app.listen(2386, () => {console.log('express server running at 127.0.0.1:2386');
})

托管静态资源

express.static()

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

现在,你就可以访问 public 目录中的所有文件了:

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

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

托管多个静态资源目录

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

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

挂载路径前缀

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

现在,你就可以通过带有 /public 前缀地址来访问 public 目录中的文件了:

  • http://localhost:3000/public/images/kitten.jpg
  • http://localhost:3000/public/css/style.css
  • http://localhost:3000/public/js/app.js 

nodemon:

 为什么要使用 nodemon

在编写调试 Node.js 项目的时候,如果修改了项目的代码,则需要频繁的手动 close 掉,然后再重新启动,非常繁琐。 现在,我们可以使用 nodemon(https://www.npmjs.com/package/nodemon) 这个工具,它能够监听项目文件的变动,当代码被修改后,nodemon 会自动帮我们重启项目,极大方便了开发和调试。

安装 nodemon 

在终端中,运行如下命令,即可将 nodemon 安装为全局可用的工具:

使用 nodemon

当基于 Node.js 编写了一个网站应用的时候,传统的方式,是运行 node app.js 命令,来启动项目。这样做的坏处是:代码被修改之后,需要手动重启项目。 现在,我们可以将 node 命令替换为 nodemon 命令,使用 nodemon app.js 来启动项目。这样做的好处是:代码被修改之后,会被 nodemon 监听到,从而实现自动重启项目的效果。

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

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

相关文章

ubuntu22.04安装调节显示器亮度工具

1 介绍 软件名叫 DDC/CI control,官网 2 安装方法 sudo apt install intltool i2c-tools libxml2-dev libpci-dev libgtk2.0-dev liblzma-dev3 效果 进入软件,忽略告警信息

【算法】dd爱转转

✨题目链接: dd爱旋转 ✨题目描述 读入一个n∗n的矩阵,对于一个矩阵有以下两种操作 1:顺时针旋180 2:关于行镜像 如 变成 给出q个操作,输出操作完的矩阵 ✨输入描述: 第一行一个数n(1≤n≤1000),表示矩阵大小 接下来n行&#xff…

2022icpc亚洲区域赛(南京站)Problem D - 聊天程序

2022 i c p c 亚洲区域赛(南京站) P r o b l e m D − 聊天程序 \Huge{2022icpc亚洲区域赛(南京站)Problem D - 聊天程序} 2022icpc亚洲区域赛(南京站)ProblemD−聊天程序 文章目录 题意思路标程 题目链接&…

为什么使用数据库类型器件库

项目地址:https://github.com/boringhex-top/OpenECADLib Altium 数据库类型器件库(DbLib)具有显著的优势,特别是对于复杂设计和高效元件管理来说。这里详细介绍数据库类型器件库的优势以及相关背景知识,以帮助你更好…

Transformer详解(6)-解码器

Transformer解码器 import copy from torch import nn from norm import Norm from multi_head_attention import MultiHeadAttention from feed_forward import FeedForward from pos_encoder import PositionalEncoderdef get_clones(module, N):"""Create N…

汇编:循环结构

16位汇编语言中的循环结构主要通过条件跳转指令(如LOOP、JMP, JE, JNE, JG, JL, 等)来实现,常见的循环类型包括for循环和while循环; Loop指令 LOOP指令的操作非常简单:它将CX寄存器的值减1,如果结果不为零…

【C++】list的使用方法和模拟实现

❤️欢迎来到我的博客❤️ 前言 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后…

AI日报:百度发布文心大模型学习机;Open-Sora 1.1可生成21秒视频;Canva可以自动剪辑视频了;超牛ComfyUI节点AnyNode来了

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:AIbase - 智能匹配最适合您的AI产品和网站 1、百度文心…

网络、HTTP、HTTPS、Session、Cookie、UDP、TCP

OSI 七层模型 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP 五层模型 应用层:为用户的应用进程提供网络通信服务(协议:域名系统DNS协议,HTTP协议,SMTP协议)传输层:负…

leetcode 530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先

leetcode 530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先 leetcode 530.二叉搜索树的最小绝对差 题目链接:https://leetcode.cn/problems/maximum-binary-tree/description/ 题目: 给你一个二叉搜索树的根节点 r…

【MATLAB源码-第214期】基于matlab的遗传算法GA最短路径路由优化算法仿真。

操作环境: MATLAB 2022a 1、算法描述 在现代网络通信和路径规划领域,最短路径路由优化算法是一项关键技术。它涉及在给定的网络拓扑中寻找从源点到目标点的最短或成本最低的路径。近年来,遗传算法(GA)因其出色的全局…

跟进2年弄丢1.8亿,你的大客管理错在哪里?

数量并非目的之所在,质量才是根本之道。重视1%的超级用户,才是提高效率的关键所在。 ——凯文凯利 在当今的商业环境中,大客户已成为销售服务型企业最宝贵的资产。他们不仅贡献了企业收入的重要一环,…

Vue 项目中使用 Element UI库(Element UI 是一套基于 Vue.js 的桌面端组件库)

1. 安装 Element UI npm install element-plusnext 2.引入 Element UI(在main.js中引入组件,注意要引入.css文件,图标也要单独引用) import { createApp } from vueimport ElementPlus from element-plusimport element-plus/dist/index.css…

pinia持久化未生效

pinia官方文档 https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/ pinia持久化未生效的原因很有可能就是在main.js中重复创建了pinia,导致持久化未生效

sql注入利用group_concat函数

1.group_concat函数的作用: 首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。 2.group_concat运用 这里我使用的是sqllab-less1,通过对数据库的查询,我们发现数据库表名,列名&a…

qmt量化交易策略小白学习笔记第1期【qmt如何获取股票概况?】

#获取股票概况 包含股票的上市时间、退市时间、代码、名称、是否是ST等。 #获取合约基础信息数据 该信息每交易日9点更新 调用方法 大蟒 from xtquant import xtdata xtdata.get_instrument_detail(stock_code) 参数 名称 类型 描述 stock_code string 合约代码 返…

手写电纸书天花板,阅读办公新体验 | 汉王手写电纸本 N10 2024 版使用评测

手写电纸书天花板,阅读办公新体验 | 汉王手写电纸本 N10 2024 版使用评测 请问如果说到电纸书,你的认知还只是Kindle吗?然而遗憾的是,Kindle亦是过去,智能才是未来。 哈喽小伙伴们好,我是Stark-C~&#x…

Mysql基础学习:mysql8 JSON字段查询操作

文章目录 一、查询JSON中某个属性值为XXX的数据量1、方式一2、方式二 二、查询的JSON中的value并去除双引号 一、查询JSON中某个属性值为XXX的数据量 1、方式一 select count(*)from table_namewhere JSON_CONTAINS(json-> $.filed1, "xxx")or JSON_CONTAINS(jso…

蓝桥杯嵌入式国赛笔记(4):多路AD采集

1、前言 蓝桥杯的国赛会遇到多路AD采集的情况,这时候之前的单路采集的方式就不可用了,下面介绍两种多路采集的方式。 以第13届国赛为例 2、方法一(配置通道) 2.1 使用CubeMx配置 设置IN13与IN17为Single-ended 在Parameter S…

Python—面向对象小解(2)

一、面向对象开发的基本使用 根据需求定义类 关键字class 属性 变量 方法 函数 默认函数中必须有个self参数 self(自己)代表当前对象 如何将一项物品放入一个空间内? # 类的定义创建 class itcast:# 指定属性name 大象container 冰箱# 指定数据的处理方法def open_c…