# question-binary-ui
**Repository Path**: super-developer_1/question-binary-ui
## Basic Information
- **Project Name**: question-binary-ui
- **Description**: 兼容vue2、vue3组件库,分不同的打包文件
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-02-12
- **Last Updated**: 2026-02-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ul-question-test-ui
一个同时支持 Vue 2 和 Vue 3 的二元UI组件库,专注于提供高质量的问题测试相关组件。
## ✨ 功能特性
- 🌐 同时支持 Vue 2 和 Vue 3
- 📦 基于 `@opentiny/vue` 构建,提供一致的UI体验
- 🎯 专注于问题测试场景的组件开发
- 📝 支持富文本编辑
- 📎 支持文件上传和管理
- 🎨 现代化的设计风格
## 📦 安装
### Vue 3 环境
```bash
npm install ul-question-test-ui
npm install @opentiny/vue@3
```
### Vue 2 环境
```bash
npm install ul-question-test-ui
npm install @opentiny/vue@2
# Vue 2 版本低于 2.7 时,需要额外安装
npm install @vue/composition-api
```
## 🚀 快速开始
### Vue 3 示例
```javascript
import { createApp } from 'vue'
import App from './App.vue'
import MyVueUi from 'ul-question-test-ui/vue3'
import 'ul-question-test-ui/vue3-style'
const app = createApp(App)
app.use(MyVueUi)
app.mount('#app')
```
### Vue 2 示例
```javascript
import Vue from 'vue'
import App from './App.vue'
import MyVueUi from 'ul-question-test-ui/vue2' // 或 'ul-question-test-ui'
import 'ul-question-test-ui/vue2-style'
Vue.use(MyVueUi)
new Vue({
render: h => h(App)
}).$mount('#app')
```
## 📋 组件列表
### QuestionType 组件
#### Choice (单选/多选题组件)
**属性**
| 属性名 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| oriQuestion | Object | - | 原始问题数据 |
| mode | Number | 1 | 模式:1-编辑,2-预览,3-学生答题 |
| showAnswer | Boolean | false | 是否显示答案 |
| needRichText | Boolean | true | 是否需要富文本编辑 |
**事件**
| 事件名 | 说明 | 参数 |
|--------|------|------|
| save | 保存问题数据 | questionData |
| cancel | 取消编辑 | - |
| submit | 提交答案 | questionData |
**示例**
```vue
```
## 🔧 开发指南
### 项目结构
```
├── examples/ # 示例项目
│ ├── vue2-demo/ # Vue 2 示例
│ └── vue3-demo/ # Vue 3 示例
├── packages/ # 核心包
│ ├── lib/ # 组件库源码
│ ├── build-v2/ # Vue 2 构建配置
│ └── build-v3/ # Vue 3 构建配置
├── package.json # 项目配置
└── pnpm-workspace.yaml # Workspace 配置
```
### 开发环境
```bash
# 安装依赖
pnpm install
# 运行 Vue 3 示例
cd examples/vue3-demo
pnpm dev
# 运行 Vue 2 示例
cd examples/vue2-demo
pnpm dev
```
## 🏗️ 构建说明
### 构建组件库
```bash
# 构建 Vue 3 版本
pnpm run build:v3
# 构建 Vue 2 版本
pnpm run build:v2
# 同时构建两个版本
pnpm run build
```
### 构建注意事项
- 构建时需要排除相关(Vue 2、Vue 3)的 package.json
- 删除 pnpm-lock 防止 Vue 2、3 依赖相互影响打包产物
## 📦 包信息
### 主要依赖
- `vue-demi`: ^0.14.10
- `@opentiny/vue`: >=2.25.0 || >=3.25.0
- `js-cookie`: ^3.0.5
- `mediaelement`: ^4.2.16
- `ulearning-obs`: 0.0.54
- `sass`: ^1.94.0
### 导出配置
```javascript
{
".": {
"import": "./dist/vue2/ul-question-test-ui.es.js",
"require": "./dist/vue2/ul-question-test-ui.cjs.js"
},
"./vue2": {
"import": "./dist/vue2/ul-question-test-ui.es.js",
"require": "./dist/vue2/ul-question-test-ui.cjs.js"
},
"./vue3": {
"import": "./dist/vue3/ul-question-test-ui.es.js",
"require": "./dist/vue3/ul-question-test-ui.umd.js"
},
"./vue2-style": "./dist/vue2/build-v2.css",
"./vue3-style": "./dist/vue3/build-v3.css"
}
```
### 使用组件库注意事项
- 确保在 Vue 2 项目中安装了 `@vue/composition-api` 插件(Vue 2 版本低于 2.7 时)
- 在 Vue 3 项目中直接使用 `import { Choice } from 'ul-question-test-ui/vue3'` 即可
- 目前只试验了vue2版本作用于内部课堂项目(使用webpack4,需要在配置中添加
- transpileDependencies: [
'quill',
/@opentiny[\\/]/
],)防止编译污染
## 🤝 贡献指南
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request