news 2026/4/23 12:57:34

Harmony开发中考试组件库怎么使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Harmony开发中考试组件库怎么使用

考试组件库 (kaoshimuban)

一个功能完整的HarmonyOS考试组件库,支持单选题、多选题、判断题和填空题四种题型,可快速构建考试界面。

功能特性

  • 单选题- 支持单选题的渲染和交互,自动互斥选择
  • 多选题- 支持多选题的渲染和交互,可选择多个答案
  • 判断题- 支持判断题(正确/错误)的渲染和交互
  • 填空题- 支持填空题的渲染,支持多个填空
  • 自动评分- 内置评分逻辑,支持自定义每题分值
  • 结果统计- 提供详细的考试结果,包括得分、正确率等

效果预览

考试界面结果页面
支持四种题型混合展示显示得分、正确率、错题解析

安装方式

方式一:ohpm安装(推荐)

ohpminstallkaoshimuban

或使用简写命令:

ohpm i kaoshimuban

方式二:本地引用

  1. library目录复制到你的项目中
  2. oh-package.json5中添加依赖:
{ "dependencies": { "kaoshimuban": "file:../library" } }

方式三:HAR包引用

  1. 编译生成HAR包:hvigorw assembleHar -p module=library
  2. 将HAR包放入项目的libs目录
  3. oh-package.json5中添加依赖:
{ "dependencies": { "kaoshimuban": "file:./libs/kaoshimuban.har" } }

快速开始

1. 导入组件和类型

import{ExamComponent,ExamData,ExamResult,QuestionType,QuestionData}from'kaoshimuban';

2. 准备考试数据

