// 使用 import.meta.glob 动态导入 themes 目录下的所有 .js 文件 // { eager: true } 表示同步导入,立即获取模块内容 const themeModules = import.meta.glob('./themes/*.js', { eager: true }); // 构建 themes 对象 export const themes = {}; for (const path in themeModules) { // 从路径中提取主题名称 (e.g., './themes/default.js' -> 'default') const themeName = path.replace('./themes/', '').replace('.js', ''); // 获取模块的默认导出 (即主题配置对象) if (themeModules[path].default) { themes[themeName] = themeModules[path].default; } } // 主题切换函数 export function setTheme(themeName) { const theme = themes[themeName] || themes.default // Fallback to default if (!theme) { console.error(`Theme "${themeName}" not found.`); return; } const root = document.documentElement // 设置主题色变量 Object.keys(theme).forEach(key => { root.style.setProperty(`--el-color-${key}`, theme[key]) }) // 设置主题类名 // 查找 body 上是否已有 theme- 开头的类 const currentThemeClass = Array.from(document.body.classList).find(cls => cls.startsWith('theme-')); if (currentThemeClass) { document.body.classList.remove(currentThemeClass); } document.body.classList.add(`theme-${themeName}`); }