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

Node.JS - 基础(Express)

目录

A. 简介

B. 下载,安装

C. 启动服务,查看文件结构



A. 简介

Express 是一个基于 Node.js 平台的极简、灵活的 Web 应用开发框架,它提供了一系列强大的功能来构建 Web 应用程序和 API。

一、Express 的基本特点

  1. 简洁的路由系统
    • Express 的路由系统允许开发者轻松地定义不同的 HTTP 请求路径和对应的处理函数。
  2. 中间件支持
    • 中间件是在请求和响应处理过程中的函数,它们可以执行各种任务,如日志记录、请求解析、身份验证等。Express 允许轻松地添加和使用中间件。

改核心请求处理逻辑的情况下,添加各种通用的功能模块,提高了代码的可扩展性和可维护性。

二、Express 在 Web 应用开发中的作用

  1. 快速构建 Web 应用和 API
    • Express 提供了一套简洁而高效的工具集,使得开发者能够快速搭建 Web 应用程序的基础架构。通过定义路由和处理函数,可以快速响应不同的 HTTP 请求并返回相应的内容。例如,在构建一个简单的博客应用时,可以使用 Express 定义文章列表页面、文章详情页面、评论提交等不同的路由和处理逻辑。对于构建 API 来说,Express 也非常方便.
  2. 与前端框架集成
    • Express 可以很好地与前端框架(如 React、Vue.js 等)进行集成。它可以作为后端服务器,为前端应用提供数据接口和服务。例如,在一个使用 Vue.js 的单页应用(SPA)项目中,Express 可以作为后端 API 服务器,提供用户认证、数据存储和获取等服务。前端应用通过 AJAX 请求与 Express 服务器的 API 进行通信,获取所需的数据并更新页面。

三、Express 的优势与应用场景

  1. 优势

    • 灵活性:Express 具有高度的灵活性,开发者可以根据项目需求选择和组合不同的中间件和插件。例如,可以选择不同的模板引擎(如 Pug、EJS 等)来生成动态的 HTML 页面,也可以选择不同的数据库驱动和 ORM(Object-Relational Mapping)库来与数据库进行交互。这种灵活性使得 Express 适用于各种类型的 Web 应用开发,从简单的静态网站到复杂的企业级应用都能胜任。
    • 轻量级:与一些大型的全栈框架相比,Express 是轻量级的,它只提供了核心的 Web 应用开发功能,不包含过多的额外功能和复杂性。这使得开发者能够更好地理解和控制框架的行为,同时也减少了项目的依赖和资源占用。对于一些资源受限的环境或需要快速开发的小型项目来说,Express 的轻量级特性是一个很大的优势。
    • 社区支持和丰富的插件生态:Express 拥有庞大的社区和丰富的插件生态系统。开发者可以在社区中找到大量的教程、示例代码和解决方案,遇到问题时能够快速得到帮助。同时,各种功能的插件(如身份验证插件、日志插件等)使得开发者可以很容易地为应用程序添加额外的功能,而不需要从头开始编写代码。
  2. 应用场景

    • Web 应用开发:无论是构建企业内部的管理系统、电子商务网站还是社交网络平台等,Express 都可以作为后端服务器框架提供强大的支持。例如,在一个电商网站中,Express 可以处理用户注册和登录、商品展示和搜索、购物车管理、订单处理等各种业务逻辑,同时与数据库进行交互来存储和获取数据。
    • API 开发:随着前后端分离的开发模式越来越流行,Express 在构建 RESTful API 和 GraphQL API 等方面得到了广泛的应用。许多移动应用和前端单页应用都依赖于后端提供的 API 来获取数据和实现业务功能。例如,一个移动天气应用可以通过调用 Express 构建的天气 API 来获取实时的天气数据,并在移动应用中展示给用户。
    • 实时应用:对于需要实时数据更新和交互的应用,如在线聊天应用、实时协作工具等,Express 可以与 WebSocket 等技术结合使用,实现实时的双向通信。例如,在一个在线聊天应用中,Express 可以作为服务器端的基础框架,处理用户的连接请求,同时使用 WebSocket 来实现实时的消息推送和接收,使得用户能够实时看到其他用户发送的消息。

