/**
/**
 * 应用入口文件
 * 负责创建Vue应用实例、配置插件、注册全局组件和属性
 * 是整个Vue应用的启动点和配置中心
 */

// 导入Vue的createApp函数，用于创建应用实例
import { createApp } from 'vue'

// 导入应用的根组件
import App from './App.vue'

// 导入路由配置
import router from './router'

// 导入Element Plus UI组件库
import ElementPlus from 'element-plus'

// 导入Element Plus的CSS样式
import 'element-plus/dist/index.css'

// 导入全局自定义样式
import './assets/main.css'

// 导入Pinia状态管理库
import { createPinia } from 'pinia'

// 导入Element Plus的所有图标组件
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

// 导入全局配置文件
import config from './config'

/**
 * 创建Vue应用实例和状态管理实例
 */
const app = createApp(App) // 创建Vue应用实例，以App组件为根组件
const pinia = createPinia() // 创建Pinia状态管理实例

/**
 * 全局注册配置对象
 * 使配置在整个应用中可访问
 */
// 为Options API提供全局配置属性
app.config.globalProperties.$config = config

// 为Composition API提供全局配置，通过inject('config')获取
app.provide('config', config)

/**
 * 全局注册所有Element Plus图标组件
 * 使所有图标组件在应用中无需单独导入即可使用
 */
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component) // 注册每个图标组件
}

/**
 * 应用插件配置
 * 依次注册Element Plus、Vue Router和Pinia插件
 */
app.use(ElementPlus) // 注册Element Plus UI组件库
app.use(router) // 注册Vue Router路由管理
app.use(pinia) // 注册Pinia状态管理

/**
 * 将Vue应用实例挂载到DOM元素
 * 使应用在id为'app'的DOM元素中渲染
 */
app.mount('#app') // 将应用挂载到HTML中的#app元素上