VUE3.0+ANTDESIGN,含ant-design/icon-vue加载

本文详细介绍了如何在Vue3项目中按需加载Ant Design Vue库,以减少应用体积。首先,通过`vue create`创建Vue3项目,并安装必要依赖。然后,在`babel.config.js`中配置`babel-plugin-import`,实现按需加载组件和样式。对于图标,可以通过全局调用或组件内引入`ant-design/icons-vue`。此外,还提供了手动引入组件和样式的示例。这种方法有助于优化项目的性能和加载速度。

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

npm install -g @vue/cli@next
vue create vueapp //选择vue3
cd vueapp
npm i --save ant-design-vue@next  //测试版,稳定版好像不正常工作
npm i babel-plugin-import --dev //可能已默认安装
npm i @ant-design/icons-vue --dev  //vue3.0 icon组件安装

一、全面加载Antd (不含 icon)

main.js:

import {createApp} from 'vue'
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/antd.css';
import App from './App.vue'

createApp(App)
    .use(Antd) 
    .mount('#app')

二、按需加载,减少体积

1 使用 babel-plugin-import(推荐)。

babel.config.js中加入plugins配置段

// .babelrc or babel-loader option
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  "plugins": [
    ["import", { "libraryName": "ant-design-vue", "libraryDirectory": "es", "style": "css" }] // `style: true` 会加载 less 文件
  ]
}

(1)全局调用,无加加载icon

main.js: //加在这里面,可以在其它所有vue中调用

import { DatePicker } from 'ant-design-vue'; 

createApp(App)
    .use(DatePicker)  
    .mount('#app')

hello.vue:

<a-DatePicker />


(2)组件调用(含ant-design/icon-vue加载)

hello.vue:

<template>   
  <DatePicker />
  <FilterOutlined  />
</template>
<script> 
import {DatePicker} from 'ant-design-vue'
import { FilterOutlined } from '@ant-design/icons-vue';

export default {
  name: 'App',
  components: {
  	FilterOutlined,
    DatePicker
  }
}
</script>

2.手动引入

import DatePicker from 'ant-design-vue/lib/date-picker'; // 加载 JS
import 'ant-design-vue/lib/date-picker/style/css'; // 加载 CSS

createApp(App)
    .use(DatePicker)  
    .mount('#app')
// import 'ant-design-vue/lib/date-picker/style';         // 加载 LESS
### Vue3Ant-Design-Vue Tree 组件的自定义用法 在 Vue3 项目中使用 `ant-design-vue` 的 Tree 组件可以实现丰富的树形结构展示功能。为了更好地定制化这些组件,可以通过插槽 (slot) 和属性配置来自定义节点图标和其他样式。 #### 安装并引入 Ant-Design-Vue 首先,在项目根目录下执行命令安装所需的库: ```bash npm install ant-design-vue@next ``` 接着,在入口文件或按需加载的地方导入 Tree 组件及相关依赖项[^1]。 #### 基础设置与数据准备 创建一个基础的数据源用于渲染树状视图,并通过 `v-bind:tree-data` 或缩写形式绑定到组件上。同时指定替换字段名以便于更灵活地映射 JSON 数据中的键值对关系[^2]。 ```javascript const treeNodeData = [ { id: &#39;0-0&#39;, label: &#39;Parent Node 1&#39;, children: [ { id: &#39;0-0-0&#39;, label: &#39;Leaf Node 1&#39; }, { id: &#39;0-0-1&#39;, label: &#39;Leaf Node 2&#39; } ] }, // 更多节点... ]; ``` #### 使用具名插槽添加自定义图标 对于想要修改默认样式的部分,比如展开/折叠按钮或是特定类型的叶子结点前缀标记等,则可通过提供相应名称的 `<template>` 来覆盖原有模板内容。下面的例子展示了如何为不同种类的子元素分配不同的 FontAwesome 图标作为前置装饰。 ```html <template> <a-tree :tree-data="treeNodeData" :replace-fields="{ children: &#39;children&#39;, title: &#39;label&#39;, key: &#39;id&#39; }"> <!-- 展开箭头 --> <template #switcherIcon><icon-font type="caret-right"/></template> <!-- 文件夹类型节点 --> <template v-slot:customTitle="{ node }"> <span v-if="node.isFolder"> <icon-font type="folder"/> {{ node.label }} </span> <span v-else> <icon-font type="file"/> {{ node.label }} </span> </template> <!-- 特定ID的节点 --> <template #[`${specialNodeId}`]="{ node }"> <icon-font type="star"/> Special Item: {{ node.label }} </template> </a-tree> </template> ``` 注意上述代码片段里使用的 `#` 符号是 Vue3 对应旧版 scoped slots (`v-slot`) 的简化语法;而 `${...}` 表达式允许动态决定要应用哪个插槽位置。 #### 功能增强:拖拽支持与事件处理 为了让用户体验更加友好,还可以开启拖放交互特性并通过监听器捕获用户的操作行为作出响应。这通常涉及到注册回调函数至如 `@drop`, `@right-click` 这样的钩子上来完成逻辑控制。 ```html <a-tree draggable @drop="onDropHandler"></a-tree> <script setup lang="ts"> import { defineComponent, ref } from &#39;vue&#39;; export default defineComponent({ methods: { onDropHandler(info) { console.log(&#39;Dropped:&#39;, info); // 实现具体的移动逻辑 } } }); </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值