ant-design-vue按需引入icon以及组件

本文详述如何在Vue项目中按需引入ant-design-vue组件库,通过精细化配置减少项目体积,从3.75M压缩至99kb,显著提升加载速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.75M → 1.81M → 99kb的转变

一、初始化vue项目文件夹

1.安装vue/cli

(默认电脑已安装了node)打开命令行终端,输入命令npm install -g @vue/cli 安装vue脚手架工具(已装过不用装,版本需在3.0以上)。安装好后在命令行输入命令vue -V 会出现版本号,如图:
在这里插入图片描述

2.创建Vue项目

在命令行中先cd desktop 到桌面,然后输入命令vue create ant-vue-demo,然后会出现如下图:
在这里插入图片描述
键盘上下键选择,我们选择第二个default,回车就可以了。安装好后如下图:
在这里插入图片描述
接着我们将桌面创建好的vue项目文件夹ant-vue-demo拖到vscode编辑器中。如下图:
在这里插入图片描述
打开后如图:
在这里插入图片描述
至此我们的vue初始化项目完成。

二、按需引入ant-design-vue

1.安装ant-design-vue

接着我们打开vscode的终端Terminal,然后输入命令npm i ant-design-vue,如下图:
在这里插入图片描述
安装好后,我们在package.json,运行时的依赖里就可以看到ant-design-vue,同时我们去配置,打包时候的分析报告, --report,如下图:
在这里插入图片描述
别忘记修改后保存。

1.1 分析全部引入体积有多大

接着我们先来全部引入看看包有多大,打开src文件夹下的main.js,输入:

import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/antd.css';
Vue.use(Antd);

如图:
在这里插入图片描述
然后我们在src文件夹下App.vue,输入的评分组件代码:

<a-rate :default-value="5">
      <a-icon type="star" slot="character"></a-icon>
    </a-rate>

然后在vscode命令行终端输入命令npm run serve,如下图:
在这里插入图片描述
我们在浏览器打开,如图所示,ant-design-vue的评分组件就显示在页面了:
在这里插入图片描述
接着我们再打开一个命令行终端,我们进行打包压缩分析,在新开的命令行终端输入npm run build,如下图:
在这里插入图片描述
然后我们打开ant-vue-demo/dist/report.html:如图:
在这里插入图片描述
可以看到我们就引了一个评分组件,打包后就这么大了足足有3.75M,这显然是不行的,我们的理想是按需引入。接下来我们来按需引入。

1.2 ant-design-vue按需引入组件

好的,我们现在终端命令行中输入命令npm i babel-plugin-import --dev,如图所示:
在这里插入图片描述
接着修改babel.config.js里代码,增加如下代码:

plugins: [
     [
       "import",
       { libraryName: "ant-design-vue", libraryDirectory: "es", style: 'css'}
     ]
   ]

如图所示添加:
在这里插入图片描述
然后在main.js文件中删除全部引入的代码,增加按需引入的代码:

import { Rate,Icon } from 'ant-design-vue'
Vue.use(Rate).use(Icon)

在这里插入图片描述
我们重新配置好之后最好重新去启动下服务,否则可能会存在样式出不来的效果,好的我们看到页面也是正常显示评分组件的,如图:
在这里插入图片描述
接下来我们再重新开一个命令行终端,npm run build去生成打包的分析,如下图:
在这里插入图片描述
可以直观的看到现在只有1.81M,比之前全部引入足足小了1.7M
但是这还不是我们想要的,可以看到我们只引入Icon组件里的星星图表,但是它自己全部进来了,还有moment,我们也不需要这么多。

1.3 ant-design-vue按需引入Icon组件

我们在ant-vue-demo文件夹下创建vue.config.js,输入如下代码:

const path = require('path')
const {IgnorePlugin} = require('webpack')
function resolve (dir) {
    // path.join()方法用于连接路径
    return path.join(__dirname, dir)
} 
module.exports = {
    publicPath: './',
    configureWebpack: {
        plugins: [
            new IgnorePlugin(/^\.\/locale$/, /moment$/)
        ],
        resolve: {
            alias:{
                '@ant-design/icons/lib/dist$': resolve('./src/antd/icons.js')
            }
        }
    }
}

如下图:
在这里插入图片描述
注释写在图中,接着我们在src文件夹下创建antd文件夹,在antd文件夹下创建icons.js这里面就可以写一些我们需要的icon图表,如下图:
在这里插入图片描述
好的,我们再在命令行中输入npm run build,然后打开我们文件分析,如图:
在这里插入图片描述
可以看到这次只有846kb左右了,我们从一开始的3.75M1.81M再到846kbgzip压缩99kb,(3.75M → 99kb)已经优化了很多了,当然此时你去刷新页面,会发现没有星星组件了,如图:
在这里插入图片描述
那这是为什么呢?因为我们在自己写的icons.js中啥事还没做,输入如下代码,按需引入星星图标:

