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

优化前

 

 

 

优化后

装包:

yarn add rollup-plugin-external-globals

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)),
    },
  },
})

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

装包:

yarn add vite-plugin-html

 

修改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)),
    },
  },
})

修改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>

public文件夹增加文件:

 

 

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

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

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

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

人工智能学习网站

https://chat.xutongbao.top

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐同保

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值