You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.4 KiB

  1. import App from "./App.vue";
  2. import router from "./router";
  3. import { setupStore } from "/@/store";
  4. import { getServerConfig } from "./config";
  5. import { createApp, Directive } from "vue";
  6. import { usI18n } from "../src/plugins/i18n";
  7. import { MotionPlugin } from "@vueuse/motion";
  8. import { useFontawesome } from "../src/plugins/fontawesome";
  9. import { useElementPlus } from "../src/plugins/element-plus";
  10. import { injectResponsiveStorage } from "/@/utils/storage/responsive";
  11. import "animate.css";
  12. import "virtual:windi.css";
  13. // 导入公共样式
  14. import "./style/index.scss";
  15. // 导入字体图标
  16. import "./assets/iconfont/iconfont.js";
  17. import "./assets/iconfont/iconfont.css";
  18. const app = createApp(App);
  19. // 自定义指令
  20. import * as directives from "/@/directives";
  21. Object.keys(directives).forEach(key => {
  22. app.directive(key, (directives as { [key: string]: Directive })[key]);
  23. });
  24. // 全局注册`@iconify/vue`图标库
  25. import { IconifyIconOffline, IconifyIconOnline } from "./components/ReIcon";
  26. app.component("IconifyIconOffline", IconifyIconOffline);
  27. app.component("IconifyIconOnline", IconifyIconOnline);
  28. getServerConfig(app).then(async config => {
  29. injectResponsiveStorage(app, config);
  30. setupStore(app);
  31. app
  32. .use(router)
  33. .use(MotionPlugin)
  34. .use(useElementPlus)
  35. .use(usI18n)
  36. .use(useFontawesome);
  37. await router.isReady();
  38. app.mount("#app");
  39. });