Vue 组件库中的(自动,手动)按需导入

按需导入介绍

为什么要按需导入,默认全局导入会把所有的组件全部都打包一遍,而按需导入只会把我们需要使用的组件进行打包,极大的减少程序的体积,加快程序的加载速度。

 

自动按需导入(推荐)

无需每次都进行import通过插件自动按需导入所需要组件

首先用到的插件就是unplugin-vue-components

Vue的按需组件自动导入,是由 Vue官方人员开发的一款自动引入插件,可以省去比如 UI 库的大量 import 语句。

自动按需导入插件安装

npm install unplugin-vue-components -D

手动按需导入

每次都进行import导入需要用到的组件

 

各种组件库的使用方法

Element Plus

Vite - 自动按需导入

配置Vite

import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
Components({
  resolvers: [ElementPlusResolver()],
}),

整体文件预览

// vite.config.ts
import { defineConfig } from 'vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  // ...
  plugins: [
    // ...
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})

 

示例Vue代码

<template>
  <el-button>I am ElButton</el-button>
</template>

Vite - 自动按需导入 - 组件 API

安装vite-plugin-style-import插件

配置Vite

import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
AutoImport({
  resolvers: [ElementPlusResolver()],
}),

整体文件预览

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  // ...
  plugins: [
    // ...
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})

 

示例Vue

<script setup>
ElMessageBox.alert('This is a message');
</script>

Vite - 自动按需导入 - 组件库样式

Element Plus在使用Vite - 自动按需导入 - 组件 API的时候会自动加载样式,如果我们没有使用的时候,手动导入组件API则还需要每次都引入css样式,使用此插件即可自动按需引入

安装unplugin-auto-import插件

配置vite

import styleImport from 'vite-plugin-style-import';
styleImport({
  libs: [
    {
      libraryName: 'element-plus',
      resolveStyle: (name) => {
        //  删除前面el-
        const replace = name.slice(3);
        return `element-plus/es/components/${replace}/style/css`;
      },
    },
  ],
}),

整体文件预览

// vite.config.ts
import { defineConfig } from 'vite'
import styleImport from 'vite-plugin-style-import';

export default defineConfig({
  // ...
  plugins: [
    // ...
    styleImport({
      libs: [
        {
          libraryName: 'element-plus',
          resolveStyle: (name) => {
            // 删除前面el-
            const replace = name.slice(3);
            return `element-plus/es/components/${replace}/style/css`;
          },
        },
      ],
    }),
  ],
})

 

示例Vue

<script setup>
import { ElMessageBox } from 'element-plus';
ElMessageBox.alert('This is a message');
</script>

手动按需导入

示例Vue代码

// App.vue
<template>
  <el-button>I am ElButton</el-button>
</template>
<script setup>
import 'element-plus/es/components/button/style/css';
import { ElButton } from 'element-plus'
</script>

手动按需导入(Vite - 自动导入css样式文件)【不建议使用】

使用Element Puls官网提供的插件,只需要导入组件即可,会自动导入css样式文件

安装unplugin-element-plus插件

npm install unplugin-element-plus -D

配置vite

import ElementPlus from 'unplugin-element-plus/vite'
ElementPlus()

整体文件预览

// vite.config.ts
import { defineConfig } from 'vite'
import ElementPlus from 'unplugin-element-plus/vite'

export default defineConfig({
  // ...
  plugins: [ElementPlus()],
})

 

示例Vue代码

// App.vue
<template>
  <el-button>I am ElButton</el-button>
</template>
<script setup>
import { ElButton } from 'element-plus'
</script>

Arco Design

Vite - 自动按需导入

配置Vite

import Components from 'unplugin-vue-components/vite';
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
Components({
  resolvers: [
    ArcoResolver({
      resolveIcons: true// 图标 Icon
    })
  ]
})

整体文件预览

// vite.config.ts
import { defineConfig } from 'vite'
import Components from 'unplugin-vue-components/vite';
import { ArcoResolver } from 'unplugin-vue-components/resolvers';

export default defineConfig({
  plugins: [
    Components({
      resolvers: [
        ArcoResolver({
          resolveIcons: true// 图标 Icon
        })
      ]
    })
  ]
});

 

示例Vue代码

<template>
  <a-button>I am AButton</a-button>
</template>

Vite - 自动按需导入 - 组件 API

安装unplugin-auto-import插件

配置Vite

import AutoImport from 'unplugin-auto-import/vite'
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
AutoImport({
  resolvers: [ArcoResolver()],
}),

整体文件预览

// vite.config.ts
import { defineConfig } from 'vite'
import AutoImport from 'unplugin-auto-import/vite'
import { ArcoResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  // ...
  plugins: [
    // ...
    AutoImport({
      resolvers: [ArcoResolver()],
    }),
  ],
})

 

示例Vue

<script setup>
Message.info('This is an info message!')
</script>

 

THE END