玩命加载中 . . .

React-Ts 项目:在线编程笔试平台


前言

上一篇博客说到线上部署项目到服务器,博主说的就是这个 React-Ts 项目啦,它是博主为将来找实习准备的,用到的技术点有好一些是边学边做的,如果有不同见解的地方还请读者不吝赐教。

需要事先说明的是,关于这个项目的博客,博主并不打算讲解代码实现,每个人的项目用到的技术栈不尽相同,但有一点可以确定,就是项目功能点的实现逻辑是大致相同的,故博主会更多地讲解各模块/功能点的逻辑实现 ^_^

项目介绍

这是一个前后端分离项目:在线编程笔试平台。按照用户角色分为两部分,分别是面试官侧和候选人侧,主要功能是候选人在线完成代码编写,面试官可查看编程结果。

项目任务拆解

  1. 登录/注册模块
  • 支持邮箱登录和注册
  • 支持“退出登录”功能
  1. 面试题模块
  • 面试官可填写面试题
  • 每个面试题有固定链接
  • 支持新建面试题和修改面试题目
  • 支持邀请一个候选人编程
  • 面试题目支持富文本格式
  1. 在线编程模块
  • 候选人可在线编写代码
  • 代码支持多种语言高亮 111
  • 候选人侧提交最终编程代码 111
  • 面试官侧刷新能看到最终代码 111
  1. 在线编程模块支持自动刷新
  • 候选人侧代码支持自动保存
  • 面试官侧代码自动刷新
  1. 实时文字聊天模块
  • 候选人和面试官可实时文字聊天
  • 其他获得连接的人都可参与文字聊天
  1. 在线语音聊天模块
  • 候选人和面试官可实时语音聊天
  1. 在线编程模块支持运行JS代码
  • 候选人和面试官可在线运行 JS 代码并查看输出
  1. 在线编程模块支持协同编辑
  • 候选人和面试官可实时协作编程
  1. 视频聊天模块
  • 候选人和面试官可实时视频聊天

    技术栈

    前端:React + TypeScript ,后端:Node.js + MySQL + Koa 。

    项目实现

  • 为了实现登录/注册模块,使用 Cookie 验证用户信息、localStorage 保存登录态、nodemailer 发送验证码邮件至用户邮箱、登录或注册按钮设置防抖,实现了登录、注册、忘记密码和15天内免登陆功能。
  • 为了实现创建面试题模块,使用 Ant Design 完成 UI 设计、wangEditor  支持面试官编辑面试题、在修改信息时调用后端接口以获取数据进行初始化、nodemailer 发送邮件告知候选人试卷信息,使面试官能进行试卷和试题的增删查改,以及邮件通知当事人试卷信息。
  • 为了实现在线编程模块,使用 react-monaco-editor 支持候选人编辑代码并提交、filter api 完成试题的多次筛选,实现了编程功能。
  • 为了实现实时文字聊天模块,使用 WebSocket 监听客户端和服务端的聊天信息,后端接受处理后响应给前端,使候选人和面试官能进行实时文字交流。
  • 为了快速完成项目部署,前端使用 scp 连接服务器并上传文件到服务器 nginx 下的指定目录,后端使用 fs 读写本地文件、node-ssh 连接服务器并将指定文件上传到 tomcat 下的指定目录、运行本地编写的 deploy.sh 脚本启动后端服务、并用 pm2 实时监控,以此实现了项目的自动化部署。

    可拓展点

  • 性能优化。
  • 用户能提供试题题解,支持评论。
  • 实现语言国际化,支持多种语言切换。
  • 完善安全措施,能防止 xss 、csrf 等网络攻击。
  • 用户数据图形化,直观展示用户做题量、通过率等信息。
  • 实现视频和语音聊天模块,支持实时视频通话和语音聊天。

项目亮点(目前只实现了第一点)

  1. 实现自动化部署
  2. 支持运行 JS 代码
  3. 解决编辑冲突
  4. 支持文字、语音、视频聊天
  5. 性能优化
  6. 支持国际化
  7. 适配移动端

    项目进度

  • 2021/09/04:实现登录/注册的静态页面
  • 2021/09/19:实现登录/注册逻辑(包括账号密码登录、登录拦截,session 身份验证)
  • 2021/09/29:初步部署前后端项目到阿里云服务器
  • 2021/10/04:购买域名并实现自动化部署项目
  • 2021/10/05:支持使用邮箱 登录和注册(删除了账号密码登录、注册的方式)
  • 2021/10/09:支持新建/删除试卷,在“新建试卷”里新建/修改/删除试题,发送邮件至候选人邮箱
  • 2021/10/23:初步完成面试题模块(包含“修改试卷”)
  • 2021/10/30:初步完成在线编程模块
  • 2021/10/31:搭建个人博客
  • 2021/11/02:记录项目从开始到现在的一系列笔记

    项目展示

    PC 端

  1. 登录/注册
    登录界面
    注册界面

    面试官侧

  2. 试题管理
    试卷展示
    添加试题之试卷信息
    添加试题之试题信息
    修改试卷1
    修改试卷2
  3. 阅卷管理
    试卷展示
    试卷详细信息之1
    试卷详细信息之2
    试卷详细信息之3
    批阅试卷
  4. 面试间管理
    面试间信息展示
    添加面试间
  5. 面试间入口
    进入面试间

    候选人侧

    查看试卷
    面试间入口
    面试间展示

项目地址

GitHub 前端仓库地址:https://github.com/HCYETY/react-ts-coding_web

GitHub 后端仓库地址:https://github.com/HCYETY/node-mysql-coding_serve

项目演示地址:http://www.syandeg.com

写在后面

这个项目是笔者的第一个实习项目,前后端均由笔者独立完成,花费了很多时间和精力,读者觉得不错的话不妨给个star支持一下呀,不胜感激~ ^_^

这个项目笔者打算继续完善并维护下去,将它做大起来,如果有读者感兴趣该项目,想参与实现某个功能或者有什么好的想法,也可以在评论区留言或者在 Github 上提 issue 等等,笔者看到的话会及时回复哒,先谢谢大家的支持啦

另外针对本项目,后续会出相关文章介绍具体实现过程,大家也可以关注一下!

在线编程笔试平台项目系列文章:

  1. ERROR 之部署服务器篇
  2. 前后端分离项目线上部署
  3. 项目之登录/注册模块

本文还在持续更新中……


文章作者: hcyety
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hcyety !
评论
  目录