Appearance
components
QXS-BNS 提供了丰富的 Vue 3 组件库,涵盖桌面端和移动端应用场景。
📦 快速安装
bash
# 安装组件库
pnpm add @qxs-bns/components🎯 组件分类
桌面端组件
基于 Element Plus 增强的桌面端组件,适用于管理后台、数据展示等场景:
| 组件 | 说明 | 依赖 |
|---|---|---|
| QxsDataChart | 数据图表组件 | Element Plus, ECharts |
| QxsFileUpload | 文件上传组件 | Element Plus |
| QxsImageUpload | 图片上传组件 | Element Plus |
| QxsTinyMceEditor | 富文本编辑器 | TinyMCE |
| QxsSubjectList | 学科列表组件 | Element Plus |
移动端组件
轻量级移动端组件,不依赖 Element Plus,适用于 H5 页面、移动端应用:
| 组件 | 说明 | 依赖 |
|---|---|---|
| QxsFixedActionBar | 固定操作栏 | 无 |
| QxsPhotoCropTool | 图片裁剪工具 | 无 |
通用组件
适用于桌面端和移动端的通用组件:
| 组件 | 说明 | 依赖 |
|---|---|---|
| QxsIcon | 图标组件 | 无 |
vue
<template>
<div class="mobile-page">
<!-- 固定操作栏 -->
<QxsFixedActionBar :actions="actions" />
<!-- 图片裁剪工具 -->
<QxsPhotoCropTool
:src="imageSrc"
@crop="handleCrop"
/>
</div>
</template>
<script setup lang="ts">
import { QxsFixedActionBar, QxsPhotoCropTool } from '@qxs-bns/components'
const actions = [
{ text: '保存', type: 'primary', onClick: () => save() }
]
const handleCrop = (result) => {
console.log('裁剪结果:', result)
}
</script>🖥️ 桌面端使用
桌面端组件基于 Element Plus,提供丰富的功能:
vue
<template>
<div class="desktop-page">
<!-- 数据图表 -->
<QxsDataChart
:data="chartData"
type="line"
:options="chartOptions"
/>
<!-- 文件上传 -->
<QxsFileUpload
:multiple="true"
:accept="'.jpg,.png,.pdf'"
@success="handleUploadSuccess"
/>
<!-- 富文本编辑器 -->
<QxsTinyMceEditor
v-model="content"
:config="editorConfig"
/>
</div>
</template>
<script setup lang="ts">
import {
QxsDataChart,
QxsFileUpload,
QxsTinyMceEditor
} from '@qxs-bns/components'
const chartData = ref([])
const content = ref('')
const editorConfig = {
height: 400,
plugins: 'link image code'
}
</script>🎯 可用组件列表
移动端友好组件
| 组件名 | 说明 | 文档 |
|---|---|---|
| QxsFixedActionBar | 固定操作栏 | ✅ |
| QxsPhotoCropTool | 图片裁剪工具 | ✅ |
桌面端组件
| 组件名 | 说明 | 文档 |
|---|---|---|
| QxsDataChart | 数据图表 | ✅ |
| QxsFileUpload | 文件上传 | ✅ |
| QxsImageUpload | 图片上传 | ✅ |
| QxsTinyMceEditor | 富文本编辑器 | ✅ |
| QxsSubjectList | 主题列表 | ✅ |
| QxsAnswerContainer | 答案容器 | ✅ |
工具库
🛠️ 工具函数 (Utils)
| 工具名 | 说明 | 文档 |
|---|---|---|
| ArgoLog | 日志工具 | ✅ |
| Storage | 存储工具 | ✅ |
| DateTransfer | 日期转换 | ✅ |
| Device | 设备检测 | ✅ |
| FileOperations | 文件操作 | ✅ |
| OssUploader | OSS 上传 | ✅ |
| UseApi | API 请求 | ✅ |
| Watermark | 水印工具 | ✅ |
🪝 Hooks
| Hook 名 | 说明 | 文档 |
|---|---|---|
| usePagination | 分页管理 | ✅ |
| useRequest | 请求管理 | 🚧 |
| useForm | 表单管理 | 🚧 |
| useTable | 表格管理 | 🚧 |
📋 指令 (Directives)
| 指令名 | 说明 | 文档 |
|---|---|---|
| v-copy | 复制指令 | ✅ |
| v-debounce | 防抖指令 | ✅ |
| v-lazy-load | 懒加载指令 | ✅ |
| v-rich-overflow | 富文本溢出 | ✅ |
| v-safe-html | 安全 HTML | ✅ |
| v-slide-in | 滑入动画 | ✅ |
| v-waves | 波纹效果 | ✅ |
🎨 图标 (Icons)
| 组件/类型 | 说明 | 文档 |
|---|---|---|
| QxsIcon | 图标组件 | ✅ |
| 基础图标 | 基础图标集 | ✅ |
| 图标展示 | 所有图标预览 | ✅ |
| 开发说明 | 图标开发指南 | ✅ |
使用方式
按需引入(推荐)
typescript
// 桌面端组件(依赖 Element Plus)
import { QxsDataChart, QxsFileUpload } from '@qxs-bns/components'
// 移动端组件(不依赖 Element Plus)
import { QxsFixedActionBar, QxsPhotoCropTool } from '@qxs-bns/components'
// 工具函数
import { ArgoLog, Storage } from '@qxs-bns/utils'
// Hooks
import { usePagination } from '@qxs-bns/hooks'
// 指令
import { vDebounce, vWaves } from '@qxs-bns/directives'移动端专用引入
typescript
// 只引入移动端友好的组件
import {
QxsFixedActionBar,
QxsPhotoCropTool,
} from '@qxs-bns/components'
// 样式
import '@qxs-bns/components/theme-chalk/src/fixed-action-bar.scss'
import '@qxs-bns/components/theme-chalk/src/photo-crop-tool.scss'依赖说明
核心依赖
- Vue 3: 组件库基础框架
- @vueuse/core: Vue 工具库
可选依赖
- Element Plus: 桌面端 UI 组件库
- ECharts: 图表库
- TinyMCE: 富文本编辑器
- Lodash: 工具函数库
智能依赖管理
QXS-BNS 使用智能依赖管理系统,只有真正需要的依赖才会被加载:
- 移动端组件不会加载 Element Plus
- 图表组件才会加载 ECharts
- 编辑器组件才会加载 TinyMCE
详见 依赖管理 文档。
浏览器支持
| 浏览器 | 版本 |
|---|---|
| Chrome | >= 64 |
| Firefox | >= 63 |
| Safari | >= 12 |
| Edge | >= 79 |
| 移动端 Safari | >= 12 |
| 移动端 Chrome | >= 64 |