houzhongjian
8 天以前 2585bc81a73e7bc31e67375d4c7b968b24012965
提交 | 用户 | 时间
820397 1 // 引入unocss css
H 2 import '@/plugins/unocss'
3
4 // 导入全局的svg图标
5 import '@/plugins/svgIcon'
6
6baa33 7 import Iconify from '@iconify/iconify'
H 8 import epJson from '@iconify/json/json/ep.json'
9 import faJson from '@iconify/json/json/fa.json'
10 import faSolidJson from '@iconify/json/json/fa-solid.json'
11
12 Iconify.addCollection(epJson)
13 Iconify.addCollection(faJson)
14 Iconify.addCollection(faSolidJson)
15
16 export * from '@iconify/iconify'
17
18 export default Iconify
19
820397 20 // 初始化多语言
H 21 import { setupI18n } from '@/plugins/vueI18n'
22
23 // 引入状态管理
24 import { setupStore } from '@/store'
25
26 // 全局组件
27 import { setupGlobCom } from '@/components'
28
29 // 引入 element-plus
30 import { setupElementPlus } from '@/plugins/elementPlus'
31
32 // 引入 form-create
33 import { setupFormCreate } from '@/plugins/formCreate'
34
35 // 引入全局样式
36 import '@/styles/index.scss'
37
38 // 引入动画
39 import '@/plugins/animate.css'
40
41 // 路由
42 import router, { setupRouter } from '@/router'
43
44 // 权限
9259c2 45 import { setupAuth, setupMountedFocus } from '@/directives'
820397 46
H 47 import { createApp } from 'vue'
48
49 import App from './App.vue'
50
51 import './permission'
52
53 import Logger from '@/utils/Logger'
54
55 import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐患
56
e7305d 57 import WujieVue from 'wujie-vue3'
H 58
59 const { setupApp } = WujieVue
60
effbd8 61 import hostMap from "@/utils/hostMap";
H 62
63 import { micros } from '@/utils/micors'
e7305d 64
H 65 import lifecycles from '@/utils/lifecycles' // 生命周期函数
effbd8 66
H 67 // import credentialsFetch from "@/utils/fetch";
68
69 const isProduction = process.env.NODE_ENV === "production";
e7305d 70
820397 71 // 创建实例
H 72 const setupAll = async () => {
73   const app = createApp(App)
74
75   await setupI18n(app)
76
77   setupStore(app)
78
79   setupGlobCom(app)
80
81   setupElementPlus(app)
82
83   setupFormCreate(app)
84
85   setupRouter(app)
86
87   setupAuth(app)
88
9259c2 89   setupMountedFocus(app)
H 90
820397 91   await router.isReady()
H 92
93   app.use(VueDOMPurifyHTML)
94
e7305d 95   app.use(WujieVue)
H 96
820397 97   app.mount('#app')
H 98 }
99
100 setupAll()
101
effbd8 102 const degrade = window.localStorage.getItem("degrade") === "true" || !window.Proxy || !window.CustomElementRegistry;
H 103 const props = {
104   jump: (name) => {
105     router.push({ name });
106   },
107 };
108
e7305d 109 // 模拟接口查询,实现动动态子应用加载与动态路由添加
H 110 const setMiro = () =>
111   new Promise((resolve) => {
112     for (const value of micros) {
113       const obj: any = {
114         path: `/${value.name}`,
115         name: value.name,
116         component: () => import(`@/views/micro/index.vue`)
117       }
118       router.addRoute('home', obj)
effbd8 119       const attrs = isProduction ? { src: hostMap("//localhost/") } : {};
e7305d 120       setupApp({
effbd8 121         name: "fast",
H 122         url: hostMap("//localhost:90/"),
123         attrs,
e7305d 124         exec: true,
effbd8 125         alive: true,
H 126         plugins: [{ cssExcludes: ["https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"] }],
127         props,
128         // 引入了的第三方样式不需要添加credentials
129         // fetch: (url, options) =>
130         //   url.includes(hostMap("//localhost:90/")) ? credentialsFetch(url, options) : window.fetch(url, options),
131         degrade,
132         ...lifecycles,
133       });
134       // setupApp({
135       //   name: value.name,
136       //   url: getUrl(value.name, micros),
137       //   exec: true,
138       //   ...lifecycles
139       // })
e7305d 140     }
H 141     resolve(true)
142   })
143 // eslint-disable-next-line require-await
144 router.beforeEach(async (to, _from, next) => {
145   if (router.getRoutes().length <= 3) {
146     // 如果路由个数为基础路由,则说明没有进行路由和子应用添加,需要动态添加,添加完成,根据路由地址进行跳转
147     await setMiro()
148     next({
149       path: to.path,
150       query: { ...to.query }
151     })
152   } else {
153     next()
154   }
155 })
156
820397 157 Logger.prettyPrimary(`欢迎使用`, import.meta.env.VITE_APP_TITLE)