-
Notifications
You must be signed in to change notification settings - Fork 283
Expand file tree
/
Copy pathstatic.js
More file actions
105 lines (94 loc) · 4.47 KB
/
static.js
File metadata and controls
105 lines (94 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/**
* 静态文件服务控制器
*
* 该模块负责配置和注册多个静态文件服务路径,为不同类型的资源提供HTTP访问接口。
* 支持公共资源、应用程序、JSON配置、JavaScript脚本、Python脚本、CAT相关文件等多种资源类型。
*
* @module StaticController
* @author drpy-node
* @since 1.0.0
*/
import fastifyStatic from '@fastify/static';
import {addSPARoutes} from './fastify-spa-routes.js';
/**
* 静态文件服务插件
*
* 注册多个静态文件服务路径,每个路径对应不同的资源类型和用途。
* 通过 @fastify/static 插件实现高效的静态文件服务。
*
* @param {Object} fastify - Fastify实例
* @param {Object} options - 配置选项对象
* @param {string} options.publicDir - 公共资源目录路径
* @param {string} options.appsDir - 应用程序目录路径
* @param {string} options.jsonDir - JSON配置文件目录路径
* @param {string} options.dr2Dir - JavaScript脚本目录路径
* @param {string} options.pyDir - Python脚本目录路径
* @param {string} options.catDir - CAT相关文件目录路径
* @param {string} options.catLibDir - CAT库文件目录路径
* @param {string} options.xbpqDir - XBPQ相关文件目录路径
* @param {Function} done - 插件注册完成回调函数
*/
export default (fastify, options, done) => {
// 注册公共静态资源服务 - 用于存放通用的静态文件(CSS、JS、图片等)
fastify.register(fastifyStatic, {
root: options.publicDir, // 静态文件根目录
prefix: '/public/', // URL访问前缀
});
// 注册应用程序静态资源服务 - 用于存放各种应用程序文件
fastify.register(fastifyStatic, {
root: options.appsDir, // 应用程序文件根目录
prefix: '/apps/', // URL访问前缀
decorateReply: false, // 禁用 sendFile 装饰器,避免冲突
});
fastify.register(addSPARoutes, {
appsDir: options.appsDir,
spaApps: ['drplayer'] // 只有drplayer需要SPA路由支持
});
// 注册JSON配置文件服务 - 用于存放各种JSON格式的配置文件
fastify.register(fastifyStatic, {
root: options.jsonDir, // JSON文件根目录
prefix: '/json/', // URL访问前缀
decorateReply: false, // 禁用 sendFile 装饰器
});
// 注册JavaScript脚本文件服务 - 用于存放drpy相关的JS脚本
fastify.register(fastifyStatic, {
root: options.dr2Dir, // JavaScript脚本根目录
prefix: '/js/', // URL访问前缀
decorateReply: false, // 禁用 sendFile 装饰器
// setHeaders: (res, path) => {
// res.setHeader('Cache-Control', 'no-store'); // 禁用缓存确保每次获取最新
// }
});
// 注册Python脚本文件服务 - 用于存放Python相关的脚本文件
fastify.register(fastifyStatic, {
root: options.pyDir, // Python脚本根目录
prefix: '/py/', // URL访问前缀
decorateReply: false, // 禁用 sendFile 装饰器
setHeaders: (res, path) => {
// 为Python文件设置正确的Content-Type,确保浏览器以纯文本形式显示
if (path.endsWith('.py')) {
res.setHeader('Content-Type', 'text/plain; charset=utf-8')
}
}
});
// 注册CAT相关文件服务 - 用于存放CAT视频源相关文件
fastify.register(fastifyStatic, {
root: options.catDir, // CAT文件根目录
prefix: '/cat/', // URL访问前缀
decorateReply: false, // 禁用 sendFile 装饰器
});
// 注册CAT库文件服务 - 用于存放CAT相关的库文件和依赖
fastify.register(fastifyStatic, {
root: options.catLibDir, // CAT库文件根目录
prefix: '/catLib/', // URL访问前缀
decorateReply: false, // 禁用 sendFile 装饰器
});
// 注册XBPQ相关文件服务 - 用于存放XBPQ格式的视频源文件
fastify.register(fastifyStatic, {
root: options.xbpqDir, // XBPQ文件根目录
prefix: '/xbpq/', // URL访问前缀
decorateReply: false, // 禁用 sendFile 装饰器
});
// 调用完成回调,表示插件注册完成
done();
}