Pārlūkot izejas kodu

兼容低版本浏览器

Hwf 3 mēneši atpakaļ
vecāks
revīzija
55d7663857
8 mainītis faili ar 1099 papildinājumiem un 257 dzēšanām
  1. 3 0
      index.html
  2. 1050 191
      package-lock.json
  3. 2 0
      package.json
  4. 2 0
      src/main.ts
  5. 5 0
      src/types/components.d.ts
  6. 1 66
      vite.config.ts
  7. 2 0
      vite/plugins/index.ts
  8. 34 0
      vite/plugins/legacy.ts

+ 3 - 0
index.html

@@ -211,6 +211,9 @@
         <div class="load_title">正在加载系统资源,请耐心等待</div>
       </div>
     </div>
+    <script>
+      this.globalThis || (this.globalThis = this)
+    </script>
     <script type="module" src="/src/main.ts"></script>
   </body>
 </html>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1050 - 191
package-lock.json


+ 2 - 0
package.json

@@ -27,6 +27,7 @@
     "await-to-js": "3.0.0",
     "axios": "1.6.8",
     "bignumber.js": "^9.1.2",
+    "core-js": "^3.41.0",
     "crypto-js": "4.2.0",
     "echarts": "^5.5.1",
     "echarts-gl": "^2.0.9",
@@ -68,6 +69,7 @@
     "@unocss/preset-attributify": "0.58.6",
     "@unocss/preset-icons": "0.58.6",
     "@unocss/preset-uno": "0.58.6",
+    "@vitejs/plugin-legacy": "^5.4.3",
     "@vitejs/plugin-vue": "5.0.4",
     "@vue/compiler-sfc": "3.4.23",
     "autoprefixer": "10.4.18",

+ 2 - 0
src/main.ts

@@ -1,4 +1,6 @@
 import { createApp } from 'vue';
+import 'core-js/stable'; // 引入所有稳定版 Polyfill
+import 'regenerator-runtime/runtime'; // 支持 async/await
 // global css
 import 'virtual:uno.css';
 import '@/assets/styles/index.scss';

+ 5 - 0
src/types/components.d.ts

