这是一个可直接部署到 Firebase Hosting 或 GitHub Pages + Firebase Firestore 的静态网页程序,满足以下教学场景:
- 学生扫码进入投票页面
- 填写姓名
- 对 2021 年 3 月 1 日的 10000 美元投资方案进行单选
- 教师后台查看频率统计、饼图和具体姓名
index.html:页面结构style.css:界面样式app.js:投票逻辑、Firestore 读写、饼图与二维码firebase.json:Firebase Hosting 配置firestore.rules:Firestore 规则示例
- 打开 Firebase 控制台
- 新建项目
- 开启 Firestore Database
- 开启 Hosting
- 在项目设置里找到 Web 应用配置
- 把
app.js里的firebaseConfig替换成你的真实配置
建议集合名使用:
- 集合:
votes
每条记录会自动写入:
namechoicecreatedAt
把 firestore.rules 发布到项目中。
注意:这套规则更适合课堂教学演示,不适合高安全正式业务。
部署后:
- 学生投票页:
你的网址 - 教师后台:
你的网址/?admin=1
默认后台密码在 app.js 中:
const ADMIN_PASSWORD = "teacher123";你可以自行修改。
- 安装 Node.js
- 安装 Firebase CLI
npm install -g firebase-tools - 登录
firebase login - 进入本文件夹
- 初始化 Hosting
firebase init hosting - 选择当前 Firebase 项目
- 公共目录填:
. - 选择单页应用:
N - 不覆盖已有
index.html - 发布
firebase deploy
发布完成后会得到一个公开网址。
- 建 GitHub 仓库
- 把本文件夹全部上传
- 打开 Pages
- 选择从
main分支根目录发布 - 等待生成公开网址
只要
app.js中 Firebase 配置正确,GitHub Pages 也能正常读写 Firestore。
- 教师先打开后台
?admin=1 - 页面会自动生成当前网址的二维码
- 学生扫码进入投票页
- 提交姓名和选项
- 教师后台点击“刷新数据”查看实时统计
- 点击某个选项卡片可查看具体姓名
你之后还可以继续加这些功能:
- 限制同名只能投一次
- 导出 Excel
- 实时自动刷新
- 添加更多题目
- 设置投票截止时间
- 美化为课堂大屏版