node/静态路由/express框架中的express.static()和app.use()
此篇文章转载于
express框架中的express.static()和app.use()
Express框架在使用app.use中传入express.static设置静态路由时,这个文件夹下的所有文件夹和文件都会变成路由文件,也就是说当在URL输入该路径时,会直接捕捉到该请求。
在使用express框架的时候,我们会遇到设置静态文件目录,代码如下
//将静态文锦啊目录设置为:项目根目录+/public
app.use(express.static(__dirname +"/public"))
app.use(express.static(path.join(__dirname,"public")))
那么,什么是静态文件资源?以及express是怎么利用这句话来设置静态目录的
静态资源文件
可以理解成,对于不同的用户来说,内容都不会变化的文件,他们所接受看到的图片,css,前端js文件都是一样的,我们称这类文件为静态资源文件。这些都是前端开发完给到后端的
动态资源文件
而张三李四登录百度,百度会分别对他们显示”你好张三”、”你好李四”,那么负责这么动态逻辑的文件就是动态文件了,根据你使用的技术不同,动态文件可能是.jsp文件、php文件或者我们node.js的服务器端js文件。
app.use()
将指定的一个或多个中间件函数安装在指定的路径上:当所请求路径的基数匹配时,将执行中间件函数path
可以理解为 app.use是用来给path注册中间函数的,这个path的默认是 /, 也就是处理用户的任何url请求。同时会处理path下的子路径:
比如设置path为“/hello” 那么当请求路径为“/hello/” “/hello/nihao”等等这样的请求,都会交给中间函数处理的。
于是我们现在知道了app.use(express.static(__dirname + ‘/public’))是将所有的请求,先交给express.static(__dirname + ‘/public’)来处理一下。express.static()的返回值肯定是一个函数
express.static()
为了提供对静态资源文件(图片,css,js)的服务。一般用Express内置的中间函数express。static
传递一个包含静态资源的目录给express.static中间件用于立刻开始提供文件。比如如下代码来提供public目录下的图片,css,js文件
app.use(express.static("public"))
express会在静态资源目录下查找文件,所以不需要把静态目录public作为url的一部分。
现在可以加载public目录下的文件了
http://localhost:3000/hello.html
http://localhost:3000/images/1.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/index.js
可以多次使用express.static添加多个静态资源目录,express会按照目录的顺序查找静态资源文件
app.use(express.static("static"))
app.use(express.static("public"))
为了给静态资源文件创建一个虚拟的文件前缀(实际文件系统中并不存在),可以使用express.static函数指定一个虚拟的静态目录,就像下面
app.use("/static", express.static("public"))
现在可以用/static作为前缀来加载public文件夹下的子文件了
http://localhost:3000/static/hello.html
http://localhost:3000/static/images/1.jpg
http://localhost:3000/static/css/style.css
http://localhost:3000/static/js/index.js
然后,你提供给express.static函数的路径是一个相对node进程启动位置的相对路径。
如果你在其他的文件夹中启动express app,更稳妥的方式是是用静态资源文件夹的绝对路径
app.use("/static", express.static(__dirname + "/public"))
node/静态路由/express框架中的express.static()和app.use()的更多相关文章
- node+express框架中连接使用mysql经验总结
最近在学习node.js,做了一个练手项目,使用node.js+express框架,配合mysql数据库和前端vue框架开发一个多人文档编辑系统. koa,express,node 通用方法连接MyS ...
- express框架中router组件的app.use和app.get
首先看例子: var express = require('express'); var router = express.Router(); var index = require('./route ...
- nodejs express 框架解密2-如何创建一个app
本文是基于express 3.4.6 的 1.在我们的app.js 文件里面有这么几行 http.createServer(app).listen(app.get('port'), function( ...
- Express框架中如何引用ejs模板引擎
1.如何在项目中安装ejs模板引擎 在NodeJS指南中利用利用以下命令建立网站的基本结构: express -t ejs microblog 运行这个命令后继续运行 cd microblog &am ...
- express框架中使用nodemon自启动服务
1.安装nodemon //全局安装 npm install -g nodemon //本地安装 npm install nodemon --save 2.修改package.json配置 " ...
- express框架中如何只执行一次res响应操作
在做东西时候遇到一个可能会重复输出res.json的地方,重复输出会产生Error:Cannot set header after they are sent. Node.js不像c++里可以直接通过 ...
- 71.用express框架,出现 express.Router is not a function
Express版本太久
- node之Express框架
Express是node的框架,通过Express我们快速搭建一个完整的网站,而不再只是前端了!所以Express还是非常值得学习的! express有各种中间件,我们可以在官方网站查询其用法. Ex ...
- node -- express框架
express node的一个框架 安装express cnpm install express -S 引入 const express = require("express"); ...
随机推荐
- FindWindowXG
测试: 函数代码: function FindWindowXG(strClass, strTitle: string): THandle; var hd: THandle; arrClass: ..] ...
- scala 语言特性
Scala 语言特性 Unit 表示无值, 等价于java, C++中的void Null 表示空值或空引用 Nothing 所有其他类型的子类型, 表示没有值 Any 所有类型的超类, 任何实例都属 ...
- VM ESXi虚拟化使用学习笔记
由于疫情原因,没有条件介绍安装部分的内容,也没有安装部分内容的相关截图,所以安装部分可以选择网上资料.但是只要熟练安装CentOS系统的,基本安装ESXi一看就会,设置主机地址方面有一定图形化界面,比 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 数据结构
C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许存储不同类型的数据项. 结构用于表示一条记录,假设想要跟踪图书馆中书本的动态,可能需要 ...
- 51nod 1201:整数划分 超级好的DP题目
1201 整数划分 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 收藏 关注 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} { ...
- 分享几个IntelliJ IDEA 2019 jihuo码(pojie码、zhuce码),亲测可用
文章转载自:https://www.jiweichengzhu.com/article/eb340e382d1d456c84a1d190db12755c 如果还有问题,加群交流:686430774(就 ...
- jquery判断当前浏览器是否是IE
if (window.ActiveXObject || "ActiveXObject" in window){ layer.msg("This page does not ...
- 利用方法HttpUtility.HtmlEncode来预处理用户输入
利用方法HttpUtility.HtmlEncode来预处理用户输入.这样能阻止用户用链接注入JavaScript代码或HTML标记,比如//Store/Broswe?Genre=<script ...
- Chrome在新版MacOS上报错 NET::ERR_CERT_WEAK_KEY 解决方法
现象 原文链接 证书详情: 原因 参考苹果官网给出的提示(https://support.apple.com/en-us/HT210176): RSA秘钥长度必须>=2048,小于这个长度的将不 ...
- 日志处理中一些shell命令技巧
日志处理中一些shell命令技巧 阴差阳错的做的日志分析,前途未卜的这段日子,唯一还有点意思的可能就是手动的处理大量日志.总结一下. 日志文件的输入是动则几个G的文本.从N个这样的文件中得到一个列表, ...