/**
 * 模板组件注册模块
 * 动态引入 template 目录下的所有 .vue 文件，并将它们注册为全局组件
 */

// 动态引入 template 目录下的所有 .vue 文件（包括中文命名的文件）
// 使用 { eager: true } 表示立即加载所有匹配的文件
const templates = import.meta.glob('./*.vue', { eager: true });

// 存储所有加载的组件
const components = [];

// 遍历所有引入的文件
for (const path in templates) {
  try {
    // 获取组件的默认导出
    const component = templates[path].default;
    
    // 检查组件是否有 name 属性，如果没有则跳过
    if (component && component.name) {
      components.push(component);
    } else {
      console.warn(`组件 ${path} 缺少 name 属性，将不会被注册`);
    }
  } catch (error) {
    console.error(`加载组件 ${path} 时出错：`, error);
  }
}

/**
 * 注册所有组件到 Vue 应用实例
 * @param {Object} app - Vue 应用实例
 */
const registerComponents = (app) => {
  components.forEach((component) => {
    // 使用组件的 name 属性作为组件名称进行注册
    app.component(component.name, component);
  });
};

// 导出组件数组和注册函数
export { components, registerComponents };