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 相关文章推荐
基于JQuery的一句代码实现表格的简单筛选
Jul 26 Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
May 25 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
javascript实现列表切换效果
May 02 Javascript
深入理解angularjs过滤器
May 25 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
Aug 24 Javascript
vue项目打包部署_nginx代理访问方法详解
Sep 20 Javascript
更强大的vue ssr实现预取数据的方式
Jul 19 Javascript
微信小程序实现简单文字跑马灯
May 26 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 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
Flash空降上海 化身大魔王接受挑战
2020/03/02 星际争霸
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP的curl函数的用法总结
2019/02/14 PHP
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
JavaScript如何操作css
2020/10/24 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
对Python 语音识别框架详解
2018/12/24 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
python自动生成证件号的方法示例
2021/01/14 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
保安员岗位职责
2013/11/17 职场文书
餐饮业会计岗位职责
2013/12/19 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
团拜会主持词
2015/07/04 职场文书
清明节随笔
2015/08/15 职场文书
队列队形口号
2015/12/25 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书