嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
Vue-Amazing-Ui是一个基于Vue.js的开源组件库,旨在为开发者提供一系列实用、美观的组件,助力快速构建出色的用户界面。该项目目前已在Github上开源,受到了许多开发者的关注。
Vue Amazing UI采用了 Vue@3.5.13
+ TypeScript@5.7.3
+ Vite@6.0.8
+ Less@4.2.2
的强大技术组合来实现。这意味着它在现代前端开发的框架下,能够充分利用这些技术的优势,为开发者提供稳定、高效的组件。
目前,这个组件库共包含了64个基础UI组件以及16个工具函数,并且还在持续探索更新中。这丰富的组件和函数资源,几乎涵盖了我们在前端开发中常见的各种需求。
值得一提的是,这些组件和函数全都支持 treeshaking
。这一特性对于优化项目的打包体积非常有帮助,它能够确保只有实际使用到的代码才会被打包,避免了冗余代码的产生,提高了项目的性能。
整个Vue Amazing UI全量使用 TypeScript
编写,这使得它能够与开发者的 TypeScript
项目无缝衔接。对于那些已经在使用 TypeScript
的团队或者开发者来说,这无疑是一个很大的优势,可以减少很多在类型定义和兼容性方面的麻烦。
所有组件均采用单文件组件(SFC)风格,这种风格的好处是组件可以独立使用,具有很高的灵活性。每个组件都像是一个独立的小模块,开发者可以根据自己的需求轻松地在项目中引入和使用。
安装Vue Amazing UI非常简单,你可以使用各种流行的包管理器。例如:
pnpm add vue - amazing - ui
npm install vue - amazing - ui
yarn add vue - amazing - ui
bun add vue - amazing - ui
这种方式会失去 tree - shaking
的能力,导致打包后存在冗余代码。具体操作如下:
import { createApp } from 'vue'
import App from './App.vue'
import VueAmazingUI from 'vue - amazing - ui'
import 'vue - amazing - ui/css'
const app = createApp(App)
app.use(VueAmazingUI)
app.mount('#app')
这种情况下,只有导入的组件才会被打包。例如,我们要使用 Button
和 Tag
组件:
import { createApp } from 'vue'
import App from './App.vue'
import { Button, Tag } from 'vue - amazing - ui'
import 'vue - amazing - ui/es/button/Button.css'
import 'vue - amazing - ui/es/tag/Tag.css'
const app = createApp(App)
app.use(Button).use(Tag)
app.mount('#app')
同样,只有导入的组件才会被打包。在 <script setup lang = "ts">
中导入组件并在 <template>
中使用:
<script setup lang="ts">
import { Button, Tag } from 'vue - amazing - ui'
import 'vue - amazing - ui/es/button/Button.css'
import 'vue - amazing - ui/es/tag/Tag.css'
</script>
<template>
<Button >button</Button>
<Tag>tag</Tag>
</template>
我们可以使用 vite - plugin - style - import
插件来按需自动引入组件样式。首先安装插件:
pnpm add vite - plugin - style - import - D
npm install vite - plugin - style - import - D
yarn add vite - plugin - style - import - D
bun add vite - plugin - style - import - D
然后在 vite.config.ts
中进行配置:
// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin - vue'
import { createStyleImportPlugin } from 'vite - plugin - style - import'
// 自动引入组件样式
import { VueAmazingUIStyleResolve } from 'vue - amazing - ui'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
// imports component library styles on demand
createStyleImportPlugin({
resolves: [
VueAmazingUIStyleResolve()
]
})
]
})
这样,无论是全局部分注册还是局部注册组件,都无需再额外引入组件样式。
使用 unplugin - vue - components
插件来按需自动加载组件。先安装插件:
pnpm add unplugin - vue - components - D
npm install unplugin - vue - components - D
yarn add unplugin - vue - components - D
bun add unplugin - vue - components - D
然后在 vite.config.ts
中配置:
// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin - vue'
import Components from 'unplugin - vue - components/vite'
// vue - amazing - ui按需引入
import { VueAmazingUIResolver } from 'vue - amazing - ui'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
Components({
resolvers: [ // auto import components from VueAmazingUI
VueAmazingUIResolver()
]
})
]
})
配置好后,就可以在模板中直接使用 vue - amazing - ui
的所有组件,例如:
<template>
<Button>button</Button>
<Tag>tag</Tag>
</template>
所有类型均可直接从 vue - amazing - ui
中引入使用,无需任何额外安装。例如:
<script setup lang="ts">
import type { ButtonProps } from 'vue - amazing - ui'
const shape = ref<ButtonProps['shape']>('default')
</script>
<template>
<Button :shape ="shape">button</Button>
</template>
工具函数的使用也非常方便,在 <script setup lang = "ts">
中直接导入即可。例如:
<script setup lang="ts">
import {
dateFormat,
formatNumber,
rafTimeout,
cancelRaf,
throttle,
debounce,
add,
downloadFile,
toggleDark,
useEventListener,
useMutationObserver,
useScroll,
useFps,
useMediaQuery,
useResizeObserver,
useSlotsExist
} from 'vue - amazing - ui'
</script>
Alert
组件。例如,当用户输入错误的登录信息时,弹出一个 Alert
组件,显示“用户名或密码错误,请重新输入”的提示信息。Avatar
组件可以用来显示用户的头像。它可以接受不同的图片源,并且可以根据设计需求设置不同的形状、大小等样式。BackTop
组件就非常有用。用户点击这个组件,页面就会平滑地滚动到顶部。Carousel
组件可以用来轮播展示图片或者广告内容。它可以设置轮播的速度、切换效果等,吸引用户的注意力。Cascader
组件就派上用场了。它可以清晰地展示层级关系,方便用户操作。Checkbox
组件是很好的选择。Collapse
组件。例如,在产品详情页面,有详细的产品参数、使用说明等内容,使用折叠面板可以让页面更加简洁,用户可以根据自己的需求展开查看。ColorPicker
组件能够让用户方便地选择自己想要的颜色。Countdown
组件可以清晰地显示剩余时间,给用户一种紧迫感。DatePicker
组件可以让用户方便地选择日期。Dialog
组件就可以满足需求。Dialog
,但它是从侧边滑出的形式。在一些需要展示更多操作或者详细信息的场景,如在手机端的菜单或者设置页面,可以使用 Drawer
组件。Ellipsis
组件可以将文本进行省略显示,并且可以设置鼠标悬停时显示完整内容等效果。Empty
组件可以显示一些提示信息和图标,告知用户没有找到相关内容。Flex
组件可以根据不同的屏幕尺寸和布局需求,灵活地调整元素的排列方式和比例关系。FloatButton
可以以浮动的形式显示在页面上,方便用户操作。GradientText
组件来实现渐变的文字效果,增加视觉吸引力。Grid
组件可以将页面划分为规则的网格,方便进行元素的排列和布局,常用于展示图片、商品等内容。Input
组件是必不可少的,它可以接受用户的输入内容。InputNumber
组件可以限制输入内容为数字,并且可以设置数字的范围、步长等属性。List
组件可以以列表的形式展示数据,并且可以设置列表项的样式、排序等。LoadingBar
组件可以显示加载的进度,让用户知道操作正在进行中。Message
组件可以在页面的某个固定位置显示这些信息。Dialog
,用于在页面上弹出一个模态的窗口,显示一些重要信息或者进行操作确认等。Notification
组件可以以通知的形式显示在页面的某个角落或者在系统通知栏中。NumberAnimation
组件可以以动画的形式展示数值的变化过程,增加视觉效果。Pagination
组件可以方便地实现分页功能,用户可以切换不同的页码查看数据。Dialog
和 Popover
的结合,当用户进行某个操作时,如删除操作,会弹出一个确认框,并且可以在确认框中显示一些提示信息。QRCode
组件可以方便地生成和显示二维码。Radio
组件是合适的选择。Rate
组件可以让用户方便地进行评分操作。Result
组件可以显示操作的结果信息。Scrollbar
组件可以提供自定义的滚动条样式,并且可以设置滚动的速度、滚动条的显示方式等。Segmented
组件可以实现这种分段控制的功能。Select
组件可以让用户从多个选项中选择一个或者多个,并且可以设置选项的样式、搜索功能等。Skeleton
组件可以显示一个类似骨架的占位符,让用户知道页面正在加载内容,而不是一片空白。Slider
组件可以满足需求。以下是Vue-Amazing-Ui与其他同类项目的对比:
Vuetify是一个完全基于Vue.js的组件库,提供了丰富的组件和布局。与Vue-Amazing-Ui相比,Vuetify的组件更为全面,但自定义主题稍显复杂。
Element UI是饿了么团队推出的一款Vue组件库,其特点是轻量、简洁。与Vue-Amazing-Ui相比,Element UI的组件数量较少,但质量较高。
Ant Design Vue是蚂蚁金服推出的Vue组件库,具有完善的组件和丰富的功能。与Vue-Amazing-Ui相比,Ant Design Vue的文档和示例更为详细。
Vue-Amazing-Ui是一款具有特色的Vue组件库,提供了丰富的组件和强大的自定义能力。无论是企业级项目还是个人项目,Vue-Amazing-Ui都能满足你的需求。如果你正在寻找一款简洁、易用的Vue组件库,那么Vue-Amazing-Ui绝对值得尝试。
https://github.com/themusecatcher/vue-amazing-ui
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。