瀏覽代碼

调试时间

Zimo 1 周之前
父節點
當前提交
018d6d7ee8
共有 3 個文件被更改,包括 38 次插入1 次删除
  1. 1 1
      package.json
  2. 23 0
      src/main.ts
  3. 14 0
      src/permission.ts

+ 1 - 1
package.json

@@ -9,7 +9,7 @@
     "dev": "vite --mode env.local",
     "dev-server": "vite --mode dev",
     "ts:check": "vue-tsc --noEmit",
-    "build:local": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build",
+    "build:local": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build",
     "build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev",
     "build:test": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode test",
     "build:stage": "node --max_old_space_size=4096 ./node_modules/vite/bin/vite.js build --mode stage",

+ 23 - 0
src/main.ts

@@ -49,25 +49,44 @@ import DataVVue3 from '@kjgl77/datav-vue3'
 
 // 创建实例
 const setupAll = async () => {
+  console.time('app:init')
   const app = createApp(App)
 
+  console.time('app:setupI18n')
   await setupI18n(app)
+  console.timeEnd('app:setupI18n')
 
+  console.time('app:setupStore')
   setupStore(app)
+  console.timeEnd('app:setupStore')
 
+  console.time('app:setupGlobCom')
   setupGlobCom(app)
+  console.timeEnd('app:setupGlobCom')
 
+  console.time('app:setupElementPlus')
   setupElementPlus(app)
+  console.timeEnd('app:setupElementPlus')
 
+  console.time('app:setupFormCreate')
   setupFormCreate(app)
+  console.timeEnd('app:setupFormCreate')
 
+  console.time('app:setupRouter')
   setupRouter(app)
+  console.timeEnd('app:setupRouter')
 
   // directives 指令
+  console.time('app:setupDirectives')
   setupAuth(app)
   setupMountedFocus(app)
+  console.timeEnd('app:setupDirectives')
 
+  console.time('router:isReady')
   await router.isReady()
+  console.timeEnd('router:isReady')
+
+  console.time('app:usePluginsAfterRouterReady')
   app.use(DataVVue3)
 
   app.use(DataVVue3)
@@ -79,8 +98,12 @@ const setupAll = async () => {
     v: '4.0',
     tk: import.meta.env.VITE_TK
   })
+  console.timeEnd('app:usePluginsAfterRouterReady')
 
+  console.time('app:mount')
   app.mount('#app')
+  console.timeEnd('app:mount')
+  console.timeEnd('app:init')
 }
 
 setupAll()

+ 14 - 0
src/permission.ts

@@ -126,31 +126,45 @@ router.beforeEach(async (to, from, next) => {
 
       next({ path: '/' })
     } else {
+      console.time('permission:first-load')
       // 获取所有字典
       const dictStore = useDictStoreWithOut()
       const userStore = useUserStoreWithOut()
       const permissionStore = usePermissionStoreWithOut()
       if (!dictStore.getIsSetDict) {
+        console.time('permission:dict:setDictMap')
         await dictStore.setDictMap()
+        console.timeEnd('permission:dict:setDictMap')
+      } else {
+        console.timeLog('permission:first-load', 'dict cache hit')
       }
 
       if (!userStore.getIsSetUser) {
         console.log(from, to)
         isRelogin.show = true
+        console.time('permission:user:setUserInfoAction')
         await userStore.setUserInfoAction()
+        console.timeEnd('permission:user:setUserInfoAction')
         isRelogin.show = false
         // 后端过滤菜单
+        console.time('permission:generateRoutes')
         await permissionStore.generateRoutes()
+        console.timeEnd('permission:generateRoutes')
+        console.time('permission:addRoutes')
         permissionStore.getAddRouters.forEach((route) => {
           router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表
         })
+        console.timeEnd('permission:addRoutes')
         const redirectPath = from.query.redirect || to.path
         // 修复跳转时不带参数的问题
         const redirect = decodeURIComponent(redirectPath as string)
         const { paramsObject: query } = parseURL(redirect)
         const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect, query }
+        console.timeEnd('permission:first-load')
         next(nextData)
       } else {
+        console.timeLog('permission:first-load', 'user cache hit')
+        console.timeEnd('permission:first-load')
         next()
       }
     }