privatecreateExamData():ExamData{constquestions:QuestionData[]=[// 单选题newQuestionData('q1',// 题目IDQuestionType.SINGLE,// 题目类型'HarmonyOS是由哪家公司开发的?',// 题干'华为',// 正确答案10,// 分值['华为','小米','苹果','谷歌']// 选项),// 多选题newQuestionData('q2',QuestionType.MULTIPLE,'以下哪些是HarmonyOS的核心特性?(多选)',['分布式架构','微内核设计','全场景覆盖'],// 正确答案数组15,['分布式架构','微内核设计','全场景覆盖','仅支持手机']),// 判断题newQuestionData('q3',QuestionType.TRUE_FALSE,'ArkTS是HarmonyOS应用开发的主要编程语言。',true,// 正确答案:true或false5),// 填空题newQuestionData('q4',QuestionType.FILL_BLANK,'HarmonyOS的UI框架名称是____。',['ArkUI'],// 正确答案数组10,undefined,// 填空题无选项1// 填空数量)];returnnewExamData('HarmonyOS 基础知识测试',// 考试标题questions,// 题目列表40,// 总分30// 时间限制(分钟));}

3. 使用组件

@Entry@Componentstruct ExamPage{@StateexamData:ExamData=this.createExamData();@StateshowResult:boolean=false;@StateexamResult:ExamResult|null=null;build(){Column(){if(this.showResult&&this.examResult!==null){// 显示考试结果this.ResultView()}else{// 显示考试界面ExamComponent({examData:this.examData,onSubmit:(result:ExamResult)=>{this.examResult=result;this.showResult=true;}})}}.width('100%').height('100%')}@BuilderResultView(){Column(){Text(`得分:${this.examResult!.score}/${this.examResult!.totalPoints}`)Text(`正确:${this.examResult!.correctCount}/${this.examResult!.totalCount}`)Button('重新考试').onClick(()=>{this.showResult=false;this.examResult=null;})}}}

API 文档

ExamComponent

主考试组件,用于渲染完整的考试界面。

属性类型必填说明
examDataExamData考试数据(需使用@ObjectLink)
onSubmit(result: ExamResult) => void提交回调

QuestionData

题目数据类,使用构造函数创建。

newQuestionData(id:string,// 题目IDtype:QuestionType,// 题目类型content:string,// 题干内容correctAnswer:string|string[]|boolean,// 正确答案points:number,// 分值options?:string[],// 选项(单选/多选题)blankCount?:number// 填空数量(填空题))

ExamData

考试数据类,使用构造函数创建。

newExamData(title:string,// 考试标题questions:QuestionData[],// 题目列表totalPoints:number,// 总分timeLimit?:number// 时间限制(分钟))

QuestionType

题目类型枚举。

说明
QuestionType.SINGLE单选题
QuestionType.MULTIPLE多选题
QuestionType.TRUE_FALSE判断题
QuestionType.FILL_BLANK填空题

ExamResult

考试结果类。

属性类型说明
answersUserAnswer[]所有答案
scorenumber得分
totalPointsnumber总分
correctCountnumber正确题数
totalCountnumber总题数

辅助函数

// 判断答案是否正确isAnswerCorrect(question:QuestionData,userAnswer:any):boolean

题型说明

单选题 (SINGLE)

  • 显示单选按钮样式
  • 点击选项自动取消之前的选择
  • 正确答案为单个字符串

多选题 (MULTIPLE)

  • 显示复选框样式
  • 可同时选择多个选项
  • 正确答案为字符串数组
  • 评分时忽略选择顺序

判断题 (TRUE_FALSE)

  • 固定显示"正确"和"错误"两个选项
  • 正确答案为布尔值truefalse

填空题 (FILL_BLANK)

  • 根据blankCount显示对应数量的输入框
  • 正确答案为字符串数组
  • 评分时忽略大小写和首尾空格

样式定制

组件使用了以下颜色方案:

元素颜色
单选题标签#1890ff (蓝色)
多选题标签#52c41a (绿色)
判断题标签#faad14 (橙色)
填空题标签#722ed1 (紫色)
正确选中#52c41a (绿色)
错误选中#ff4d4f (红色)
提交按钮#1890ff (蓝色)

注意事项

  1. ExamData需要使用@State装饰器声明
  2. 传递给ExamComponent时,examData会通过@ObjectLink绑定
  3. 多选题答案比较时会忽略顺序
  4. 填空题答案比较时会忽略大小写和首尾空格

许可证

Apache-2.0

更新日志

v1.0.0 (2025-12-31)

  • 初始版本发布
  • 支持单选题、多选题、判断题、填空题
  • 内置自动评分功能
  • 提供考试结果统计
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:37:57

钉钉的AI赋能办公

一、 钉钉AI的核心形态:从“指令”到“托管”钉钉的AI赋能主要经历了从 Chat(对话) 到 Agent(助理),再到现在的 Workflow(流转) 三个阶段。1.1 个人级:你的“数字双胞胎”…

作者头像 李华
网站建设 2026/4/18 6:29:54

‌IoT设备测试的硬件与软件集成实操指南

一、集成测试的核心挑战物联网设备测试面临三重维度耦合:‌硬件层‌:传感器精度、功耗波动、通信模块稳定性‌固件层‌:嵌入式系统实时性、OTA升级兼容性‌云平台层‌:数据管道延迟、API鉴权机制、异常恢复能力典型案例&#xff1…

作者头像 李华
网站建设 2026/4/23 10:50:15

想入局 2026 网络安全?前景预判 + 入行指南 + 系统学习路径全梳理

一、行业发展现状:风口上的黄金赛道 2026年的网络安全行业已从 “被动防御” 迈入 “主动对抗” 的全新阶段,三大核心驱动力让行业持续保持高速增长。 政策层面,《网络安全法》《数据安全法》的刚性约束下,从政务、金融到医疗、…

作者头像 李华
网站建设 2026/4/23 10:50:02

基于单片机的空气质量检测系统的设计

第二章 系统方案设计 2.1 系统总体方案 本设计包含数据采集部分、数据处理部分和数据传输部分。数据采集部分采用了气体浓度检测传感器和ADC转换芯片设计,将物理量转换成输出稳定的数字信号,提升精准度。系统使用的温湿度传感器芯片直接测量温湿度。核心…

作者头像 李华
网站建设 2026/4/23 12:24:50

羽毛球思维养成课:韩宁波的战术意识培养术

羽毛球思维养成课:韩宁波的战术意识培养术 在羽毛球竞技领域,战术意识是决定比赛胜负的核心要素。国家二级运动员、资深战术教练韩宁波,通过"观察-分析-执行"三维训练体系,构建了独特的战术意识培养术。该体系融合数据…

作者头像 李华
网站建设 2026/4/23 10:48:46

耐心是最好的天赋:韩宁波的教学相长之道

韩宁波的教学相长之道:耐心为基,以热爱与专业共育羽球未来一、耐心:从技术纠偏到心理建设的基石韩宁波的教学耐心体现在对技术细节的极致追求与对学员心理的深度理解。面对学员技术瓶颈,他摒弃“填鸭式”指导,转而通过…

作者头像 李华