export {
    default as StarOutline
} from '@ant-design/icons/lib/outline/StarOutline'

如图所示:
在这里插入图片描述
这下再npm run serve重启下服务,星星组件就出来了:
在这里插入图片描述
然后我们再次在命令行中输入命令npm run build打包证明下看看icon组件是否被全部引入:
在这里插入图片描述
我们可以看到icon只有12kb大小。至此ant-design-vue icon的按需加载完成。

如果你觉得本文对你有帮助的话,请给我一个赞吧。如果有更好的解决方案还望评论告知,谢谢了,愿一起共同进步。

<think>嗯,用户想了解在Ant-Design-Vue中使用图标的方法。首先,我要回忆一下相关的文档和引用内容。根据提供的引用,引用[1]提到了安装Ant-Design-Vue引入样式,这可能和图标的使用有关。引用[2]中的示例代码展示了如何在a-tree组件中使用a-icon,并指定slot来替换默认图标,这说明可以通过slot来自定义图标。引用[3]则列出了基础组件的介绍,可能包含图标组件的说明。 接下来,我要整理图标使用的几种常见方式。Ant-Design-Vue的图标通常有两种使用方式:直接使用内置图标和自定义图标。根据版本的不同,可能还有不同的引入方式。比如,在1.x版本中,可能要单独安装@ant-design/icons-vue,而在2.x版本中可能已经内置了图标组件。 然后,用户可能要具体的代码示例,比如如何在组件引入和使用图标。例如,使用a-icon标签并指定type属性来显示内置图标。另外,按加载也是常见的求,用户可能想知道如何仅引入要的图标以减少包体积。此外,自定义图标的方法,比如使用slot或者替换默认图标,如引用[2]中的例子,可能要详细说明。 还要注意样式的引入,引用[1]中提到要在入口文件引入antd.css,否则图标可能无法显示样式。此外,主题配置可能影响图标的颜色和大小,这也是用户可能遇到的问题。 可能用户会遇到的问题包括图标不显示,这可能是由于没有正确引入样式或图标包,或者版本不兼容。要提醒用户检查安装的版本和引入方式是否正确。另外,在自定义图标时,slot的名称是否正确,以及是否在正确的组件中使用slot,这些都要注意。 最后,生成相关问题时,要考虑用户可能进一步想了解的内容,比如如何自定义图标颜色、大小,或者如何处理图标的事件交互,以及性能优化方面的按加载等。</think>### Ant-Design-Vue 图标使用教程 #### 一、图标基础使用 1. **引入图标组件** Ant-Design-Vue 1.x 单独安装图标库,2.x 已内置图标组件。若未安装,运行以下命令: ```bash npm install @ant-design/icons-vue --save ``` 在 Vue 文件中引入: ```javascript import { UserOutlined, HomeFilled } from '@ant-design/icons-vue'; ``` 2. **直接使用内置图标** 通过`<a-icon>`组件的`type`属性指定图标类型: ```html <a-icon type="search" /> <a-icon type="arrow-up" :rotate="45" /> ``` 支持动态属性如`rotate`(旋转角度)、`spin`(旋转动画)[^3]。 #### 二、按加载与自定义配置 1. **按加载图标** 修改`babel.config.js`配置,仅加载使用到的图标: ```javascript module.exports = { plugins: [ [ "import", { libraryName: "@ant-design/icons-vue", libraryDirectory: "es/icons", camel2DashComponentName: false } ] ] }; ``` 2. **替换组件默认图标** 如替换 Tree 组件的展开图标(参考引用[2]示例): ```html <a-tree> <a-icon slot="switchIcon" type="caret-down"/> <a-icon slot="FolderFolder" type="dropbox"/> </a-tree> ``` 通过`slot`属性覆盖特定场景的图标[^2]。 #### 三、自定义图标 1. **使用第三方图标库** 结合`<a-icon>`封装 SVG 图标: ```html <a-icon :component="MySvgIcon" /> ``` 其中`MySvgIcon`为自定义的 Vue 组件。 2. **主题色适配** 通过 CSS 覆盖默认样式: ```css .anticon { color: #1890ff; /* 主题色 */ font-size: 20px; } ```
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你华还是你华

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

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

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

打赏作者

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

抵扣说明:

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

余额充值