潘志宝
6 天以前 ca22cdd5550cfa0defb0f430c538698182cdaec1
提交 | 用户 | 时间
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 '@/plugins/tongji' // 百度统计
54 import Logger from '@/utils/Logger'
55
56 import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐患
57
e7305d 58 import WujieVue from 'wujie-vue3'
H 59
60 const { setupApp } = WujieVue
61
effbd8 62 import hostMap from "@/utils/hostMap";
H 63
64 import { micros } from '@/utils/micors'
e7305d 65
H 66 import lifecycles from '@/utils/lifecycles' // 生命周期函数
effbd8 67
H 68 // import credentialsFetch from "@/utils/fetch";
69
70 const isProduction = process.env.NODE_ENV === "production";
e7305d 71
820397 72 // 创建实例
H 73 const setupAll = async () => {
74   const app = createApp(App)
75
76   await setupI18n(app)
77
78   setupStore(app)
79
80   setupGlobCom(app)
81
82   setupElementPlus(app)
83
84   setupFormCreate(app)
85
86   setupRouter(app)
87
88   setupAuth(app)
89
9259c2 90   setupMountedFocus(app)
H 91
820397 92   await router.isReady()
H 93
94   app.use(VueDOMPurifyHTML)
95
e7305d 96   app.use(WujieVue)
H 97
820397 98   app.mount('#app')
H 99 }
100
101 setupAll()
102
effbd8 103 const degrade = window.localStorage.getItem("degrade") === "true" || !window.Proxy || !window.CustomElementRegistry;
H 104 const props = {
105   jump: (name) => {
106     router.push({ name });
107   },
108 };
109
e7305d 110 // 模拟接口查询,实现动动态子应用加载与动态路由添加
H 111 const setMiro = () =>
112   new Promise((resolve) => {
113     for (const value of micros) {
114       const obj: any = {
115         path: `/${value.name}`,
116         name: value.name,
117         component: () => import(`@/views/micro/index.vue`)
118       }
119       router.addRoute('home', obj)
effbd8 120       const attrs = isProduction ? { src: hostMap("//localhost/") } : {};
e7305d 121       setupApp({
effbd8 122         name: "fast",
H 123         url: hostMap("//localhost:90/"),
124         attrs,
e7305d 125         exec: true,
effbd8 126         alive: true,
H 127         plugins: [{ cssExcludes: ["https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"] }],
128         props,
129         // 引入了的第三方样式不需要添加credentials
130         // fetch: (url, options) =>
131         //   url.includes(hostMap("//localhost:90/")) ? credentialsFetch(url, options) : window.fetch(url, options),
132         degrade,
133         ...lifecycles,
134       });
135       // setupApp({
136       //   name: value.name,
137       //   url: getUrl(value.name, micros),
138       //   exec: true,
139       //   ...lifecycles
140       // })
e7305d 141     }
H 142     resolve(true)
143   })
144 // eslint-disable-next-line require-await
145 router.beforeEach(async (to, _from, next) => {
146   if (router.getRoutes().length <= 3) {
147     // 如果路由个数为基础路由,则说明没有进行路由和子应用添加,需要动态添加,添加完成,根据路由地址进行跳转
148     await setMiro()
149     next({
150       path: to.path,
151       query: { ...to.query }
152     })
153   } else {
154     next()
155   }
156 })
157
820397 158 Logger.prettyPrimary(`欢迎使用`, import.meta.env.VITE_APP_TITLE)