vue3+ts icon组件封装;icon在项目中的使用方式之 font class方式

418 阅读1分钟

vue3+ts 项目 全局 使用 阿里巴巴 icon 图标库

资源准备

01.png

  • 加入购物车

02.png

  • 打开购物车 ; 点击添加项目 或者 加入项目; 项目可新建

04.png

  • 进入项目后 点击 font class 然后下载本地 zip

05.png

  • 点击解压文件,这是解压好的文件的样子;

06.png

上号!!!vsc

  • 进入vue3 项目; 在src下的assets下创建 font 和 iconfonts 然后如图所示把文件放进去

07.png

  • src下创建 styles 然后把 iconfonts.css 放进去;再把该文件 引导 main.ts 中;

08.png

  • 打开iconfont.css文件;如图所示 修改文件的路径;

09.png

  • 封装 icon 组件;在src下的components下创建 index.ts

10.png

import type { App } from 'vue';
// 组件

// nav
import Nav from '@/components/nav';

// 组件集合
const components = [Icon, Nav];

// 抛出
export default {
    install(app: App) {
        components.map(item => app.use(item));
    }
};
  • src/components 创建 icon 文件夹 ;如图

11.png

  • src/components/icon/src/Icon.vue
<template>
    <i :class='`${iconFontAllName}`' :style="{ fontSize: `${size}rem`, color: color }"></i>
</template>

<script lang="ts" setup>

import { computed } from 'vue';
const props = defineProps({
    // icon 名称 必传 否则报错
    iconName: {
        type: String,
        required: true,
    },
    // icon 大小  单位rem 默认 1  
    size: {
        type: Number,
        default: 1
    },
    // icon 颜色  默认  粉色
    color: {
        type: String,
        default: "palevioletred"
    }
});
// 拼接 class
const iconFontAllName = computed(() => {
    if (props.iconName) {
        return `iconfont ${props.iconName}`
    }
});
</script>

  • src/components/icon/index.ts
import type { App } from 'vue';

import Icon from './src/Icon.vue';

export default {
    install(app: App) {
        app.component('m-icon', Icon);
    }
}
  • main.ts
import { createApp } from 'vue';
import App from './App.vue'
// 组件
import MUI from '@/components';
// 路由
import router from './router';
// icon 
import '@/assets/styles/iconfont.css';

const app = createApp(App);

app.use(router).use(MUI).;

app.mount('#app')

  • 调用: 改组件无需引入 icon 组件;因为 在components中定义的组件已经全部挂载到全局了;

12.png

<template>
    <div class="a">
        <m-icon :iconName="'icon-wode1'" :color="'#000000'"></m-icon>
        唱歌
    </div>
</template>

13.png

  • 🐓🐓打开新世界!

14.png


2015031411400386728.gif