mm_os
Version:
MM_OS服务端架构,用于快速构建应用程序,支持网站建设、小程序后台、AI应用、物联网(IOT/AIOT)、游戏服务端等多种场景。
73 lines (69 loc) • 1.78 kB
JavaScript
/**
* 增强的静态资源处理中间件
* 提供缓存控制、压缩、预加载等性能优化功能
*/
const { statics } = require('mm_statics');
/**
* 静态资源请求
* @param {object} server 服务
* @param {object} config 配置参数
*/
module.exports = {
/**
* 初始化
* @param {object} adapter 适配器集合
* @param {object} eventer 事件管理器
* @param {object} logger 日志管理器
*/
init(adapter, eventer, logger) {
// 获取web服务
var web = adapter.web;
let config = web.config.static || {};
let cg = { ...this.config, ...config };
if (cg) {
this._setupMainStatic(web, cg);
this._setupMultiStatic(web, cg);
this._setupGlobalStatic(web);
} else {
console.log('未找到静态文件配置');
}
},
/**
* 设置主静态路径
* @private
* @param {object} web web服务
* @param {object} cg 配置
*/
_setupMainStatic(web, cg) {
web.use(statics(cg));
},
/**
* 设置多静态路径
* @private
* @param {object} web web服务
* @param {object} cg 配置
*/
_setupMultiStatic(web, cg) {
if (Array.isArray(cg.paths) && cg.paths.length > 0) {
for (let i = 0; i < cg.paths.length; i++) {
let path = cg.paths[i];
let config = { ...cg, root: path.fullname() };
web.use(statics(config));
}
}
},
/**
* 设置全局静态资源
* @private
* @param {object} web web服务
*/
_setupGlobalStatic(web) {
if ($.admin.static) {
$.static = new $.admin.static();
$.static.call('update', 'app/');
web.use(async (ctx, next) => {
await $.static.run(ctx, next);
});
}
}
};