当前位置: 首页 > article >正文

day24Node-node的Web框架Express

1. Express 基础

1.1 什么是Express 

node的web框架有Express 和 Koa。常用Express 。

Express 是一个基于 Node.js 的快速、极简的 Web 应用框架,用于构建 服务器端应用(如网站后端、RESTful API 等)。它是 Node.js 生态中最流行的框架之一,以轻量、灵活和易用著称。 

npm install express --save
或者
yarn add express -S

Koa 是由 Express 背后的团队设计的一个新的 Web 框架,旨在成为 Web 应用和 API 的更小、更具表现力和更强大的基础。 通过利用异步函数,Koa 允许你放弃回调并大大提高错误处理能力。 Koa 的核心中没有捆绑任何中间件,它提供了一套优雅的方法,使编写服务器变得快速而愉快。 

1.2 Express特色和项目创建

1.2.1 Express特色

  • Web 应用:Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
  • API:丰富的 HTTP 快捷方法和任意排列组合的 Connect 中间件,让你创建健壮、友好的 API 变得既快速又简单。
  • 性能:Express 不对 Node.js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能。

1.2.2 项目创建

服务端

1.在项目文件下创建一个新文件exprss1,在该文件下执行npm init -y 初始化。

2. 编写package.json文件。执行npm i 下载依赖

{"name": "express1","version": "1.0.0","description": "","main": "index.js","scripts": {"start": "PORT=4000 nodemon"},"keywords": [],"author": "","license": "ISC","dependencies": {"express":"^4.21.0"},"devDependencies": {"nodemon":"^3.1.4"}
}

3. 新建一个入口文件index.js 。在执行npm start 开启项目

4. 编写入口文件index.js。

const express=require("express");
const app=express();...
app.listen(process.env.PORT);简单的服务已经搭建成功

5. 下面的内容在该项目中进行讲解。 

1.3 express的通信应用

const express=require("express");
const app=express();

 1.3.1 app.get

app.get:主要用于前后端get通信方式处理。

var express=require("express");
var app=express();app.get("/a",function(req,res){res.send("hello")
})
app.listen(4001);

案例1:编写 express1文件下的index.js 

使用浏览器直接访问服务端 

 

1.3.2 解决express的通信的跨域问题

客户端

1. 在项目文件下新建一个clint客户端文件。

2. 在clint客户端文件打开集成终端中执行 npm i axios

3. 在clint客户端文件新建一个index.html

4. 在index.html文件中引入axios,并编写index.html。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head>
<body><script type="module">1. 引入axiosimport axios from "./node_modules/axios/dist/esm/axios.js"2.访问服务器/a路劲,携带参数a=1,b=2axios.get("http://localhost:4000/a?a=1&b=2").then((res)=>{console.log(res);})</script>
</body>
</html>

服务端

 express1文件下的index.js 保持不变。

客户端直接访问服务端 涉及跨域问题会报错

解决方法在服务端express1的package.json文件中编写添加cors跨域依赖。执行npm i 下载依赖。再次执行npm start开启项目。

修改express1的package.json文件:

{"name": "express1","version": "1.0.0","description": "","main": "index.js","scripts": {"start": "PORT=4000 nodemon"},"keywords": [],"author": "","license": "ISC","dependencies": {"express":"^4.21.0",添加依赖"cors":"^2.8.5"},"devDependencies": {"nodemon":"^3.1.4"}
}

修改服务端express1文件下的index.js ,引入cors模块。再次使用客户端访问服务端。

