node.js基础学习-express框架-静态资源中间件express.static(十一)
前言
在 Node.js 应用中,静态资源是指那些不需要服务器动态处理,直接发送给客户端的文件。常见的静态资源包括 HTML 文件、CSS 样式表、JavaScript 脚本、图片(如 JPEG、PNG 等)、字体文件和音频、视频文件等。这些文件在服务器端存储,当客户端请求相应的资源时,服务器直接将文件内容发送给客户端,而不需要像动态路由那样进行数据处理或生成内容。
在 Express 中处理静态资源(使用express.static中间件)
基本用法
首先,需要引入 Express 并创建应用实例,然后使用express.static中间件来指定静态资源所在的目录。例如,假设静态资源都存储在名为public的目录下:
const express = require('express');
const app = express();
app.use(express.static('public'));
app.listen(3000, () => {console.log('Server running on port 3000');
});
这样,当客户端请求http://localhost:3000/index.html(假设index.html在public目录下)时,服务器会自动在public目录中查找index.html文件并发送给客户端。如果请求http://localhost:3000/styles/main.css(假设main.css在public/styles目录下),服务器也会正确地找到并发送该文件。
虚拟路径前缀
可以为静态资源设置虚拟路径前缀。例如,想让所有静态资源的 URL 路径都以/static开头,可以这样设置:
app.use('/static', express.static('public'));
此时,要访问public目录下的index.html文件,客户端需要请求http://localhost:3000/static/index.html。这种方式在需要区分静态资源和动态路由,或者将静态资源部署到特定的路径下时非常有用。
多个静态资源目录
可以指定多个静态资源目录。例如,除了public目录,还有一个uploads目录用于存储用户上传的文件,并且也想将其作为静态资源提供服务,可以这样做:
app.use(express.static('public'));
app.use('/uploads', express.static('uploads'));
这样,客户端可以通过http://localhost:3000/访问public目录下的静态资源,通过http://localhost:3000/uploads访问uploads目录下的静态资源。
例子
有两个静态文件,分别是放到views文件夹的index.html页面和放到public的myStyle.css样式文件

文档结构
index.html的代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="/public/myStyle.css">
</head>
<body>
<p class="redBackground">This is the index page.</p>
</body>
</html>
引入了myStyle.css
.redBackground {background-color: red;
}
服务器的配置如下:
const express = require('express');
const app = express();//设置了public目录为静态资源目录(需要输入public才能访问到public目录下的文件)
app.use('/public',express.static('public'))
//设置views目录为静态资源目录(不需要输入views也可以访问到views目录下的文件)
app.use(express.static('views'))app.listen(2000,()=>{console.log('Server is running on port 2000')
})
浏览器输入http://localhost:2000/index.html,可以看到页面

如果我将public的静态文件配置app.use(‘/public’,express.static(‘public’))注释掉,是加载不到css文件的

