Vue腳手架編寫試卷頁面功能
腳手架(vue-cli)
?。ㄒ唬┦裁词悄_手架
概念:是一種用于快速開發(fā)Vue項(xiàng)目的系統(tǒng)架構(gòu)
優(yōu)點(diǎn):能夠幫助咱們快速的開發(fā)項(xiàng)目
缺點(diǎn):由于腳手架適用于各種項(xiàng)目的開發(fā),而不是單獨(dú)的針對(duì)某一項(xiàng)目單獨(dú)研發(fā)的,會(huì)出現(xiàn)代碼冗余
腳手架的使用:
1、安裝腳手架 vue-cli
全局安裝打開cmd運(yùn)行:cnpm install -g @vue/cli
2、查看當(dāng)前版本號(hào):
vue -V
3、創(chuàng)建項(xiàng)目:
根目錄下打開cmd運(yùn)行:vue create objectname項(xiàng)目名稱(名稱不能有大寫)
正文開始
Vue腳手架實(shí)現(xiàn)試卷頁面功能
將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為方法,統(tǒng)一放在Vue.mixin中,保存在mixin中的index.js文件中
通過checkSubjectType方法的結(jié)果真假控制此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 >選項(xiàng)</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
鑒于魔法數(shù)字的緣故,通過如下,使代碼更清晰
//枚舉
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偽造數(shù)據(jù)
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)'
}
]
})
總結(jié)
到此這篇關(guān)于Vue腳手架實(shí)現(xiàn)試卷頁面的文章就介紹到這了,更多相關(guān)Vue腳手架實(shí)現(xiàn)試卷頁面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于VuePress 輕量級(jí)靜態(tài)網(wǎng)站生成器的實(shí)現(xiàn)方法
VuePress是一個(gè)基于Vue的輕量級(jí)靜態(tài)網(wǎng)站生成器以及為編寫技術(shù)文檔而優(yōu)化的默認(rèn)主題。這么文章給大家詳細(xì)介紹了vuepress 靜態(tài)網(wǎng)站生成器的方法,需要的朋友參考下吧2018-04-04
vue?eslint報(bào)錯(cuò):Component?name?“xxxxx“?should?always?be?
新手在使用腳手架時(shí)總會(huì)報(bào)各種錯(cuò),下面這篇文章主要給大家介紹了關(guān)于vue?eslint報(bào)錯(cuò):Component?name?“xxxxx“?should?always?be?multi-word.eslintvue的4種解決方案,需要的朋友可以參考下2022-07-07
詳解Vue返回值動(dòng)態(tài)生成表單及提交數(shù)據(jù)的辦法
這篇文章主要為大家介紹了Vue返回值動(dòng)態(tài)生成表單及提交數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12
vue3.0 vue-router4.0打包后頁面空白的解決方法
本文主要介紹了vue3.0 vue-router4.0打包后頁面空白的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02

