Vue脚手架编写试卷页面功能


Posted in Javascript onMarch 17, 2020

脚手架(vue-cli)

(一)什么是脚手架

概念:是一种用于快速开发Vue项目的系统架构

优点:能够帮助咱们快速的开发项目

缺点:由于脚手架适用于各种项目的开发,而不是单独的针对某一项目单独研发的,会出现代码冗余

脚手架的使用:

1、安装脚手架 vue-cli

全局安装打开cmd运行:cnpm install -g @vue/cli

2、查看当前版本号:

vue -V

3、创建项目:

根目录下打开cmd运行:vue create objectname项目名称(名称不能有大写)

正文开始

Vue脚手架实现试卷页面功能

将moduleA中的store模块化
在state中放入变量subjectList,通过mutations更新subjectList
在Home.vue中通过mapMutations激活mutations中的getSubjectList,从而更新subjectList

import '@/mock'
export default {
 namespaced: true,
 state: {
 subjectList: []
 },
 mutations: {
 getSubjectList(state, payload) {
  state.subjectList = payload
 }
 }
}
store/index.js
import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex)
import user from './modules/user'
import moduleA from './modules/moduleA'
let store =new Vuex.Store({
 modules:{
 moduleA
 }
})
export default store

Home.vue

fmtSubjectType,fmtOrder2ABC为过滤器,checkSubjectType为方法,统一放在Vue.mixin中,保存在mixin中的index.js文件中

通过checkSubjectType方法的结果真假控制此div是否存在

<template>
 <div class="main">
 <ul>
 <li class="item" v-for="(item, i) in subjectList" :key="i">
 <h4>{{i+1}}.[{{item.type|fmtSubjectType}}] {{item.title}}</h4>
 <div style="color:#888;font-size:14px">
  {{item.author}}{{item.createDate}}
 </div>
 <fieldset style="padding:0 10px;" v-if="checkSubjectType(item.type)">
  <legend >选项</legend>
  <div v-for="(choice, j) in item.choice" :key="j">
  {{j|fmtOrder2ABC}} {{choice.answer}}
  </div>
 </fieldset>
 <div v-if="checkSubjectType(item.type)">答案:{{item.answer}}</div>
 <div >解析:{{item.desc}}</div>
 </li>
 </ul>
 </div>
</template>
<script>
import '@/mock'
import {createNamespacedHelpers} from 'vuex'
let {mapState,mapMutations,mapActions}= createNamespacedHelpers('moduleA')
export default {
 async created() {
 let {subjectList} = await this.$get('/subjectList')
 this.getSubjectList(subjectList) 
 },
 computed: {
 ...mapState(['subjectList'])
 },
 methods: {
 ...mapMutations(['getSubjectList']),
 }
};
</script>
<style scoped lang='scss'>
.main{
 border: 1px solid red;
 .item{
 padding: 20px 10px;
 border-bottom: 1px solid #ccc;
 }
}
</style>

mixin/index.js
通过切 换BASE_URL 来切换接口,axios中的url是通过 BASE_URL 拼接的

import axios from 'axios'
import Vue from 'vue'
import { BASE_URL } from '@/config'
import {SUBJECT_TYPE} from '@/config/enum'
Vue.mixin({
 methods: {
 async $get(url,params){
  let {data} = await axios.get(BASE_URL+url,{params})
  return data
 },
 checkSubjectType(type){
  return type===SUBJECT_TYPE.DANXUAN||type===SUBJECT_TYPE.DUOXUAN
 }
 },
 filters:{
 fmtSubjectType(val){
  return ['单选题', '多选题', '判断题', '简答题'][val]
 },
 fmtOrder2ABC(val) {
  return 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[val]
 }
 },
 data() {
 return {
  SUBJECT_TYPE
 }
 },
})

config/index.js

通过MODE的改变,更换接口

import {MODE_TYPE} from './enum'
const BASE_URL_BEF=''
const BASE_URL_PRO='XXX'
const BASE_URL_DEV='PPPP'
const MODE=MODE_TYPE.BEF
export const BASE_URL = [BASE_URL_BEF,BASE_URL_PRO,BASE_URL_DEV][MODE]

config/enum.js

鉴于魔法数字的缘故,通过如下,使代码更清晰

//枚举
export const MODE_TYPE={
 BEF:0,
 PRO:1,
 DEV:2
}
export const SUBJECT_TYPE={
 DANXUAN:0,
 DUOXUAN:1,
 PANDUAN:2,
 JIANDA:3
}

mock/index.js

通过mock伪造数据

import Mock from 'mockjs'
Mock.mock('/subjectList',{
 "subjectList|10":[
 {
  "id|+1": 1,
  "title": "@cword(5,10)",
  "type": "@integer(0,3)",
  author:"@cname",
  createDate:'@datetime',
  "choice": [
  {
   "id": 11,
   "choice": "A",
   "answer": 0
  },
  {
   "id": 12,
   "choice": "B",
   "answer": 1
  },
  {
   "id": 13,
   "choice": "C",
   "answer": 2
  },
  {
   "id": 14,
   "choice": "D",
   "answer": 3
  }
  ],
  "answer": "C",
  desc:'@cword(8,25)'
 }
 ]
})

总结

到此这篇关于Vue脚手架实现试卷页面的文章就介绍到这了,更多相关Vue脚手架实现试卷页面内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
高效率JavaScript编写技巧整理
Aug 23 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
Javascript玩转继承(二)
May 08 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
Nov 21 Javascript
Vue.js系列之项目结构说明(2)
Jan 03 Javascript
Jquery树插件zTree实现菜单树
Jan 24 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
Feb 24 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
May 02 Javascript
AngularJS上传文件的示例代码
Nov 10 Javascript
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 Javascript
vue 使用原生组件上传图片的实例
Sep 08 Javascript
基于JavaScript实现留言板功能
Mar 16 #Javascript
JS实现简易留言板(节点操作)
Mar 16 #Javascript
JavaScript实现旋转木马轮播图
Mar 16 #Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 #Javascript
原生js实现的金山打字小游戏(实例代码详解)
Mar 16 #Javascript
JavaScript实现拖拽效果
Mar 16 #Javascript
js实现点赞效果
Mar 16 #Javascript
You might like
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
PHP使用数组实现队列
2012/02/05 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
PHP文件大小格式化函数合集
2014/03/10 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
PHP在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
jquery 新浪网易的评论块制作
2010/07/01 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
js查找节点的方法小结
2015/01/13 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
python实现各进制转换的总结大全
2017/06/18 Python
Python 文件操作的详解及实例
2017/09/18 Python
python绘制地震散点图
2019/06/18 Python
Python Collatz序列实现过程解析
2019/10/12 Python
django admin 添加自定义链接方式
2020/03/11 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
专升本自我鉴定
2013/10/10 职场文书
银行工作检查书范文
2014/01/31 职场文书
岗位说明书范文
2014/05/07 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
2014年爱国卫生工作总结
2014/11/22 职场文书
MySQL 字符集 character
2022/05/04 MySQL