相关文章:
node.js基础学习-express框架-静态资源中间件express.static(十一)
前言 在 Node.js 应用中,静态资源是指那些不需要服务器动态处理,直接发送给客户端的文件。常见的静态资源包括 HTML 文件、CSS 样式表、JavaScript 脚本、图片(如 JPEG、PNG 等)、字体文件和音频、视频文件等。这些文件在服务器端…...
Python语法基础---正则表达式
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 我们这个文章所讲述的,也是数据分析的基础文章,正则表达式 首先,我们在开始之前,引出一个问题。也是我们接下来想要解决的问题。…...
Uniapp 微信小程序分享 - 自定义绘制分享图片
技术栈: Uniapp Vue3 简介 因实际业务需求,需要实现微信小程序自定义分享,根据当前数据动态生成(绘制)分享卡片的图片。 基础分享使用 配置此处不在赘述,可查看上篇博客:Uniapp 微信小程序分…...
鸿蒙技术分享:Navigation页面容器封装-鸿蒙@fw/router框架源码解析(三)
本文是系列文章,其他文章见:鸿蒙fw/router框架源码解析(一)-router页面管理鸿蒙fw/router框架源码解析(二)-Navigation页面管理鸿蒙fw/router框架源码解析(四)-路由Hvigor插件实现原…...
三步入门Log4J 的使用
本篇基于Maven 的Project项目, 快速演示Log4j 的导入和演示。 第一步: 导入Log4j依赖 <dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.24.2</version&…...
VBA中类的解读及应用第十八讲:利用类方法,判断任意单元格类型
《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入࿰…...
查询品牌涉及两张表(brand、brand_admin_mapping)
文章目录 1、BrandController2、AdminCommonService3、BrandApiService3、BrandCommonService4、BrandSqlService涉及的表SQL 查询逻辑参数处理执行查询完整 SQL 逻辑参数映射总结 查询指定管理员下的品牌所涉及的表有哪些? http://127.0.0.1:8087/brand/admin/list…...
Eureka和Zookeeper、Nacos的区别
目录 一、Eureka与Zookeeper的区别 适用场景: 架构设计: 功能特性: 社区生态: 二、Eureka与Nacos的区别 接口方式: 实例类型: 健康检测: 服务发现: 一致性与可用性&#…...
微信小程序怎么实现非tabbar页面显示tabbar,自定义组件实现
微信小程序没有发现可以实现非tabbar页面显示tabbar的方法,但是可以在tabbar页面当中隐藏tabbar,使用wx.hideTabBar()方法就可以实现,在非tabbar页面调用wx.showTabBar()方法却会显示失败,不能显示tabbar onLoad() {wx.showTabBar…...
SpringBoot如何使用EasyExcel实现表格导出(简洁快速入门版本)
前言 前面给大家介绍了动态表头的导入,这篇文章给大家介绍如何实现导出 前面给大家介绍了动态表头的导入,我们了解了如何通过EasyExcel灵活地读取结构不固定的Excel文件。这次,我们将目光转向数据导出——即如何将数据以Excel文件的形式输出…...
多种平台上安装部署调试Open5GS(四)
OpenWRT 源码安装 UERANSIM 安装依赖openwrt源码安装cmake其他依赖准备UERANSIM安装测试验证Open5GS 是一个功能完善的开源5G项目,具备5G、4G核心网功能,最新代码支持R17标准, 本系列文章介绍Open5GS在x86、ARM平台上的安装部署方法,并通过搭建UERANSIN、商用5G基站和终端两…...
单片机的基本构成与工作原理
单片机,即微控制器(Microcontroller Unit,MCU),是一种将中央处理器(CPU)、存储器(ROM/RAM)、定时/计数器(Timer/Counter)、中断系统、输入输出(I/O)接口等集成在一块芯片上的微型计算机。它具有体积小、功耗低、成本低…...
opencv常用图像处理操作
OpenCV 处理图像的通用流程通常包括以下几个步骤,根据具体需求可以调整或跳过某些步骤。以下是一个通用的框架: 读取图像 加载图像文件到内存中以进行后续处理。 import cv2 读取图像 image cv2.imread(‘image.jpg’) # 彩色图像 gray_image cv2…...
Svn如何切换删除账号
记录Svn清除切换账号 1.首先打开小乌龟的设置如下图 打开设置后单击已保存数据,然后选择清除 接上图选择清除后,就可以打勾选择清除已保存的账号,我们再次检出的就可以切换账号了 👉总结 本次记录Svn清除切换账号 如能帮助到你…...
使用PaddleOCR遇到的问题Bug
Q1: 训练模型的预测效果比inference模型的预测效果差距很大,怎么办?原因是什么? A1: 训练模型:使用训练数据集进行训练后的模型。 inference模型:把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。训练过程中保存的模型是checkpoints模型,保存的只有模…...
了解Xcode在iOS开发中的作用和功能有哪些
Xcode是什么?它在iOS开发中的作用和功能有哪些? 一、Xcode是什么? Xcode是苹果公司针对macOS平台开发的一款集成开发环境(Integrated Development Environment,简称IDE)。它主要用于开发iOS、iPadOS、mac…...
《船舶物资与市场》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答 问:《船舶物资与市场》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《船舶物资与市场》级别? 答:国家级。主管单位:中国船舶集团有限公司 主办单…...
商汤完成组织架构调整,改革完成的商汤未来何在?
首先,从核心业务的角度来看,商汤科技通过新架构明确了以AI云、通用视觉模型等为核心业务的战略方向。这一举措有助于商汤科技集中资源,加强在核心业务领域的研发和市场拓展,提高市场竞争力。同时,坚定生成式AI为代表的…...
MyBatis异常体系中ErrorContext和ExceptionFactory原理分析
🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 exceptions包分包设计ExceptionFactory类介绍为什么使用工厂不是直接new呢?【统一的异常处理机制】【异常的封装与转化】【…...
WHLUG丨deepin、华中科技大学开放原子开源俱乐部、 RustSBI 和清华大学开源操作系统训练营共话开源新生代成长之路
2024年11月30日下午,由 deepin(深度)社区联合华中科技大学开放原子开源俱乐部、 RustSBI 开源社区和清华大学开源操作系统训练营共同举办的WHLUG(武汉Linux用户组)线下沙龙在华中科技大学成功举办。 本次活动聚集了50余…...
如何使用Unlocker工具在VMware中启用macOS虚拟机支持
如何使用Unlocker工具在VMware中启用macOS虚拟机支持 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker Unlocker是一款开源工具,能够帮助用户在VMware虚拟机软件中解锁对macOS操作系统的支持。…...
如何快速下载m3u8加密视频:Python下载器的完整使用指南
如何快速下载m3u8加密视频:Python下载器的完整使用指南 【免费下载链接】m3u8_downloader 项目地址: https://gitcode.com/gh_mirrors/m3/m3u8_downloader 你是否曾想保存在线课程、收藏精彩视频,却因为复杂的加密技术而束手无策?面对…...
semi-utils:让照片水印处理效率提升15倍的智能批处理方案
semi-utils:让照片水印处理效率提升15倍的智能批处理方案 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具,后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 在数字影像创作领域ÿ…...
Python 官方网站(python.org)上 Python 3.13.0 版本的 Windows 下载选项说明
Python 官方网站(python.org)上 Python 3.13.0 版本的 Windows 下载选项说明。以下是各选项的简要解释,帮助你选择合适的安装包: ✅ Windows installer (64-bit):标准 .exe 安装程序,适用于大多数现代 64 位…...
AI辅助开发:描述需求即可自动生成流程图,比手动visio下载更智能
最近在做一个用户系统的设计,需要画登录注册的流程图。以前用Visio这类工具时,经常要手动拖拽各种图形、调整连线,特别费时间。这次尝试了用AI辅助生成,发现效率提升太多了! 需求解析环节 我把需求描述成一段自然语言&…...
Wan2.2-T2V-A5B轻量级优势:普通显卡也能秒出视频
Wan2.2-T2V-A5B轻量级优势:普通显卡也能秒出视频 1. 为什么选择轻量级视频生成模型 在AI视频生成领域,大多数模型对硬件的要求高得令人望而却步。传统视频生成模型通常需要专业级显卡和大量显存,这让普通开发者和内容创作者难以接触这项技术…...
glb模型在Cesium中发黑的机理分析
最近在将一款火箭模型(fbx模式)转换为glb(gltf)格式后,在Cesium中加载结果模型看起来全黑,经过分析发现是由于高光的折射率等级(IOR level)默认设置错误(设置为0)导致的,将其设置为0.5即可在Cesium中表现正常。 现象 现有一个fbx格…...
从IDEA到K8s:飞算JavaAI如何打通微服务开发的“最后一公里”
云原生时代的一站式开发革命:当JavaAI遇上Kubernetes 在数字化转型的浪潮中,微服务架构已成为企业技术栈的标配,但随之而来的开发复杂度却让许多团队陷入"最后一公里"困境。传统开发流程中,从本地编码到云端部署需要跨…...
Phi-4-mini-reasoning低成本部署:8GB显存即可运行的高性能推理模型
Phi-4-mini-reasoning低成本部署:8GB显存即可运行的高性能推理模型 1. 模型介绍 Phi-4-mini-reasoning 是一款专注于推理任务的文本生成模型,特别适合处理数学题、逻辑题、多步分析和简洁结论输出等场景。与通用聊天模型不同,它采用了"…...
国内顶级的SEO技术网站有哪些
国内顶级的SEO技术网站有哪些? 在当今互联网时代,搜索引擎优化(SEO)已经成为每个网站营销者不可忽视的重要环节。国内顶级的SEO技术网站不仅为业内人士提供了宝贵的技术分享和实践经验,还为企业的网站流量优化提供了有…...
