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"); ...
随机推荐
- Elasticsearch 使用集群
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- json字符串格式化显示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [ACTF2020 新生赛]BackupFile
0x00 知识点 备份文件 index.php.bak str弱相等被转化为整型 0x01解题 根据提示下载备份文件得到源码 看到==弱相等 且被强制转为整型 http://7d5cccc5-4ecd ...
- P 1024 科学计数法
转跳点:
- 使用GDI+显示OpenCV中的图像IplImage
OpenCV虽然自带了轻量级的界面库HighGUI,但是支持的图像化元素实在是太少了,一般只在前期算法测试时使用.实际产品还是使用MFC库.因此本文记录了如何在GDI+中显示OpenCV中的IplIm ...
- 禁止ViewPager的左右滑动
参考 思路:重写android.support.v4.view.ViewPager中的ViewPager 写一个NoScrollViewPager继承ViewPager 然后用NoScrollVi ...
- oracle查询语句注意事项:
我想查出datatype 不等于1的所有结果,包括空. '; //这条sql查不出datatype为空的数据 发现oracle需要使用 is null .is not null查询空或非空 ' ...
- 花了一周整理的,这是价值10W的32个Python项目!
今天为大家整理了32个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩得愉快~QQSpider ! QQ空间爬虫,包括日志.说 ...
- 爬虫(十八):Scrapy框架(五) Scrapy通用爬虫
1. Scrapy通用爬虫 通过Scrapy,我们可以轻松地完成一个站点爬虫的编写.但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码. 如果我们将各个站点的 ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:字符串
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...