64 lines
1.5 KiB
TypeScript
64 lines
1.5 KiB
TypeScript
/**
|
||
* 应用启动入口
|
||
*
|
||
* @description
|
||
* Vue3 应用初始化,包括样式、插件、配置的加载
|
||
*/
|
||
|
||
import { createApp } from "vue";
|
||
import App from "./App.vue";
|
||
|
||
// ===== 样式导入 =====
|
||
import "element-plus/dist/index.css";
|
||
import "element-plus/theme-chalk/dark/css-vars.css";
|
||
import "vxe-table/lib/style.css";
|
||
import "@/styles/index.scss";
|
||
import "uno.css";
|
||
import "animate.css";
|
||
|
||
// ===== 核心配置 =====
|
||
import { setupDirective } from "@/directives";
|
||
import { setupI18n } from "@/lang";
|
||
import { setupRouter } from "@/router";
|
||
import { setupStore } from "@/store";
|
||
|
||
// ===== 全局组件 =====
|
||
import * as ElementPlusIcons from "@element-plus/icons-vue";
|
||
|
||
// ===== 第三方插件 =====
|
||
import VXETable from "vxe-table";
|
||
import { InstallCodeMirror } from "codemirror-editor-vue3";
|
||
import { configureVxeTable } from "@/plugins/vxe-table";
|
||
|
||
// ===== 路由守卫 =====
|
||
import { setupPermissionGuard } from "@/router/guards/permission";
|
||
|
||
// ===== 业务服务 =====
|
||
import { setupWebSocket } from "@/composables";
|
||
|
||
// 创建 Vue 应用实例
|
||
const app = createApp(App);
|
||
|
||
// 1️⃣ 核心配置
|
||
setupDirective(app);
|
||
setupRouter(app);
|
||
setupStore(app);
|
||
setupI18n(app);
|
||
|
||
// 2️⃣ 全局组件(Element Plus 图标)
|
||
Object.entries(ElementPlusIcons).forEach(([name, comp]) => app.component(name, comp));
|
||
|
||
// 3️⃣ 第三方插件
|
||
configureVxeTable();
|
||
app.use(VXETable);
|
||
app.use(InstallCodeMirror);
|
||
|
||
// 4️⃣ 路由守卫
|
||
setupPermissionGuard();
|
||
|
||
// 5️⃣ WebSocket 初始化
|
||
setupWebSocket();
|
||
|
||
// 6️⃣ 挂载应用
|
||
app.mount("#app");
|