当前位置:   article > 正文

【蓝桥杯Web】第十五届蓝桥杯(Web应用开发)模拟赛1期-大学组 | 全部答案_蓝桥杯地球漫游

蓝桥杯地球漫游

第一题:动态tab栏目

这题考察的是css中的粘性定位

第二题:地球漫游

这题主要考察的是css动画的复合属性

第三题:迷惑的this

这题主要是考察this指向的问题,因为箭头函数指向的是外部作用域的this,然后将this.handleInput事件绑定给this.inputEl,此时this.inputEl的input事件处理函数则为this.handleInput这个函数,由于事件处理函数中的内部作用域的this是指向被绑定的元素的,所以我们要使用bind返回一个新的修正过后的函数

第四题:魔法失灵了

这题也可以用toref来做,其实主要是原题中通过解构赋值让value丧失了响应式,重新恢复响应式即可

第五题:燃烧你的卡路里

第一问

js

这里要注意题目中的这个axios.get要删掉一个.才能获取到数据,这是原题出错了

第二问

这里主要考察的是排序和数组的运用

第六题:司龄统计

第一问

第二问

第七题:不翼而飞的余额 

第一问

当时忘记createWebHashHistory怎么写了,就直接去VueRouter的包里面ctrl+f找的

第二问和第三问
  1. setup(){
  2. const depositAmount=Vue.ref()//输入框中的的值->存款金额
  3. const store=useMoneyStore()//引入store
  4. //TODO:待补充代码,完善点击存款按钮事件
  5. function deposit(){
  6. store.balance+=depositAmount.value
  7. }
  8. return{
  9. deposit,
  10. store,
  11. depositAmount
  12. }
  13. }
  14. //然后在模板中绑定store.balance即可

第八题:个性化推荐

这题一开始点击完成是去不到customeized页面的

先用node跑起来服务:node ./js/index.js,然后我们进入到8080端口的页面,把页面地址复制粘贴到form表达的action里:

然后再重启服务,这样才能正确监听到customeized页面

这里如果修改了index.js,需要重新跑node服务

第一问

第二问

这个时候如果要提交,是需要回到index.html把form的action重新改回/customized才能通过

第九题:贪吃蛇

  1. // 移动蛇的头部
  2. nextStep() {
  3. // TODO:待补充代码
  4. //这里利用策略模式,创建奔跑引擎
  5. const runEngine = {
  6. right(){
  7. //先创建一个变量保存当前头部位置,需要深拷贝防止引用问题
  8. let lastPos = JSON.parse(JSON.stringify(this.snakeBody[0]))
  9. //头部运动
  10. this.snakeBody[0].left+=this.size
  11. //身体运动
  12. for(let i = 1;i<this.snakeBody.length;i++){
  13. //先创建一个临时变量保存身体运动之后空出来的位置
  14. let _lastPos = JSON.parse(JSON.stringify(this.snakeBody[i]))
  15. //运动身体到上一个身体的位置
  16. this.snakeBody[i] = lastPos
  17. //更新空出来的上一个位置,继续给下一个身体运动
  18. lastPos = _lastPos
  19. }
  20. },
  21. //下面的同理
  22. left(){
  23. let lastPos = JSON.parse(JSON.stringify(this.snakeBody[0]))
  24. this.snakeBody[0].left-=this.size
  25. for(let i = 1;i<this.snakeBody.length;i++){
  26. let _lastPos = JSON.parse(JSON.stringify(this.snakeBody[i]))
  27. this.snakeBody[i] = lastPos
  28. lastPos = _lastPos
  29. }
  30. },
  31. up(){
  32. let lastPos = JSON.parse(JSON.stringify(this.snakeBody[0]))
  33. this.snakeBody[0].top-=this.size
  34. for(let i = 1;i<this.snakeBody.length;i++){
  35. let _lastPos = JSON.parse(JSON.stringify(this.snakeBody[i]))
  36. this.snakeBody[i] = lastPos
  37. lastPos = _lastPos
  38. }
  39. },
  40. down(){
  41. let lastPos = JSON.parse(JSON.stringify(this.snakeBody[0]))
  42. this.snakeBody[0].top+=this.size
  43. for(let i = 1;i<this.snakeBody.length;i++){
  44. let _lastPos = JSON.parse(JSON.stringify(this.snakeBody[i]))
  45. this.snakeBody[i] = lastPos
  46. lastPos = _lastPos
  47. }
  48. }
  49. }
  50. //执行引擎,注意this指向问题
  51. runEngine[this.direction].call(this)
  52. }

第十题:自定义表单验证

第一问
第二问

这里忘记当时具体是怎么写的了,当时不会写这么复杂的邮箱正则,写了很多if判断了多种情况

第三问
  1. const validateForm = () => {
  2. return new Promise((resolve, reject) => {
  3. errors.value = {}; // 清空之前的错误信息
  4. // TODO:目标 3 编写通用的表单验证规则,并将错误信息放置到 errors 对象中
  5. //这里分两个部分,一个是nickname的验证,另外一个是email的验证,这里利用错误捕获的机制来完成
  6. //nickname part
  7. try{
  8. props.rules.nickname.map(item=>{
  9. item?.validator(null,props.formData.nickname,err=>{
  10. if(err){
  11. throw "nickname|"+err.message
  12. }
  13. })
  14. })
  15. }catch(e){
  16. const parseErr = e.split('|'),
  17. errKey = parseErr[0],
  18. errValue = parseErr[1]
  19. errors.value[errKey] = errValue
  20. }
  21. //email part
  22. try{
  23. props.rules.email.map(item=>{
  24. if(item?.required){
  25. if(props.formData.email == '')throw "email|"+item.message
  26. }
  27. if(item?.type){
  28. if(!validateByType(item.type,props.formData.email))throw "email|"+item.message
  29. if(props.formData.email.length < 8)throw "email|"+item.message
  30. if(props.formData.email.length > 20)throw "email|"+item.message
  31. }
  32. })
  33. }catch(e){
  34. const parseErr = e.split('|'),
  35. errKey = parseErr[0],
  36. errValue = parseErr[1]
  37. errors.value[errKey] = errValue
  38. }
  39. // TODO:END
  40. if (hasErrors.value) {
  41. resolve(false); // 存在错误,验证失败
  42. } else {
  43. resolve(true); // 不存在错误,验证通过
  44. }
  45. // 触发 "valid" 事件,并传递错误信息对象
  46. emit("valid", errors.value);
  47. });
  48. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/705723
推荐阅读
相关标签
  

闽ICP备14008679号