const express=require("express");
const app=express();
const cors=require("cors");一次性解决所有跨域,允许所有域名
app.use(cors());app.get("/a",function(req,res){服务端解析客户端url的方法1:console.log(req.url); // a?a=1&b=2服务端解析客户端url的方法2express 自动解析了客户端url带来的search部分参数console.log(req.query); // {a:1,b:2}服务端解析客户端url的方法3:路径,不带参数console.log(req.path); // /a服务端向客户端发送数据的方法:express 有send方法可以发送任何类型的数据,都会自动转换//res.send("aaa");res.send({a:1,b:2})})app.listen(process.env.PORT);

服务端解析客户端的url: 

服务端向客户端发送数据:

 1.3.3 app.post

app.post: 主要用于前后端post通信方式处理。

var express=require("express");
var app=express();app.post("/a",function(req,res){res.send("hello")
})

相关文章:

day24Node-node的Web框架Express

1. Express 基础 1.1 什么是Express node的web框架有Express 和 Koa。常用Express 。 Express 是一个基于 Node.js 的快速、极简的 Web 应用框架,用于构建 服务器端应用(如网站后端、RESTful API 等)。它是 Node.js 生态中最流行的框架之一,以轻量、灵活和易用著称。 …...

Webpack和Vite构建工具有什么区别?各自的优缺点是什么

Webpack 和 Vite 是两种主流的前端构建工具,分别代表了不同的设计理念和技术路线。以下是它们的核心区别和优缺点对比: 一、核心区别 维度WebpackVite设计理念基于打包(Bundle-Based)基于原生 ESM(Native ESM)开发模式全量打包后启动按需编译 + 浏览器直接加载 ESM构建工…...

让MySQL更快:EXPLAIN语句详尽解析

前言 在数据库性能调优中&#xff0c;SQL 查询的执行效率是影响系统整体性能的关键因素之一。MySQL 提供了强大的工具——EXPLAIN 语句&#xff0c;帮助开发者和数据库管理员深入分析查询的执行计划&#xff0c;从而发现潜在的性能瓶颈并进行针对性优化。 EXPLAIN 语句能够模…...

基于谷歌浏览器的Web Crypto API生成一对2048位的RSA密钥(公钥+私钥),并以JSON格式(JWK)打印到浏览器控制台

用Google Chrome 浏览器的Web Crypto API生成RSA密钥对&#xff1a;在浏览器环境中生成一对2048位的RSA密钥(公钥私钥)&#xff0c;然后以JSON格式(JWK)将它们打印到控制台&#xff0c;方便开发者查看和使用。 // 控制台生成密钥对 (async () > {// 调用Web Crypto API生成…...

[CSS3]rem移动适配

前言 什么是移动端适配? 让页面的元素在屏幕尺寸变化时, 同比放大或缩小 移动适配的方案 rem&#xff1a;目前多数企业在用的解决方案 vw/vh&#xff1a;未来的解决方案 rem 体验rem适配 目标: 能够使用rem单位设置网页元素的尺寸 网页效果: 屏幕宽度不同&#xff0c;网…...

向量数据库及ChromaDB的使用

什么是向量数据库&#xff1f; 向量数据库&#xff08;Vector Database&#xff09;&#xff0c;也叫矢量数据库&#xff0c;主要用来存储和处理向量数据。 在数学中&#xff0c;向量是有大小和方向的量&#xff0c;可以使用带箭头的线段表示&#xff0c;箭头指向即为向量的方…...

CodeBuddy实现pdf批量加密

本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 前言 在信息爆炸的时代&#xff0c;PDF 格式因其跨平台性和格式稳定性&#xff0c;成为办公、学术、商业等领域传递信息的重要载体。从机密合同到个人隐私文档&#xff0c…...

编程中优秀大模型推荐:特点与应用场景深度分析

编程中优秀大模型推荐&#xff1a;特点与应用场景深度分析 编程中优秀大模型推荐&#xff1a;特点与应用场景深度分析GPT系列模型模型概述技术特点编程应用场景 DeepSeek系列模型模型概述技术特点编程应用场景 Claude系列模型模型概述技术特点编程应用场景 Llama系列模型模型概…...

orm详解--查询执行

深入解析 Django ORM 查询执行阶段 的核心机制&#xff0c;包括查询集的惰性特性、表达式树构建、SQL 编译过程及优化原理。以下是详细分析&#xff1a; 一、查询集&#xff08;QuerySet&#xff09;的惰性执行机制 1. 惰性特性的底层实现 核心类&#xff1a;django.db.mode…...

运行打印Hello World启动了多少线程?

序言 看网上说阿里二面问到了一个看似最简单且没有标准答案的一个问题&#xff0c;所有学习编程都是从打印hello World开始的&#xff0c;那运行打印启动了多少个线程&#xff1f; 启动了多少线程&#xff1f; 在运行一个简单的 “Hello World” 程序时&#xff0c;启动的线…...

C++项目中调用C#DLL的的方式

C项目中调用C&#xff03;DLL的的方式 方法一&#xff1a;使用COM技术方法二&#xff1a;使用C/CLI方法三&#xff1a;使用P/Invoke&#xff08;适用于C#导出非托管接口&#xff09; 在C中调用C#编写的DLL&#xff0c;通常需要借助COM&#xff08;Component Object Model&#…...

咳嗽止咳药笔记250526 , 磷酸苯丙哌林 , 喷托维林 , 右美沙芬

咳嗽止咳药笔记250526 止咳药的种类较多&#xff0c;根据作用机制可分为中枢性止咳药、外周性止咳药、祛痰药、抗组胺药及中成药等。以下是具体分类及效果分析&#xff1a; 一、中枢性止咳药 可待因 效果&#xff1a;直接抑制延髓咳嗽中枢&#xff0c;镇咳作用强且迅速&#x…...

vue pinia 独立维护,仓库统一导出

它允许您跨组件/页面共享状态 持久化 安装依赖pnpm i pinia-plugin-persistedstate 将插件添加到 pinia 实例上 pinia独立维护 统一导出 import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstateconst pinia creat…...

网络的协议和标准

网络的协议和标准 OSI参考模型 应用层 报文 网关 表示层 报文 会话层 报文 传输层 报文 网络层 数据包 路由器 数据链路层 帧 网桥交换机 物理层 位 中继器 集线器 TCP/IP协议簇 逻辑地址&#xff1a;每台设备都有一个ip地址 一个ip地址包包含网络号 子网络号 主机号可…...

十六进制字符转十进制算法

十六进制与十进制对照 十六进制十进制00112233445566778899A10B11C12D13E14F15 十六进制与十进制区别 十六进制是满16进1&#xff0c;十进制是满10进1&#xff0c;这里要注意下区别&#xff0c;16进制的字符里面为什么是0-9没有10&#xff0c;这里面进了一位&#xff0c;表示…...

跟Gemini学做PPT:汇报背景图寻找指南

PPT 汇报背景图寻找指南 既然前端功能已经完善&#xff0c;现在可以专注于汇报了。对于 PPT 背景图&#xff0c;你有几个选择&#xff1a; 1. 内置模板和主题&#xff1a; 优点&#xff1a; 最简单、快速&#xff0c;PowerPoint、Keynote、Google Slides 等演示软件都内置了…...

java交易所,多语言,外汇,黄金,区块链,dapp类型的,支持授权,划转,挖矿(源码下载)

目前这套主要是运营交易所类型的&#xff0c;授权的会贵点&#xff0c;编译后的是可以直接跑的&#xff0c;图片也修复了&#xff0c;后门也扫了 都是在跑的项目支持测&#xff0c;全开源 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/90887047 更多…...

(已开源-CVPR2024) RadarDistill---NuScenes数据集Radar检测第一名

本文介绍一篇Radar 3D目标检测模型&#xff1a;RadarDistill。雷达数据固有的噪声和稀疏性给3D目标检测带来了巨大挑战。在本文中&#xff0c;作者提出了一种新的知识蒸馏(KD)方法RadarDistill&#xff0c;它可以通过利用激光雷达数据来提高雷达数据的表征。RadarDistill利用三…...

【MySQL】 数据库基础数据类型

一、数据库简介 1.什么是数据库 数据库&#xff08;Database&#xff09;是一种用于存储、管理和检索数据的系统化集合。它允许用户以结构化的方式存储大量数据&#xff0c;并通过高效的方式访问和操作这些数据。数据库通常由数据库管理系统&#xff08;DBMS&#xff09;管理&…...

中小企业AI算力如何选?【显卡租赁】VS【自建服务器】

对于中小企业而言和科研单位来讲&#xff0c;AI算力的选择需综合考虑成本、灵活性、数据安全和技术迭代风险等因素。以下是显卡租赁与自建服务器的对比分析&#xff0c;帮助中小企业做出最优决策&#xff1a; 1. 成本对比 自建服务器 高昂的前期投入&#xff1a;搭建一个中等规…...

OpenHarmony 4.1版本应用升级到5.0版本问题记录及解决方案

目录 1. ERROR: ArkTS:ERROR File: E:/Hap/applications_contacts-OpenHarmony-5.0.0-Release/entry/src/main/ets/Application/MyAbilityStage.ts:33:9 No overload matches this call. Overload 1 of 4, (slot: NotificationSlot): Promise, gave the following error. …...

std::initialzer_list 与花括号{}数据列表

author: hjjdebug date: 2025年 05月 22日 星期四 15:50:23 CST descrip: std::initialzer_list 与花括号{}数据列表 文章目录 1.{数值列表}是什么?1.1 数组初始化 时 &#xff0c; 称为数组初始化列表1.2. 当用于容器时, 称为容器初始化列表1.3. 对于结构体或类&#xff0c;{…...

萤石云实际视频实时接入(生产环境)

萤石云视频接入 本示例可用于实际接入萤石云开放平台视频&#xff0c;同时支持音频输入和输出。 实际优化内容 1.动态获取token 2.切换各公司和车间时&#xff0c;自动重新初始化播放器 let EZUIKit null; // 第三方库引用 let EZUIKitPlayers []; // 播放器实例数组 le…...

QT中常用的类

Qt 是一个功能强大的跨平台框架&#xff0c;提供了丰富的类库来开发 GUI 和应用程序。以下是 ​​Qt 中常用的核心类​​&#xff0c;按模块分类整理&#xff1a; ​​1. GUI 和窗口管理​​ 类名用途示例场景​​QWidget​​所有 GUI 控件的基类&#xff08;按钮、窗口等&…...

Docker系列(四):容器操作全栈技术指南 --- 从入门到生产级管控

引言 本指南以全链路视角拆解Docker技术栈&#xff0c;通过四大核心模块构建从入门到进阶的知识体系&#xff0c;助您系统性掌握容器化落地的关键能力。 容器生命周期管理&#xff08;一&#xff09;从创建、启停到资源清理&#xff0c;夯实容器操作的基础语法与核心场景&…...

poppler_path 是用于 Python 库如 pdf2image 进行 PDF 转换时

poppler_path 是用于 Python 库如 pdf2image 进行 PDF 转换时指定 Poppler 可执行文件路径的参数。为了让程序正常工作&#xff0c;需要先安装 Poppler&#xff0c;并配置环境变量或在代码中设置 poppler_path。 以下是 Poppler 的安装与环境变量配置方法&#xff0c;按操作系…...

鸿蒙OSUniApp 开发的多图浏览器组件#三方框架 #Uniapp

使用 UniApp 开发的多图浏览器组件 在移动应用开发中&#xff0c;图片浏览器是非常常见且实用的功能&#xff0c;尤其是在社交、资讯、电商等场景下&#xff0c;用户对多图浏览体验的要求越来越高。随着 HarmonyOS&#xff08;鸿蒙&#xff09;生态的不断壮大&#xff0c;开发…...

MongoDB 错误处理与调试完全指南:从入门到精通

在当今数据驱动的世界中&#xff0c;MongoDB 作为最流行的 NoSQL 数据库之一&#xff0c;因其灵活的数据模型和强大的扩展能力而广受开发者喜爱。然而&#xff0c;与任何复杂系统一样&#xff0c;在使用 MongoDB 过程中难免会遇到各种错误和性能问题。本文将全面介绍 MongoDB 的…...

React从基础入门到高级实战:React 核心技术 - 表单处理与验证深度指南

React 表单处理与验证深度指南 在现代 Web 应用中&#xff0c;表单是用户与应用交互的核心方式之一。无论是注册、登录、结账还是数据提交&#xff0c;表单都扮演着至关重要的角色。React 作为一款流行的前端框架&#xff0c;提供了多种处理表单的工具和方法&#xff0c;帮助开…...

【C++】stack,queue和priority_queue(优先级队列)

文章目录 前言一、栈&#xff08;stack&#xff09;和队列&#xff08;queue&#xff09;的相关接口1.栈的相关接口2.队列的相关接口 二、栈&#xff08;stack&#xff09;和队列&#xff08;queue&#xff09;的模拟实现1.stack的模拟实现2.queue的模拟实现 三、priority_queu…...