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 相关文章推荐
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
Feb 26 Javascript
js实现圆盘记速表
Aug 03 Javascript
移动手机APP手指滑动切换图片特效附源码下载
Nov 30 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
Jan 21 Javascript
JavaScript实现的商品抢购倒计时功能示例
Apr 17 Javascript
JavaScript 基础表单验证示例(纯Js实现)
Jul 20 Javascript
node+express+ejs使用模版引擎做的一个示例demo
Sep 18 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
vue 中几种传值方法(3种)
Nov 12 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
十天学会php(1)
2006/10/09 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
Javascript删除数组里的某个元素
2019/02/28 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
一个超级简单的python web程序
2014/09/11 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python爬虫 正则表达式解析
2019/09/28 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
新手上路标语
2014/06/20 职场文书
新农村建设标语
2014/06/24 职场文书
机电一体化专业求职信
2014/07/22 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
实习介绍信范文
2015/05/05 职场文书
离婚被告答辩状
2015/05/22 职场文书
医院岗前培训心得体会
2016/01/08 职场文书
JavaScript数组 几个常用方法总结
2021/11/11 Javascript