为 NetLab 网络实验平台制作配套教学课件,从规划到落地共产出 6 份 PPT。本文分享完整的课件制作流程:规划思路、设计原则、工具链选择、踩坑经验,以及课件与实验联动的设计方法。
一、课件规划
NetLab 目前有 6 个核心实验模块,每份课件对应一个实验,形成"理论→实操"闭环。规划阶段先确定 6 份课件的对应关系:
| 序号 | 课件主题 | 对应实验 | 核心知识点 |
|---|---|---|---|
| 1 | 网络基础 | 网络基础认知实验 | OSI模型、TCP/IP、IP地址 |
| 2 | VLAN配置 | VLAN划分与互通实验 | VLAN原理、Access/Trunk、VLAN间路由 |
| 3 | 路由配置 | 静态路由与OSPF实验 | 路由表、静态路由、OSPF邻接 |
| 4 | DHCP与NAT | DHCP分配与NAT转换实验 | DHCP池、SNAT/DNAT、Easy IP |
| 5 | 防火墙策略 | 防火墙安全策略实验 | 安全域、策略规则、放行/拒绝 |
| 6 | 综合组网 | 企业综合组网实战 | 全链路整合、故障排查 |
规划要点:课件与实验一一对应,学生在课堂学理论后立即上手实验,知识留存率显著提升。6份课件按难度递进排列,前5份单模块训练,第6份综合实战。
二、设计原则
6份课件采用统一的视觉系统,确保系列感与专业度:
- 主色调:NetLab 品牌蓝
#0052FF,用于标题、强调元素、封面背景 - 封面页:深色背景(#1A1A2E)+ 蓝色标题,营造科技感
- 内容页:浅色背景(#FFFFFF)+ 深色文字,保证可读性
- 页数控制:每份 11 页精简版,避免信息过载
- 图标体系:统一使用线性图标风格,每页配一个核心图标
页数不是越多越好:教学课件的核心是"讲清楚一个点",而非堆砌信息。11页的结构刚好覆盖一个45分钟课时:5分钟导入 + 30分钟讲解 + 10分钟互动。
三、PPT结构模板
6份课件统一采用以下 11 页结构模板:
第1页 → 封面(深色背景 + 课题名 + 讲师信息)
第2页 → 学习目标(3-5条,用动词开头:掌握/理解/能够)
第3页 → 知识点1(核心概念 + 图示)
第4页 → 知识点2(原理详解 + 流程图)
第5页 → 知识点3(配置命令 + 代码块)
第6页 → 知识点4(进阶内容或对比表格)
第7页 → 知识点5(典型场景或案例分析)
第8页 → 知识点6(常见错误或注意事项)
第9页 → 实验对照(NetLab实验截图 + 操作指引)
第10页 → 思考题(2-3道开放性问题)
第11页 → 小结(要点回顾 + 下节预告)
这个模板的优势在于节奏感:前2页建立预期,中间6页递进讲解,第9页衔接实操,最后2页巩固反思。
四、工具链选择
课件制作采用 PptxGenJS + python-pptx 双工具链:PptxGenJS 负责快速生成初版,python-pptx 负责精细修改。
4.1 PptxGenJS 生成初版
const pptx = new PptxGenJS();
// 封面页 - 深色背景 + 蓝色标题
const cover = pptx.addSlide();
cover.background = { color: "1A1A2E" };
cover.addText("VLAN配置", {
x: 1.0, y: 2.0, w: 8.0, h: 1.5,
fontSize: 44, color: "0052FF", bold: true,
fontFace: "Microsoft YaHei"
});
cover.addText("NetLab网络实验配套课件", {
x: 1.0, y: 3.5, w: 8.0, h: 0.8,
fontSize: 20, color: "CCCCCC",
fontFace: "Microsoft YaHei"
});
// 内容页 - 浅色背景
const content = pptx.addSlide();
content.background = { color: "FFFFFF" };
content.addText("VLAN原理", {
x: 0.5, y: 0.3, w: 9.0, h: 0.8,
fontSize: 32, color: "0052FF", bold: true,
fontFace: "Microsoft YaHei"
});
pptx.writeFile({ fileName: "vlan-config.pptx" });
4.2 python-pptx 精细修改
from pptx import Presentation
from pptx.util import Pt
prs = Presentation("vlan-config.pptx")
for slide in prs.slides:
for shape in slide.shapes:
if shape.has_text_frame:
for para in shape.text_frame.paragraphs:
for run in para.runs:
# 统一字体为微软雅黑
run.font.name = "Microsoft YaHei"
run.font.size = Pt(run.font.size.pt if run.font.size else 18)
prs.save("vlan-config-final.pptx")
为什么用两个工具?PptxGenJS 用代码生成 PPT 速度快、可批量、可版本控制;python-pptx 修改已有 PPT 的字体和细节更灵活。两者互补,先生成再微调。
4.3 踩坑经验
- PptxGenJS 字体不生效:生成的 PPT 在 PowerPoint 中打开,字体被替换为默认 Calibri。原因是 PptxGenJS 的
fontFace属性需要精确匹配系统已安装字体名。 - python-pptx 中文字体丢失:直接设置
run.font.name只改拉丁字体,中文字体需额外设置run.font._rPr的ea属性。 - 深色封面文字颜色不生效:PptxGenJS 的
color参数不带#前缀,写"#0052FF"会报错,正确写法是"0052FF"。
五、课件与实验联动
每份课件的第9页是"实验对照页",嵌入对应 NetLab 实验的截图和操作指引,形成课件→实验的导航闭环。
// 第9页 - 实验对照页
const expSlide = pptx.addSlide();
expSlide.background = { color: "FFFFFF" };
// 左侧:NetLab实验截图
expSlide.addImage({
path: "images/vlan-lab-screenshot.png",
x: 0.5, y: 1.5, w: 5.0, h: 3.5
});
// 右侧:操作指引
expSlide.addText("实验操作指引", {
x: 6.0, y: 1.5, w: 3.5, h: 0.6,
fontSize: 24, color: "0052FF", bold: true
});
expSlide.addText([
{ text: "1. 打开 NetLab → 选择 VLAN实验\n", options: { fontSize: 16 } },
{ text: "2. 按课件拓扑连接设备\n", options: { fontSize: 16 } },
{ text: "3. 执行配置命令验证结果\n", options: { fontSize: 16 } },
{ text: "4. 截图保存实验记录", options: { fontSize: 16 } }
], {
x: 6.0, y: 2.2, w: 3.5, h: 2.8,
color: "333333", fontFace: "Microsoft YaHei"
});
联动设计的关键:实验对照页不只是放截图,还要给出明确的操作步骤。学生在课堂上学完理论,翻到第9页就知道"接下来在NetLab里做什么",降低实验上手门槛。
六、字体统一经验
6份课件最终统一使用微软雅黑作为全站字体。字体统一过程经历了三个阶段:
- 初始状态:PptxGenJS 默认生成 Calibri 字体,中文显示为宋体回退,视觉效果不统一。
- 第一次尝试:在 PptxGenJS 中设置
fontFace: "Microsoft YaHei",但部分文本框字体仍被 PowerPoint 替换。 - 最终方案:用 python-pptx 遍历所有 slide 的所有 run,强制设置中英文字体为微软雅黑。
# python-pptx 统一字体 - 完整版
from pptx import Presentation
from pptx.oxml.ns import qn
prs = Presentation("input.pptx")
for slide in prs.slides:
for shape in slide.shapes:
if shape.has_text_frame:
for para in shape.text_frame.paragraphs:
for run in para.runs:
# 设置拉丁字体
run.font.name = "Microsoft YaHei"
# 设置东亚字体(中文)
rPr = run._r.get_or_add_rPr()
ea = rPr.find(qn('a:ea'))
if ea is None:
ea = rPr.makeelement(qn('a:ea'), {})
rPr.append(ea)
ea.set('typeface', 'Microsoft YaHei')
prs.save("output-unified-font.pptx")
Consolas → 微软雅黑的替换:代码块原本用 Consolas 等宽字体,但在教学场景中学生更关注命令内容而非格式对齐,统一改为微软雅黑后可读性反而更好。如需保留等宽效果,可用微软雅黑 + 加粗模拟。
七、小结与展望
- 9份课件与9个实验一一对应,形成"理论→实操"闭环教学体系
- 统一视觉系统(NetLab蓝 #0052FF、深色封面+浅色内容、11页精简版)保证系列感
- PptxGenJS + python-pptx 双工具链:前者快速生成,后者精细微调
- 第9页实验对照页是课件与实验联动的核心枢纽
- 字体统一用 python-pptx 遍历设置中英文字体,解决 PptxGenJS 字体不生效问题
后续计划:将课件导出为 PDF 配合 NetLab 实验指导书在线发布,同时探索 ArkTS 版交互式课件,让学生在 HarmonyOS 设备上也能学习。