【教案生成平台】实战教程四:开发所见即所得的在线试卷编辑器

简介: 本试卷编辑器基于Vue实现,支持拖拽排序、动态题型组件渲染(单选/简答等),实时A4预览,并通过html2canvas+jsPDF导出高清PDF。数据模型清晰,扩展性强,真正实现所见即所得的高效出卷体验。

AI 驱动的智能备课助手。一键生成标准教案、配套试题及PPT课件大纲。支持手写体试卷排版、自动出题、以及 Word/PDF/PPTX 多格式导出,让教师备课更高效、更轻松。

1. 场景分析

试卷编辑的核心需求是:灵活的题型组合精确的打印排版
核心技术点:

  • 动态组件 (Component :is)
  • 拖拽排序 (可选)
  • HTML 转 PDF (html2canvas + jspdf)

2. 试卷数据模型

试卷由“大题”(Sections)和“小题”(Questions)组成。

const examPaper = ref({
   
  title: "2024年期末考试试卷",
  sections: [
    {
   
      name: "一、单选题",
      scorePerQuestion: 2,
      questions: [
        {
   
          type: "single_choice",
          stem: "Vue的作者是?",
          options: ["尤雨溪", "Facebook", "Google"],
        },
      ],
    },
    // ... 其他题型
  ],
});

3. 组件化题目渲染 (QuestionItem.vue)

为了支持扩展更多题型,我们将题目渲染封装为组件。

<template>
  <div class="question-item">
    <div class="q-stem">
      <span class="q-no">{
  { index + 1 }}.</span>
      <input v-model="question.stem" placeholder="输入题干..." />
    </div>

    <!-- 单选题渲染逻辑 -->
    <div v-if="type === 'single_choice'" class="options-area">
       <div v-for="(opt, i) in question.options" :key="i">
          <input type="radio" disabled />
          <input v-model="question.options[i]" />
       </div>
    </div>

    <!-- 简答题渲染逻辑 -->
    <div v-else-if="type === 'essay'" class="essay-area">
       <div class="blank-lines">______________________</div>
    </div>
  </div>
</template>

4. 试卷排版与预览

编辑器右侧应实时显示“A4纸”效果。
使用 CSS 模拟 A4 纸尺寸:

.preview-page {
   
  width: 210mm;
  min-height: 297mm;
  padding: 20mm;
  background: white;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  margin: 0 auto;
}

5. 导出为高清 PDF

将网页变为 PDF 的难点在于分页截断。为了简化,我们先实现生成长图 PDF。

import html2canvas from "html2canvas";
import jsPDF from "jspdf";

const exportPDF = async () => {
   
  const element = document.getElementById("exam-preview"); // 获取预览 DOM

  // 1. 转为 Canvas
  const canvas = await html2canvas(element, {
    scale: 2 }); // 2倍缩放保证清晰度

  // 2. 转为图片数据
  const imgData = canvas.toDataURL("image/png");

  // 3. 放入 PDF
  const pdf = new jsPDF("p", "mm", "a4");
  const imgWidth = 210;
  const imgHeight = (canvas.height * imgWidth) / canvas.width;

  pdf.addImage(imgData, "PNG", 0, 0, imgWidth, imgHeight);
  pdf.save("exam.pdf");
};

在线体验

演示链接: https://www.ytecn.com/teacher/
git链接: https://github.com/tcshowhand/teacher/

总结

本模块通过 Vue 的数据驱动特性,让复杂的试卷编辑变得像搭积木一样简单。所见即所得的模式消除了传统 Word 排版错乱的烦恼。

相关文章
|
10天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
|
4天前
|
JSON API 数据格式
OpenCode入门使用教程
本教程介绍如何通过安装OpenCode并配置Canopy Wave API来使用开源模型。首先全局安装OpenCode,然后设置API密钥并创建配置文件,最后在控制台中连接模型并开始交互。
1912 6
|
12天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
1902 18
|
10天前
|
人工智能 JavaScript 前端开发
【2026最新最全】一篇文章带你学会Cursor编程工具
本文介绍了Cursor的下载安装、账号注册、汉化设置、核心模式(Agent、Plan、Debug、Ask)及高阶功能,如@引用、@Doc文档库、@Browser自动化和Rules规则配置,助力开发者高效使用AI编程工具。
1355 7
|
14天前
|
IDE 开发工具 C语言
【2026最新】VS2026下载安装使用保姆级教程(附安装包+图文步骤)
Visual Studio 2026是微软推出的最新Windows专属IDE,启动更快、内存占用更低,支持C++、Python等开发。推荐免费的Community版,安装简便,适合初学者与个人开发者使用。
1359 13
|
10天前
|
人工智能 JSON 自然语言处理
【2026最新最全】一篇文章带你学会Qoder编辑器
Qoder是一款面向程序员的AI编程助手,集智能补全、对话式编程、项目级理解、任务模式与规则驱动于一体,支持模型分级选择与CLI命令行操作,可自动生成文档、优化提示词,提升开发效率。
835 10
【2026最新最全】一篇文章带你学会Qoder编辑器
|
14天前
|
人工智能 测试技术 开发者
AI Coding后端开发实战:解锁AI辅助编程新范式
本文系统阐述了AI时代开发者如何高效协作AI Coding工具,强调破除认知误区、构建个人上下文管理体系,并精准判断AI输出质量。通过实战流程与案例,助力开发者实现从编码到架构思维的跃迁,成为人机协同的“超级开发者”。
1106 96
|
8天前
|
云安全 安全
免费+限量+领云小宝周边!「阿里云2026云上安全健康体检」火热进行中!
诚邀您进行年度自检,发现潜在风险,守护云上业务连续稳健运行
1182 2

热门文章

最新文章