Skip to content

Commit 4178c85

Browse files
author
142vip.cn
committed
feat(express): 新增静态资源托管相关文档
1 parent c75ff7e commit 4178c85

File tree

12 files changed

+871
-4
lines changed

12 files changed

+871
-4
lines changed

code/express/apps/quick-start-demo/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
"name": "quick-start-demo",
33
"version": "0.0.1",
44
"description": "express框架快速开始演示demo",
5+
"dependencies": {
6+
"express": "^4.18.2"
7+
},
58
"scripts": {
69
"dev": "node app.js"
710
},
811
"author": {
912
"name": "微信公众号:储凡",
1013
"email": "fairy_vip@2925.com"
1114
},
12-
"license": "MIT",
13-
"dependencies": {
14-
"express": "^4.18.2"
15-
}
15+
"license": "MIT"
1616
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Express框架前端静态资源托管服务演示Demo
2+
3+
Express框架不仅给出了前后端混合开发的解决方案,针对不同的业务场景的需要,也可以灵活运用:
4+
5+
- 只提供服务端接口,用做纯后端应用,开发restFul接口,舍弃掉模板引擎渲染前端页面。
6+
- 提供静态资源托管服务,将前端需要使用的到图片、视频、js代码、css代码等托管起来,提供外部资源调用地址
7+
8+
## 简单介绍
9+
10+
使用`express.static` 内置中间件函数,可以将指定的文件目录设置成静态资源托管目录,函数的格式如下:
11+
12+
`express.static(root, [options])`
13+
14+
- root:必选参数, 静态资源目录地址,字符串类型
15+
- options:可选参数,设置资源的一些属性,具体可以参考[API类型](https://www.expressjs.com.cn/4x/api.html#express.static)
16+
17+
创建`static-source-demo`项目,用来演示Express托管静态资源文件。在根目录下创建`app.js`,可以简单的使用static中间件函数,将根目录下的public目录设置成
18+
静态资源托管的根目录,注意:**这里的public是相对路径**
19+
20+
```js
21+
const express = require('express')
22+
const app = express()
23+
// 服务启动端口
24+
const port = 3000
25+
26+
app.use(express.static('public'))
27+
28+
app.listen(port, () => {
29+
console.log(`quick-start app listening on port ${port}`)
30+
})
31+
```
32+
33+
## 使用
34+
35+
### 根目录的设置
36+
37+
使用相对路径设置
38+
39+
```js
40+
// 设置静态资源托管的根目录
41+
app.use(express.static('public'))
42+
```
43+
44+
使用绝对路径设置
45+
46+
```js
47+
const path = require('path')
48+
// 设置静态资源托管的根目录
49+
express.static(path.join(__dirname, 'public'))
50+
```
51+
52+
### 设置多个目录
53+
54+
支持对多个目录的设置,提供静态资源托管服务
55+
56+
```js
57+
// 分类托管视频文件
58+
app.use(express.static('video'))
59+
60+
// 分类托管图片文件
61+
app.use(express.static('images'))
62+
```
63+
64+
### 资源的访问
65+
66+
express.static中间件函数,实质上返回的是一个请求处理器。当客户端发起请求后,分析请求路径,将命中的请求路径分发到不同的静态资源托管的根目录
67+
68+
所以,在使用过程中只是声明了托管资源的根目录是无效的,还需要指定该目录对应的访问路由,例如:
69+
70+
```js
71+
app.use('/static', express.static('public'))
72+
```
73+
74+
服务启动后,在浏览器中访问:
75+
76+
```js
77+
http://localhost:3000/static/css/style.css
78+
http://localhost:3000/static/js/app.js
79+
http://localhost:3000/static/images/bg.png
80+
http://localhost:3000/static/hello.html
81+
```
82+
83+
文件存在时,返回渲染出文件内容:
84+
85+
![静态资源存在](./images/static-source-exist.png)
86+
87+
文件不存在时,提供文件不存在:
88+
89+
![静态资源不存在](./images/static-source-not-found.png)
90+
91+
至此,可以使用Express框架来更加方便的管理静态资源文件,给资源做托管了...
92+
93+
但是,这种做法已经是非常过时的,不推荐使用。使用静态资源托管更多的是推荐使用CDN服务,相比而言访问迅速、稳定性高,很多CDN服务厂商都提供了资源文件的管理后台,使用起来非常方便
94+
95+
**对于了解Express框架,学习、使用一些API还是非常推荐的**
96+
97+
## 参考
98+
99+
- <https://www.expressjs.com.cn/starter/static-files.html>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const express = require('express')
2+
const app = express()
3+
const path = require('path')
4+
// 服务启动端口
5+
const port = 3000
6+
7+
// 指定接口的根路径映射到资源的根目录
8+
app.use(express.static('public'))
9+
10+
// 设置不同的路径映射
11+
app.use('/static', express.static('public'))
12+
13+
// 使用绝对路径
14+
app.use('/static-back', express.static(path.join(__dirname, 'public')))
15+
16+
17+
/**
18+
* 服务启动,监听端口
19+
*/
20+
app.listen(port, () => {
21+
console.log(`quick-start app listening on port ${port}`)
22+
})
20.2 KB
Loading
16.7 KB
Loading

0 commit comments

Comments
 (0)