UNPKG

mm_os

Version:

MM_OS服务端架构,用于快速构建应用程序,支持网站建设、小程序后台、AI应用、物联网(IOT/AIOT)、游戏服务端等多种场景。

73 lines (69 loc) 1.78 kB
/** * 增强的静态资源处理中间件 * 提供缓存控制、压缩、预加载等性能优化功能 */ 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); }); } } };