Express教程【001】:Express创建基本的Web服务器

article/2025/8/3 19:50:21

文章目录

  • 1、初识express
    • 1.1 什么是Express
    • 1.2 主要特点
    • 1.3 Express的基本使用
      • 1.3.1 安装
      • 1.3.2 创建基本的Web服务器

1、初识express

目标:

  • 能够使用express.static()快速托管静态资源
  • 能够使用express路由精简项目结构
  • 能够使用常见的express中间件
  • 能够使用express创建API接口
  • 能够在express中启用cors跨域资源共享

1.1 什么是Express

Express是基于Node.js平台,快速、开放、极简的Web开发框架

通俗理解:Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的

本质:就是npm的第三方包,提供了快速创建web服务器的便捷方法。

中文网地址:https://www.expressjs.com.cn/

image-20250530152343180

1.2 主要特点

Express 是一个基于 Node.js 的 web 应用框架,用于构建快速、灵活的 web 应用和 API。它简化了 HTTP 服务的构建,提供了一些方便的功能,如路由管理、请求和响应处理、模板渲染等。Express 是非常轻量的,灵活的,可以与多种中间件结合使用,适用于不同规模的项目。

主要特点:

  1. 简洁的路由系统
    Express 提供了一个简单而强大的路由系统,可以帮助开发者轻松地定义 URL 路径、HTTP 方法(GET, POST, PUT, DELETE)和相应的处理函数。
  2. 中间件支持
    中间件是 Express 的核心特性之一,它允许开发者在请求处理过程中插入各种功能(如身份验证、日志记录、文件上传等)。通过中间件,你可以灵活地修改请求和响应对象。
  3. 模板引擎支持
    Express 可以与各种模板引擎(如 EJS, Pug, Handlebars 等)一起使用,便于动态渲染 HTML 页面。
  4. 路由参数和查询字符串
    Express 允许你轻松地提取路由中的参数和查询字符串,从而构建更加动态的 URL。
  5. 支持静态文件
    Express 能够直接提供静态文件的服务,比如图片、CSS、JavaScript 文件等。
  6. 扩展性和模块化
    Express 本身非常轻量,你可以根据需要扩展更多功能,通过安装各种 npm 模块,像数据库连接、身份验证、API 请求等,都可以通过第三方中间件轻松实现。

1.3 Express的基本使用

1.3.1 安装

1️⃣创建一个空文件夹express-basic,使用cmd打开该路径,运行如下命令进行安装:

npm i express@4.17.1

注意⚠️:这里的安装版本是4.17.1

1.3.2 创建基本的Web服务器

1️⃣新建01-使用express创建基本的服务器.js文件:

// 1、导入express
const express = require('express');
// 2、创建web服务器
const app = express();
// 3、启动web服务器
app.listen(80, ()=>{console.log('express server listening on http://127.0.0.1:80');
})

2️⃣启动:

node 01-使用express创建基本的服务器.js

启动成功:

image-20250530153415481


http://www.hkcw.cn/article/wOffabhgLb.shtml

相关文章

CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)

在 CentOS 7 环境中部署 LNMP(Linux Nginx MySQL 5.7 PHP) 环境的详细步骤如下。此方案确保各组件版本兼容,并提供完整的配置验证流程。 1. 更新系统 sudo yum update -y 2. 安装 MySQL 5.7 2.1 添加 MySQL 官方 YUM 仓库 由于MySQL并不…

从零打造算法题刷题助手:Agent搭建保姆级攻略

我用Trae 做了一个有意思的Agent 「大厂机试助手」。 点击 https://s.trae.com.cn/a/d2a596 立即复刻,一起来玩吧! Agent 简介 Agent名称为大厂机试助手,主要功能有以下三点。 解题: 根据用户给出的题目给出具体的解题思路引导做…

华院计算出席信创论坛,分享AI教育创新实践并与燧原科技共同推出教育一体机