总之,Express 作为一个功能强大且灵活的 Node.js Web 应用开发框架,在 Web 应用开发、API 开发和实时应用等领域都有着广泛的应用和重要的作用。它的特点和优势使得开发者能够高效地构建各种类型的网络应用程序

B. 下载,安装

选择文件夹输入下面命令, 然后一路空格

npm init

就会在当前文件 创建一个  package.json

然后导入框架

npm install express

会生成一个node_moodules文件夹,里边放着我们引用的第三方的库

创建启动文件

要和配置文件里面的名字相同

const express = require('express')
const app = express()app.get('/',(req,res)=>{res.send('hello,world')
})const PORT = 3000app.listen(PORT,()=>{console.log(`express start in ${PORT}`)
})

编写代码

启动

 node app.js

C. 启动服务,查看文件结构

 npm start   
my-express-app/
├── app.js
├── package.json
├── package-lock.json
├── public/
│   ├── css/
│   │   └── styles.css
│   ├── images/
│   │   └── logo.png
│   └── js/
│       └── script.js
├── routes/
│   ├── index.js
│   └── users.js
└── views/├── index.ejs└── layout.ejs

一、顶层文件和目录

  1. app.js
    • 这是应用程序的主要入口文件。在这里,你会初始化 Express 应用,配置中间件,定义路由,以及设置应用的监听端口等。例如:
   const express = require('express');const app = express();const port = 3000;// 配置中间件、路由等app.listen(port, () => {console.log(`Server running at port ${port}`);});
  1. package.json 和 package-lock.json
    • package.json 定义了项目的元数据,包括项目名称、版本、依赖项等。它还包含了一些脚本命令,用于项目的开发、测试和部署等操作。
    • package-lock.json 是在安装依赖项时自动生成的文件,它准确记录了安装的每个依赖项的版本和依赖关系树,以确保在不同环境中安装的一致性。

二、public 目录

  1. css 文件夹:
    • 用于存放 CSS 样式文件。例如 styles.css 可以包含应用程序的全局样式定义,用于美化网页的外观。
  2. images 文件夹:
    • 存储项目中使用的图片资源,如 logo.png 可能是应用程序的标志图片。
  3. js 文件夹:
    • 放置 JavaScript 脚本文件。比如 script.js 可能包含一些客户端脚本,用于增强网页的交互性等功能。

