优化前

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_javascript

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_ico_02

 

 

优化后

装包:

yarn add rollup-plugin-external-globals

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_ico_03

vite.config.ts:

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
import { visualizer } from 'rollup-plugin-visualizer'
import externalGlobals from 'rollup-plugin-external-globals'

// https://vitejs.dev/config/
export default defineConfig({
  // base: 'doc',
  server: {
    port: 3007,
    proxy: {
      '/api': {
        target: 'http://localhost:85',
        changeOrigin: true,
        rewrite: (path) => {
          console.log(path)
          return path.replace(/^\/api/, '/api')
        },
      },
    },
  },
  plugins: [
    vue(),
    vueJsx(),
    vueDevTools(),
    visualizer(),
    {
      ...externalGlobals({
        'element-plus': 'ElementPlus',
      }),
      enforce: 'post',
      apply: 'build',
    },
  ],
  build: {
    sourcemap: true,
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
    },
  },
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_ico_04

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_05

编译后的前端代码无法找到ElementPlus

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_html_06

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_07

装包:

yarn add vite-plugin-html

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_08

 

修改vite.config.ts:

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
import { visualizer } from 'rollup-plugin-visualizer'
import externalGlobals from 'rollup-plugin-external-globals'
import { createHtmlPlugin } from 'vite-plugin-html'

// https://vitejs.dev/config/
export default defineConfig({
  // base: 'doc',
  server: {
    port: 3007,
    proxy: {
      '/api': {
        target: 'http://localhost:85',
        changeOrigin: true,
        rewrite: (path) => {
          console.log(path)
          return path.replace(/^\/api/, '/api')
        },
      },
    },
  },
  plugins: [
    vue(),
    vueJsx(),
    vueDevTools(),
    visualizer(),
    {
      ...externalGlobals({
        vue: 'Vue',
        'vue-demi': 'VueDemi',
        'vue-router': 'VueRouter',
        'element-plus': 'ElementPlus',
      }),
      enforce: 'post',
      apply: 'build',
    },
    createHtmlPlugin({
      inject: {
        data: {
          cdnCss: ['element-plus_2.7.7_index.css'],
          cdnJs: [
            'vue_3.4.32.js',
            'vue-demi_0.14.8_index.iife.js',
            'vue-router_4.4.0.global.js',
            'element-plus_2.7.7_index.full.js',
          ],
        },
      },
    }),
  ],
  build: {
    sourcemap: true,
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
    },
  },
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.

修改index.html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>jsx</title>
    <!-- 使用CDN的CSS文件 -->
    <% for (const i of cdnCss) { %>
    <link href="<%= i %>" rel="stylesheet" />
    <% } %>
    <!-- 使用CDN的JS文件 -->
    <% for (const i of cdnJs) { %>
    <script src="<%= i %>" defer></script>
    <% } %>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

public文件夹增加文件:

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_09

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_10

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_11

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_前端_12

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_13

 

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_vue.js_14

vue3+vite+ts+element-plus+rollup-plugin-external-globals+vite-plugin-html,提高打包速度,提高网页打开速度_html_15

 

- vue、element plus等js文件放在pullic文件下

- 打包时通过'rollup-plugin-external-globals'过滤掉,可以提高打包速度

-打包时通过‘vite-plugin-html’插件引入上一步过滤掉的js,可以保证项目正常运行

-如果上一步引入的js文件存放在cdn,还可以提高访问速度