初识 Express

news2024/11/20 9:18:22

 

目录

1. Express 简介

1.1. 什么是 Express

1.1.1. 概念

1.1.2. 通俗理解

1.1.3. Express 的本质

1.2. 进一步理解 Express

1.2.1. 问题引入1——不使用 Express 能否创建 Web 服务器?

1.2.2. 问题引入2——有了 http 内置模块,为什么还要用 Express?

1.2.3. 问题引入3——http 内置模块与 Express 是什么关系?

1.3. Express 能做什么

2. Express 基本使用

2.1. 安装

2.2. 创建基本的 Web 服务器

2.3. 监听 GET 请求

2.4. 监听 POST 请求

2.5. 把内容响应给客户端

2.6. 获取 URL 中携带的查询参数

2.7. 获取 URL 中的动态参数

3. 托管静态资源

3.1. express.static()

3.2. express.static()注意点

3.3. 托管多个静态资源目录

4. 挂载路径前缀

4. nodemon 

4.1. 为什么要使用 nodemon

4.2. 安装 nodemon

4.3. 使用 nodemon


1. Express 简介

1.1. 什么是 Express

1.1.1. 概念
  • Express 是基于 Node.js 平台,快速、开放、极简 的 Web 开发框架
1.1.2. 通俗理解

和 Node.js 内置的 http 模块类似

  • Express 的作用是专门用来创建 Web 服务器的
1.1.3. Express 的本质
  • Express就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法

1.2. 进一步理解 Express

1.2.1. 问题引入1——不使用 Express 能否创建 Web 服务器?
  • 能,使用 Node.js 提供的原生 http 模块即可
1.2.2. 问题引入2——有了 http 内置模块,为什么还要用 Express?
  • http 内置模块用起来很复杂,开发效率低
  • Express 是基于内置的 http 模块进一步封装出来的,能够极大的提高开发效率
1.2.3. 问题引入3——http 内置模块与 Express 是什么关系?

类似于浏览器中 Web API 和 jQuery 的关系

  • 后者是基于前者进一步封装出来的

1.3. Express 能做什么

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

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

  • 使用 Express,能方便、快速的创建 Web 网站 的服务器或 API 接口 的服务器

2. Express 基本使用

2.1. 安装

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

2.2. 创建基本的 Web 服务器

2.3. 监听 GET 请求

  • 通过 app.get() 方法,可以监听客户端的 GET 请求
  • 具体的语法格式如下:

2.4. 监听 POST 请求

  • 通过 app.post() 方法,可以监听客户端的 POST 请求
  • 具体的语法格式如下:

2.5. 把内容响应给客户端

  • 通过 res.send() 方法,可以把处理好的内容,发送给客户端

2.6. 获取 URL 中携带的查询参数

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

2.7. 获取 URL 中的动态参数

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

3. 托管静态资源

3.1. express.static()

  • express 提供了一个函数——express.static(),它能非常方便地创建一个静态资源服务器

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

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

3.2. express.static()注意点

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

3.3. 托管多个静态资源目录

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

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

4. 挂载路径前缀

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

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

4. nodemon 

4.1. 为什么要使用 nodemon

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

4.2. 安装 nodemon

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

4.3. 使用 nodemon

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

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

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

相关文章

【算法刷题 | 贪心算法03】4.25(最大子数组和、买卖股票的最佳时机|| )

文章目录 4.最大子数组和4.1题目4.2解法一:暴力4.2.1暴力思路4.2.2代码实现 4.3解法二:贪心4.3.1贪心思路4.3.2代码实现 5.买卖股票的最佳时机||5.1题目5.2解法:贪心5.2.1贪心思路5.2.2代码实现 4.最大子数组和 4.1题目 给你一个整数数组 n…

【JavaScript】内置对象 ③ ( Math 内置对象 | Math 内置对象简介 | Math 内置对象的使用 )

文章目录 一、Math 内置对象1、Math 内置对象简介2、Math 内置对象的使用 二、代码示例1、代码示例 - Math 内置对象的使用2、代码示例 - 封装 Math 内置对象 一、Math 内置对象 1、Math 内置对象简介 JavaScript 中的 Math 内置对象 是一个 全局对象 , 该对象 提供了 常用的 数…

openEuler-22.03下载、安装

一、下载 下载地址:openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网 下载版本:openEuler-22.03-LTS-x86_64-dvd.iso 二、安装 配置完后开启虚拟机 设置完后,重启虚拟机 设置桥接模式的网络 cd /etc/sysconfig/network-scripts/ vi if…

Apple公司面试题之Apple-Orange

1. 引言 你幻想过在Apple公司工作吗? 如果心动过,那这个逻辑推理面试题就是给你准备的!这是一道有趣的面试题,如下所示: 看到这里的同学,我建议你暂停文章,拿起笔和纸,试一试。准…

图像在神经网络中的预处理与后处理的原理和作用(最详细版本)

1. 问题引出及内容介绍 相信大家在学习与图像任务相关的神经网络时,经常会见到这样一个预处理方式。 self.to_tensor_norm transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) 具体原理及作用稍后解释&…

用html写一个旋转菜单

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>旋转菜单</title><link relstylesheet href"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css"&…

重发布的原理及其应用

