Vue脚手架编写试卷页面功能
作者:skydot 发布时间:2024-04-27 16:14:36
标签:vue,脚手架,试卷页面
脚手架(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)'
}
]
})
来源:https://juejin.im/post/5e6cda7d518825495b29b00d


猜你喜欢
- 一、Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00——框架结构简解&nb
- 1 什么是K8ssandraCassandra是一款非常优秀的开源的分布式NoSQL数据库,被许多优秀的大公司采用,具有高可用、弹性扩展、性
- 平行坐标图,一种数据可视化的方式。以多个垂直平行的坐标轴表示多个维度,以维度上的刻度表示在该属性上对应值,相连而得的一个折线表示一个样本,以
- 用了两种方式解决该问题,都是网上现有的解决方案。场景说明:有一个数据文件,以文本方式保存,现在有三列user_id,plan_id,mobi
- 从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生
- 经常到这来抄抄改改代码,也贡献一个代码,主要是讨论研究用,没有封装可以进一步改进<!DOCTYPE html PUBLIC "
- 本文实例为大家分享了python实现图像边缘检测的具体代码,供大家参考,具体内容如下任务描述背景边缘检测是数字图像处理领域的一个常用技术,被
- 原来看到这个代码的时候,觉得功能不错,调试并整理了一下也许大家用的到,对于越来越注重用户体验的今天,这种功能一定很受欢迎,当然本例子只是一个
- Python 安装Graphviz 详细教程Python安装Graphviz画图器首先,要明确他是一个独立的软件,如果大家用pip的方法装了
- 装饰器(Decorators)装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以
- 在 Go 语言中切片是使用非常频繁的一种聚合类型,它代表变长的序列,底层引用一个数组对象。一个切片由三个部分构成:指针、长度和容量。指针指向
- 前言最近在学习python,发现了解线程信号量的基础知识,对深入理解python的线程会大有帮助。所以本文将给大家介绍Python3.X线程
- 前言PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数
- Laravel框架简介:Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂
- 一、定位元素的8种方式1、方法介绍定位一个元素定位多个元素含义find_element_by_id()find_elements_by_id
- 1、开启Mysql慢查询1.1、查看慢查询相关配置show variables like 'slow_query_log%'
- 这篇文章主要介绍了Python2和Python3中@abstractmethod使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工
- 1. 排序有什么用“排序”这个专业名词原本是来源于计算机程序操作中的,是一种很常见的算法设计,当然,对交互设计来说,探讨冒泡排序和堆排序之间
- 接着上篇的内容,这里实现一个交易记录链,废话不多说,先看图:跟之前的逻辑类似,但也有少许不同,这里多了一个payloadhash,以及对pa
- QQ影音新版发布官网Banner经过两周的酝酿、脑爆与设计调整,于20日顺利上线,连续7天,经历了昨天激动人心的最后发布,到此告一段落,这里