@@ -34,6 +34,11 @@ declare module 'vue' {
     ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
     ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
     ElSlider: typeof import('element-plus/es')['ElSlider']
+    ElStep: typeof import('element-plus/es')['ElStep']
+    ElSteps: typeof import('element-plus/es')['ElSteps']
+    ElSwitch: typeof import('element-plus/es')['ElSwitch']
+    ElTabPane: typeof import('element-plus/es')['ElTabPane']
+    ElTabs: typeof import('element-plus/es')['ElTabs']
     ElText: typeof import('element-plus/es')['ElText']
     ElTimeline: typeof import('element-plus/es')['ElTimeline']
     ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']

+ 1 - 66
vite.config.ts

@@ -56,72 +56,7 @@ export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
     },
     // 预编译
     optimizeDeps: {
-      include: [
-        'vue',
-        'vue-router',
-        'pinia',
-        'axios',
-        '@vueuse/core',
-        'echarts',
-        'min-dash',
-        'tiny-svg',
-        'image-conversion',
-
-        'element-plus/es/components/text/style/css',
-        'element-plus/es/components/collapse-item/style/css',
-        'element-plus/es/components/collapse/style/css',
-        'element-plus/es/components/space/style/css',
-        'element-plus/es/components/container/style/css',
-        'element-plus/es/components/aside/style/css',
-        'element-plus/es/components/main/style/css',
-        'element-plus/es/components/header/style/css',
-        'element-plus/es/components/button-group/style/css',
-        'element-plus/es/components/radio-button/style/css',
-        'element-plus/es/components/checkbox-group/style/css',
-        'element-plus/es/components/form/style/css',
-        'element-plus/es/components/form-item/style/css',
-        'element-plus/es/components/button/style/css',
-        'element-plus/es/components/input/style/css',
-        'element-plus/es/components/input-number/style/css',
-        'element-plus/es/components/switch/style/css',
-        'element-plus/es/components/upload/style/css',
-        'element-plus/es/components/menu/style/css',
-        'element-plus/es/components/col/style/css',
-        'element-plus/es/components/icon/style/css',
-        'element-plus/es/components/row/style/css',
-        'element-plus/es/components/tag/style/css',
-        'element-plus/es/components/dialog/style/css',
-        'element-plus/es/components/loading/style/css',
-        'element-plus/es/components/radio/style/css',
-        'element-plus/es/components/radio-group/style/css',
-        'element-plus/es/components/popover/style/css',
-        'element-plus/es/components/scrollbar/style/css',
-        'element-plus/es/components/tooltip/style/css',
-        'element-plus/es/components/dropdown/style/css',
-        'element-plus/es/components/dropdown-menu/style/css',
-        'element-plus/es/components/dropdown-item/style/css',
-        'element-plus/es/components/sub-menu/style/css',
-        'element-plus/es/components/menu-item/style/css',
-        'element-plus/es/components/divider/style/css',
-        'element-plus/es/components/card/style/css',
-        'element-plus/es/components/link/style/css',
-        'element-plus/es/components/breadcrumb/style/css',
-        'element-plus/es/components/breadcrumb-item/style/css',
-        'element-plus/es/components/table/style/css',
-        'element-plus/es/components/tree-select/style/css',
-        'element-plus/es/components/table-column/style/css',
-        'element-plus/es/components/select/style/css',
-        'element-plus/es/components/option/style/css',
-        'element-plus/es/components/pagination/style/css',
-        'element-plus/es/components/tree/style/css',
-        'element-plus/es/components/alert/style/css',
-        'element-plus/es/components/checkbox/style/css',
-        'element-plus/es/components/date-picker/style/css',
-        'element-plus/es/components/transfer/style/css',
-        'element-plus/es/components/tabs/style/css',
-        'element-plus/es/components/image/style/css',
-        'element-plus/es/components/tab-pane/style/css'
-      ]
+      include: ['/node_modules/']
     },
     build: {
       rollupOptions: {

+ 2 - 0
vite/plugins/index.ts

@@ -3,6 +3,7 @@ import createUnoCss from './unocss';
 import createAutoImport from './auto-import';
 import createComponents from './components';
 import createIcons from './icons';
+import createLegacy from './legacy';
 import createSvgIconsPlugin from './svg-icon';
 import createCompression from './compression';
 import createSetupExtend from './setup-extend';
@@ -20,5 +21,6 @@ export default (viteEnv: any, isBuild = false): [] => {
   vitePlugins.push(createSvgIconsPlugin(path, isBuild));
   vitePlugins.push(createSetupExtend());
   vitePlugins.push(ViteImageOptimizer());
+  vitePlugins.push(createLegacy());
   return vitePlugins;
 };

+ 34 - 0
vite/plugins/legacy.ts

@@ -0,0 +1,34 @@
+import legacy from '@vitejs/plugin-legacy';
+
+export default () => {
+  return legacy({
+    targets: ['defaults', 'Chrome >= 51'],
+    additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
+    modernPolyfills: ['es.string.replace-all'],
+    renderLegacyChunks: true,
+    polyfills: [
+      'es.symbol',
+      'es.array.flat-map',
+      'es.array.filter',
+      'es.promise',
+      'es.promise.finally',
+      'es.object.assign',
+      'es.map',
+      'es.set',
+      'es.array.for-each',
+      'es.object.define-properties',
+      'es.object.define-property',
+      'es.object.get-own-property-descriptor',
+      'es.object.get-own-property-descriptors',
+      'es.object.keys',
+      'es.object.to-string',
+      'web.dom-collections.for-each',
+      'esnext.global-this',
+      'esnext.string.match-all',
+      'es.array.iterator',
+      'es.string.includes',
+      'es.string.starts-with',
+      'es.object.values'
+    ]
+  });
+};

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels