软件工程导论 结对项目 前端开发记录

本文记录了一次基于Vue的结对项目开发经历,详细介绍了从页面设计到遇到的困难,包括前后端交互问题、eval()计算、文件上传下载等。在页面设计上,经过三次迭代,最终形成了集出题、做题、上传、下载于一体的首页。在遇到的问题中,主要涉及axios传值格式、eval()处理乘除计算、上传文件的配置和下载文件的路径问题,这些问题都通过查阅资料和实践得到了解决。
摘要由CSDN通过智能技术生成

页面构想、设计

作为一个完全没有设计灵感的人来说,对没有产品原型的项目我是很难下手的,因此这个项目的前端开发有一大半的时间是花在了页面样式修改、调整上。
结对项目的前端页面一共经历了三次渡劫,最终才定版。

第一版页面

在第一版的前端页面中,我把整个项目分成了3个部分,这3个部分也就对应了3个页面——首页、出题、做题:

项目文件结构
在这里插入图片描述
其中,setQuestion.vue是出题页面,answer.vue是答题页面。
那首页在哪儿呢?——首页我就使用的是vue项目自带的HelloWorld.vue,在里面增删改一些代码。

  1. 首页:首页的样式参照vue项目自带的入口页面样式;
    在这里插入图片描述项目的首页之中将“V”图片替换了,并且其下的超链接切换了文字和路由,新增了登录、注册(由于第一版页面已经被修改,所以无法给出页面图片),这些代码的删改都是在HelloWorld.vue中进行的。
  2. 出题页面(setQuestion.vue) :按照老师给出的出题样式
    在这里插入图片描述
    使用element-ui组件库做了一个大致相同的样子,单作为一个页面,并设置了页面路由,在首页之中有一个“我要做题”的链接,通过路由可以直接到达setQuestion.vue页面(类似于html中的a标签的效果,唯一不同的就是跳转的路径不再是文件间的相互路径,而变成了http路径);
    路由设置
    在这里插入图片描述
    启动整个vue项目后,在浏览器的地址栏中输入路由路径即可访问到该setQuestion.vue页面
    在这里插入图片描述
  3. 答题页面(answer.vue) :是一个含有计算算式、答题域、计时器的页面,在这个页面中能根据所填入的答案与正确答案进行比对,输出正确率并给出最终的答题时间。
  • 在第一版的答题页面之中,正确答案是前端请求后端计算算式的时候一起传到前端的,这个后端承包计算算式和答案的模式在后面的版本中被修改。
  • 答题页面中有“开始答题”和“提交答案”两个按钮:点击“开始答题”后,计时器开始工作,显示在页面上的时间开始有变化;点击“提交答案”后,答题结束,计时器停止计时,给出最终正确率和答题用时时长。这两个按钮在后来考虑到实际情况后有所修改。
  • 由于第一版页面已不存在了,因此不做页面展示

在第一版页面做完以后,真是又丑又别扭。
加之前后端传值过程均是我写了一个和后端给出的一样格式的json文件,来模拟钱后端传值过程,以测试代码。
在考虑到页面美观程度以及和后端传值的问题,决定将第一版页面推翻,做了第二版。

第二版页面

在第二版的页面中,较第一版而言做了一些改动:

  • 合并了首页和setQuestion.vue页面;
  • 删去了原来首页中的登录和删除;
    原因:加上登录注册会再给前后端添加太多需求——例如前端还会涉及到拦截器的问题,后端还会涉及到数据库等等。与小伙伴多番商议之下,一切从简,删去了登录注册功能。
    总体而言,在第二版页面中,我把整个项目分成了2个部分(首页[也就是出题页面]、做题),即对应了两个页面
  1. 首页(即出题页面 HelloWorld.vue):这一版的首页中,我使用到了element-ui中的布局(el-container、el-header、el-aside、el-main、el-footer),添加了一个导航侧边栏(el-aside),在页面的中间给出了设置题目的部件(el-main),在App.vue中设置了公共的标题(Math Helper 欢迎进入数学提分助手……)。具体页面样式见下图:
    在这里插入图片描述
  2. 答题页面(answer.vue) :答题页面与第一版无差别。

这一版的页面总体来说比第一版的好看了太多,有一个网站的样子了。
然而,现实是如此的让我头秃……
在我使用自己写的json文件模拟前后端传值的过程很顺利之后,我们两个伙伴开始了第一次真正的前后端传值交互——传过去,很好,后端收到了,前台也得到了计算式子和正确答案的反馈(虽然这个令人欣喜的结果是在让我闹心了一整天了之后实现的),但是answer.vue页面请求就是请求失败,具体原因和解决见困难和解决,在解决了很久仍然毫无效果之后,我选择向现实妥协——把答题页面整个版到首页来:藏着!在需要它的时候再出来!
于是项目的前端第三版也就是最终版诞生了……

第三版(最终版)页面

在第三版的页面中,较第二版而言也是做了一些改动:

  • 如上所言,将答题页面放到了首页中;
  • 页面之中也加上了上传、下载功能,于是后端承包计算算式和答案的模式变成了:后端只负责给我计算式子,正确答案前端通过强大的eval()函数去计算;
    原因:因为添加了上传功能,在上传的文件中,后端将文件当中“=”前面的计算式子分割出来生成json格式的文件传递给前端,也就是说,后端对上传文件的内容分割仅限于将“=”之前的式子,“=”之后的正确答案由于分割起来太过麻烦,于是放弃了对正确答案的获取;而通过后端代码按要求生成的计算式子又是带有正确答案的,相商之下,我们决定——后端只负责提供计算式子,前端拿到计算式子之后,运用eval()函数进行计算,得到的正确答案再与用户所填入的答案进行比对。
  • 答题部分由原来的触发“开始做题”计时器开始工作,改成了计算算式在后端生成、前端获取到并渲染到页面的同时,计时器开始计时,这就避免了由于忘记点击或者故意不点击“开始做题”而导致的不能正确反映做题速度的问题。

最终,还是“三‘页’合璧”,结对项目中前端只包含有一个页面:HelloWorld.vue,在这个页面中模块该藏的藏,该现的现,各司其职。

首页(集出题、做题、上传、下载于一体):在第二版的基础上,添加了“下载题集”和“扩充题库”于导航侧边栏中。具体页面样式见下图:

出题部分:
在这里插入图片描述
答题部分:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上传部分:
在这里插入图片描述
下载部分:
在这里插入图片描述
在这里插入图片描述

遇到的困难和痛苦的解决过程

这次结对项目的前端开发是基于vue.js+element-ui模式来进行。这个框架的好处就在于不用和后端代码进行套页,前后端代码完全分离,用接口(url)在进行传值和交互,这就省去了一大把的套页时间。
对于我这样的一个新(cai)手(niao)来说,这个框架一!点!也!不!好!上!手!(都说容易上手是骗人的……)因此在做结对项目的时候,基本上就是一脚一个坑,一个坑陷一天的状态……真的是让人很头秃。
所以我把一些我认为我以后还会踩坑的地方记下来,免得以后踩了坑,爬起来快一点……

1. 与后端的交互

坑?:与后端进行数据交互时,后端没有办法获取到前端通过axios传过去的值,这是我通过查博客写的向后台传值的代码

//传值给后端
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值