重发布的作用&#xff1a; 在一个网络中&#xff0c;若运行多种路由协议或者相同协议的不同进程&#xff1b;因为协议之间不能直接沟通计算&#xff0c;进程之间也是独立进行转发和运算的&#xff0c;所以&#xff0c;需要使用重发布来实现路由的共享。 条件 &#xff1a; 1&am…

保护数据安全:加密算法知多少,几种常见的加密算法及其应用

在当今数字化时代&#xff0c;数据安全是一个非常重要且不可忽视的问题。为了保护敏感数据不被恶意窃取或篡改&#xff0c;加密算法诞生了。加密算法通过对原始数据转换和处理成不可读取的内容&#xff0c;防止未经授权的人读取和理解&#xff0c;从而确保数据的安全性、机密性…

熟悉mybatis操作全过程(详细操作)

目录 操作前准备 创建实体类 Brand 准备测试用例 安装mybatisx插件 查询 查询所有数据 结果映射 实现查看详情逻辑功能 条件查询 多条件动态条件查询 单条件动态查询 添加 基本添加功能 主键返回 修改数据 修改全部字段 修改动态字段 删除数据 删除一个…

GRASSHOPPER电池Expression

Grasshopper中如果要实现简单的条件if语句的效果&#xff0c;可以使用电池Expression。 举例&#xff1a;获取两个数的差值&#xff0c;永远用大数减去小数

js网络请求---fetch和XMLHttpRequest的用法

fetch 语法规则 let promise fetch(url, [options]) //url —— 字符串&#xff1a;要访问的 URL。 //options —— 对象&#xff1a;可选参数&#xff1a;method&#xff0c;header 等。 fetch函数返回一个promise&#xff0c;若存在网络问题&#xff0c;或网址不存在&…

【linux】基础IO(软硬链接)

上一节我们已经搞懂了已经被打开的文件&#xff0c;还有没有被打开的文件都是怎样被管理起来的&#xff0c;同样&#xff0c;路径的重要性也不言而喻&#xff0c;是确定文件在那个分区&#xff0c;进而可以解析到目标文件与目录内容的关系&#xff0c;从而找到inode&#xff0c…

MATLAB线性函数拟合并预测

线性函数拟合&#xff0c;由线性函数很好描述的一个数集,也就是说如果我们所考虑的数据是以y(x)的形式给出&#xff0c;并且其中f(x)满足: 要求得 m 和b的值&#xff0c;我们可以使用一个称为 polyii(x,y,n)的 MATLAB 函数&#xff0c;其中n是我们要 MATLAB 求出的多项式的次数…

ubuntu18.04系统编译openwrt21.02.3

搭建ubuntu18.04环境 使用虚拟机安装ubuntu环境网上教程很多&#xff0c;这里不做赘述&#xff0c;主要是安装一些我们在编译openwrt时可能会用到的一些工具环境 sudo apt-get update sudo apt instll libncurses-dev gawk sudo apt-get install build-essential libncurses5…

InternLM2-lesson5

目录 大模型部署挑战常用大模型部署方式模型剪枝(Pruning)知识蒸馏量化 LMDeploy核心功能性能表现支持部署的模型 作业配置 LMDeploy 运行环境以命令行方式与 InternLM2-Chat-1.8B 模型对话 大模型部署 大模型部署就是将大模型在特定的环境种运行&#xff01;可以部署到服务器…

The Clock and the Pizza [NeurIPS 2023 oral]

本篇文章发表于NeurIPS 2023 (oral)&#xff0c;作者来自于MIT。 文章链接&#xff1a;https://arxiv.org/abs/2306.17844 一、概述 目前&#xff0c;多模态大语言模型的出现为人工智能带来新一轮发展&#xff0c;相关理论也逐渐从纸面走向现实&#xff0c;影响着人们日常生活…

VPP 源码学习总结

当我们在VPP/plugins目录下注册了自己的node后&#xff0c; 肯定有一个node.func(), 那这个函数是如何执行到的呢&#xff1a; 1. 首先我们要看一下这个插件注册的时候做了什么&#xff0c; 假设node 如下&#xff1a; 编译成功后&#xff0c; 我们可以从函数vlib_plugin_earl…

ubuntu20.04开机运行java的sh脚本

用到了 rc.local 1、修改 /usr/lib/systemd/system/rc-local.service 在最下面添加 [Install] WantedBymulti-user.target 2、 系统没有 rc.local&#xff0c;需要手动创建 cd /etc vi rc.local在里面写入 /opt/start.sh chmod x /etc/rc.local # 添加可执行权限 chmod x…

三分钟设计自己的工厂!基于昇腾AI处理器昇思MindSpore打造的智能化工大模型为化工研发效率带来10+倍提升

前言&#xff1a;华为与大连化物所深度合作&#xff0c;联合推出智能化工大模型&#xff0c;AI赋能化工领域&#xff0c;拥抱科学创新&#xff0c;提供了数据驱动化工研发的新范式。 2024年3月22日&#xff0c;在北京国家会议中心召开的昇思人工智能框架峰会上发布了由华为AI4…

mysql的约束和表关系

根据查询的结果&#xff0c;复制出一个新表 create table newTable AS select * from oldTable; create table newPeople AS select * from day2_test.people; 约束 引入&#xff1a;如果某一列如id列&#xff0c;有重复的数据&#xff0c;无法准确定位&#xff0c;有的列有空…