三、routes 目录

  1. index.js
    • 通常定义了应用程序的默认路由或首页路由。例如,处理根路径(/)的请求,可能会渲染首页视图等操作。
   const express = require('express');const router = express.Router();router.get('/', (req, res) => {res.render('index'); // 假设使用了视图引擎,渲染 index 视图});module.exports = router;
  1. users.js
    • 可以定义与用户相关的路由,比如用户注册、登录、用户信息管理等路由。例如:
   const express = require('express');const router = express.Router();router.post('/register', (req, res) => {// 处理用户注册的逻辑});router.post('/login', (req, res) => {// 处理用户登录的逻辑});module.exports = router;

四、views 目录

  1. index.ejs
    • 这是一个视图文件,可能是应用程序的首页视图模板。例如,如果使用 EJS 模板引擎,这个文件可以包含 HTML 结构以及 EJS 的语法,用于动态地插入数据到网页中。
   <!DOCTYPE html><html><head><title>My App</title><link rel="stylesheet" href="/css/styles.css"></head><body><h1>Welcome to My App</h1><% if (user) { %><p>Hello, <%= user.name %>!</p><% } else { %><p>Please log in or register.</p><% } %></body></html>
  1. layout.ejs
    • 布局视图文件,它可以定义整个应用程序页面的通用结构,其他视图可以继承这个布局。例如,它可能包含网页的头部、底部等通用部分,中间的内容部分可以在其他视图中动态填充。
   <!DOCTYPE html><html><head><title><%= title %></title><link rel="stylesheet" href="/css/styles.css"></head><body><header><nav><a href="/">Home</a><a href="/users">Users</a></nav></header><main><%= body %></main><footer>&copy; 2024 My App</footer></body></html>

当然,实际的 Express 项目文件结构可以根据项目的具体需求和规模进行调整和扩展。但这个基本的结构提供了一个良好的起点,有助于组织和管理 Express 应用程序的代码和资源。

相关文章:

Node.JS - 基础(Express)

目录 A. 简介 B. 下载,安装 C. 启动服务,查看文件结构 A. 简介 Express 是一个基于 Node.js 平台的极简、灵活的 Web 应用开发框架&#xff0c;它提供了一系列强大的功能来构建 Web 应用程序和 API。 一、Express 的基本特点 简洁的路由系统&#xff1a; Express 的路由系…...

I/O复用

I/O复用使得程序能够同时监听多个文件描述符&#xff0c;这对提高程序的性能至关重要。 举个例子&#xff1a; 就好比你天天玩手机&#xff0c;你妈为了监控你&#xff0c;在你房间安装了一个监控&#xff0c;这个监控可以实时监控你的一举一动&#xff0c;并上传到你妈手机上…...

【验证可用】解决安装SQL Server数据库时,报错“启用 windows 功能 NetFx3 时出错,错误代码:-2146498298......“的问题

目录 背景一. 报错信息1.1 报错的图片信息1.2 报错的文字信息 二. 解决报错2.1 下载 NetFx3.cab 文件2.2 执行命令 三. SQL Server 修复安装 背景 一次在阿里云服务器安装 SQL Server 2012时&#xff0c;系统报错了&#xff0c;导致安装进行不下去…通过在网上查找了多种解决方…...

STM32的SDIO接口详解

目录 1. 定义与兼容性 2. SDIO时钟 3. SDIO命令与响应 4. SDIO块数据传输 5. SDIO控制器的硬件结构 6.代码实现 1.SD初始化 2.测试SD卡的读取 3.测试SD卡的写入 STM32的SDIO&#xff08;Secure Digital Input/Output&#xff0c;安全数字输入输出&#xff09;接口是一…...

docker容器常用指令,dockerfile

docker&#xff1a;容器&#xff0c;主要是解决环境迁移的问题&#xff0c;将环境放入docker中&#xff0c;打包成镜像。 docker的基本组成&#xff1a;镜像(image)&#xff0c;容器(container)&#xff0c;仓库(repository)。镜像相当于类&#xff0c;容器相当于类的实例对象…...

C语言学习笔记 Day11(指针--下)

Day11 内容梳理&#xff1a; 目录 Chapter 7 指针 7.6 指针 & 函数 &#xff08;1&#xff09;形参改变实参的值 &#xff08;2&#xff09;字符数组作为函数参数 1&#xff09;合并字符串 2&#xff09;删掉字符串中空格 &#xff08;3&#xff09;指针作为函数返…...

(24)(24.2) Minim OSD快速安装指南(二)

文章目录 前言 6 MinimOSD-extra NG 7 替代硬件 前言 本文简要介绍了如何连接电路板。有关更多详细说明&#xff0c;请参阅 MinimOSD 项目维基(MinimOSD Project wiki)。 6 MinimOSD-extra NG 该项目位于此处(here)&#xff1b;文档位于此处(here)&#xff1b;支撑线位于此…...

GD32 MCU碰到IIC总线卡死怎么办?

大家在使用MCU IIC通信时&#xff0c;若碰到设备复位或者总线干扰等情况&#xff0c;可能会导致IIC总线卡死&#xff0c;表现上总线上SDA或者SCL其中一根线为低电平&#xff0c;IIC总线一直处于busy状态。此时若代码上一直等待总线空闲&#xff0c;则可能导致软件死机&#xff…...

算法——动态规划:0/1 背包问题

文章目录 一、问题描述二、解决方案1. DP 状态的设计2. 状态转移方程3. 算法复杂度4. 举例5. 实现6. 滚动数组6.1 两行实现6.2 单行实现6.3 优缺点 三、总结 一、问题描述 问题的抽象&#xff1a;给定 n n n 种物品和一个背包&#xff0c;第 i i i 个物品的体积为 c i c_i …...

又是奇瑞,“统一下班时间”过去不久,最近又整新活了...

奇瑞 345 345 可不是奇瑞的汽车型号&#xff0c;而是奇瑞 7 月份会议文章中提出的新策略。 简单来说&#xff0c;要提高加班效率&#xff0c;实现 3 个人干 5 个人活&#xff0c;拿 4 个人的工资&#xff0c;要把员工当成家人一样看待&#xff0c;要对他们的健康幸福负责。 前面…...

ubuntu24.04lts cmake编译 opencv4.5.4 contrib的一些问题

编译之前一定要安装好必须的库&#xff0c;否则即使提示编译成功&#xff0c;调用opencv后也可能会有问题 sudo apt-get update sudo apt-get upgradesudo apt-get install -y g sudo apt-get install -y cmake sudo apt-get install -y make sudo apt-get install…...

大数据面试SQL(三):每分钟在线直播人数

文章目录 每分钟在线直播人数 一、题目 二、分析 三、SQL实战 四、样例数据参考 每分钟在线直播人数 一、题目 有如下数据记录直播平台主播上播及下播时间&#xff0c;根据该数据计算出平台每分钟的在线直播人数。 这里用主播名称做统计&#xff0c;前提是主播名称唯一…...

python中执行mysql操作并将python脚本共享

mysql下载路径&#xff1a; ​​​​​​MySQL :: MySQL Community Downloads [root2 ~]# vim py001.py a3 b4 print(ab) print(a**2b**2) [root2 ~]# python py001.py 7 25 [root2 ~]# python3 >>> import random >>> random <module rando…...

HTTP、HTTPS、SOCKS5三种协议特点

在互联网通信中&#xff0c;HTTP、HTTPS和SOCKS5是三种至关重要的协议&#xff0c;它们各自具有独特的特点和应用场景。本文将详细探讨这三种协议的特点&#xff0c;帮助读者更好地理解它们在网络通信中的作用。 一、HTTP协议特点 HTTP&#xff08;Hypertext Transfer Protoc…...

在ubuntu、centos、openEuler安装Docker

目录 ubuntu、centos、openEuler安装Docker 1.在 Ubuntu 上安装 Docker 1. 1 更新软件包 1. 2 安装必要的依赖 1.3 添加 Docker 的 GPG 密钥 1.4 添加 Docker 仓库 1.5 更新软件包 1.6 安装 Docker 1.7 启动并启用 Docker 服务 1.8 验证安装 1.9 运行测试容器 1.10…...

公共命名空间的例子3

有这样一个句子 用x语言解释[12*3]。 在x语言中&#xff0c;不符合“先乘除后加减”&#xff0c;这个句子应该怎样解释呢&#xff1f; 第一步&#xff0c;进行词法分析&#xff0c;目的是识别出注释和字符串&#xff0c;其中可能包括任意符号&#xff0c;干扰编译过程。 第二步…...

【云存储】SDS软件定义存储,数据存储的类型与技术方案(块/文件/对象,Ceph、RBD等)

【云存储】SDS软件定义存储&#xff0c;数据存储的类型与技术方案&#xff08;块/文件/对象&#xff0c;Ceph、RBD等&#xff09; 文章目录 1、分布式存储架构&#xff08;软件定义存储SDS&#xff0c;超融合基础架构HCI&#xff09;2、存储类型&#xff08;块存储&#xff0c;…...

第31课 Scratch入门篇:小画家(舞台上画画)

小画家(舞台上画画) 故事背景: 在舞台上选择画笔和颜色,进行画画 程序原理: 这节课我们继续练习画笔功能,通过画笔功能我们设计一个小画板,碰到哪种颜色画笔就切换成哪种颜色。 开始编程 1、绘制一大一小的黑色圆形,小的命名为画笔,大的圆形命名为black(黑色) 2、鼠…...

QT UI界面之ListView

文章目录 概述源码怎么用代码qt design 小结 概述 本来把布局文件那块写了一遍&#xff0c;但是看看都跟之前那篇差不多&#xff0c;就换了一个稍微有点难度的&#xff0c;也很常用的listview来写了。来看看&#xff0c;有什么好玩的。 源码 先看下源码&#xff0c;如下&…...

freeRTOS互斥量(mutex)

目录 前言 一、互斥量概述 二、互斥量函数 1.创建 2.其他函数 三、优先级反转示例 1.概念 2.代码示例 四、优先级继承 1.概念 2.代码示例 五、递归锁 1.死锁的概念 2.自我死锁 3.函数 4.递归锁代码示例 前言 在之前的信号量中&#xff0c;我们想要实现互斥的…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...