5月21日,信创论坛于上海漕河泾会议中心举办。本次论坛以“聚力融合,繁荣生态”为主题,话题聚焦工业制造、交通运输、金融、教育、医疗等领域。华院计算技术(上海)股份有限公司(以下简称“华院计算”&#x…

MyBatis操作数据库

1.MyBatis:MyBatis是一款优秀的持久层框架,用于简化JDBC的开发.(持久层通常指数据访问层,用来操作数据库). 创建userInfo表,并插入如下数据: 在model中建立userinfo实体类,属性与之一一对应. 配置数据库连接字符串,Mybatis中要连接数据库,需要数据库相关参数配置. 接下来就可…

OCC笔记:BRepMesh_IncrementalMesh的使用

1. 函数接口 2. 线性偏转与角度偏转 2.1. theLineDeflection:线性偏转 根据文档推导下 isRelative传入Standard_True时,theLineDeflection为相对值。 参看isRelative说明 //! param isRelative if TRUE deflection used for discretization of //! ea…

调试技巧总结

目录 一.调试1.什么是调试2.调试语义的分类2.1 静态语义2.2 动态语义 二.实用的调试技巧1.屏蔽代码2.借助打印3.查看汇编代码4.调试技巧总结 一.调试 1.什么是调试 调试,通俗易懂地说就是不断排查代码的错误,进行修正的过程,在写代码的时候…

通过实时动作捕捉加速人形机器人训练

通过实时动作捕捉加速人形机器人训练 用于训练、控制和性能优化的精确实时运动学——受到全球机器人创新者的信赖! 为什么选择 Xsens 进行人形机器人训练? 无与伦比的运动数据精度-经过科学验证的运动数据,用于简化AI/ML训练。 轻松集成到…

【UE5 C++】绘制地表贴合线

目录 原理 效果 步骤 源码 原理 先设置绘制线段的起点和终点,然后我们将起点和终点的高度升高,然后通过插值,在起点和终点之间添加多个点,再由这些点向地心发出射线,这样我们就可以获取到这些点在地表的投影点&…

01 redis 的环境搭建

前言 这一系列文章主要包含的内容主要是 各种常用软件的调试环境的搭建 主要的目的是 搭建一个可打断点的一个调试环境 c 系列 主要是基于 clion 调试, java 系列主要是基于 idea 调试, js 系列主要是基于 webstorm 调试 需要有一定的 c, c, java, js 相关基础 基于的…

python打卡训练营打卡记录day40

知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作业:仔细学习下测试和训练代码…

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(五):语音合成输出与交互增强

Tailwind CSS 实战,基于Kooboo构建AI对话框页面(一) Tailwind CSS 实战,基于Kooboo构建AI对话框页面(二):实现交互功能 Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面&#x…

【MySQL】MVCC与Read View

目录 一、数据库并发的三种场景 二、读写场景的MVCC (一)表中的三个隐藏字段 (二)undo 日志 (三)模拟MVCC (四)Read View (五)当前读和快照读 三、RC和…

代码随想录打卡|Day53 图论(Floyd 算法精讲 、A * 算法精讲 (A star算法)、最短路算法总结篇、图论总结 )

图论part11 Floyd 算法精讲 代码随想录链接 题目链接 代码 三维DP数组 import java.util.Scanner;public class Main {// 定义最大距离值,避免使用Integer.MAX_VALUE防止加法溢出public static final int INF 100000000; // 10^8足够大且不会溢出public static…

CSS Day07

1.搭建项目目录 2.网页头部SEO三大标签 3.Favicon图标与版心 (1)Favicon图标 (2)版心 4.快捷导航 5.头部-布局 6.头部-logo 7.头部-导航 8.头部-搜索 9头部-购物车 10.底部-布局 11.底部-服务区域 12.底部-帮助中心 13.底部-版权…

leetcode hot100刷题日记——29.合并两个有序链表

解答: 方法一:递归 递归的边界条件是啥呢? 递归别想那么多具体步骤,考虑大步骤,小的递归自己会去做的 class Solution { public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {//递归比较大小//先考虑…

Spring Boot 整合 Spring Security

DAY30.1 Java核心基础 Spring Boot 整合安全框架 Spring Security 、Shiro Spring Security Spring Security 的核心功能包括认证、授权、攻击防护,通过大量的过滤器和拦截器进行请求的拦截和验证,实现安全校验的功能。 Spring Security 将校验逻辑…

深度剖析Node.js的原理及事件方式

早些年就接触过Node.js,当时对于这个连接前后端框架就感到很特别。尤其是以独特的异步阻塞特性,重塑了了服务器端编程的范式。后来陆陆续续做了不少项目,通过实践对它或多或少增强了不少理解。今天,我试着将从将从原理层剖析其运行…

智慧景区一体化建设方案

随着2023年文旅部《关于推动智慧旅游发展的指导意见》出台,全国景区掀起数字化转型浪潮。如何在激烈竞争中脱颖而出?智慧景区一体化建设方案,正以“一机游遍景区、一屏掌控全局”的革新模式,重新定义旅游体验与管理效率。本文深度…

使用 SymPy 操作三维向量的反对称矩阵

在三维空间中,一个 3 1 3 \times 1 31 向量可以转换为一个 3 3 3 \times 3 33 的反对称矩阵。这种转换在物理学、机器人学和计算机视觉等领域非常有用。本文将详细介绍如何在 Python 的 SymPy 库中定义和使用这种反对称矩阵。 数学背景 对于一个三维向量 v …

LangChain表达式(LCEL)实操案例1

案例1:写一篇短文,然后对这篇短文进行打分 from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables import RunnableWithMessageHist…