51-VUE

it2022-06-24  95

1.vue设置全局变量

新建一个Global.vue,然后引入到Main.js,用的是Vue.protoype.自定义的name,然后在其他的vue里面就可以直接用了

2.封装ajax

①新建一个api的dir里面放ajax.js和一个config.js

②进入axios

③写一个类似java里面的用接口搞的一套GET/POST的http请求以及回调

import axios from 'axios' export default function ajax(url, data = {}, type = 'GET') { return new Promise(function (resolve, reject) { let promise if (type === 'GET') { let dataStr = '' Object.keys(data).forEach(key => { dataStr += key + '=' + data[key] + '&' }) if (dataStr !== '') { dataStr = dataStr.substring(0, dataStr.lastIndexOf('&')) url = url + '?' + dataStr } promise = axios.get(url) } else { promise = axios.post(url) } promise.then(function (response) { resolve(response.data) }).catch(function (error) { reject(error) }) }) }

3.vuex

在这里,还是安装规范来写vuex,之前写的所有的api,应该放在vuex,用actions的异步给封装,这样更好管理

①vuex的管理js,index.js里面写配置项:

import Vue from 'vue' import Vuex from 'vuex' import state from './state' import mutaions from './mutations' import getters from './getters' import actions from './actions' Vue.use(Vuex) export default new Vuex.Store({ state, mutaions, getters, actions })

②在mutions.js里面引入mutation-types

import { RECEIVE_CODE } from "./mutation-types"; //举了一个例子,暂时先不管 export default { [RECEIVE_CODE](code, {param1}) { state.paramname1 = param1 } }

③在actions里面封装mutations里面的同步方法+api的异步方法

import { RECEIVE_CODE } from "./mutation-types"; import { reqqqqq } from "../api/api"; export default { async getDemo({commit, state}) { const param3 = '11' +state.paramnxxx const result = await reqqqqq(param3) if (result.code === 0) { const return_code=result.code commit(RECEIVE_CODE,{return_code}) } } }

这里注意,actions里面方法名后面的参数,看起来是入参,但是实际调用actions方法的时候,是不需要写入参的,因为既然用了vuex,那么所有的data都是在vuex里面,根本不需要从外部传参数,这里的{commit,state},commit是一个执行mutations方法的对象,后面的是你需要从store里面拿的数据,也就是state对象,里面有vuex的所有数据,然后在actions自定义方法里面给api.js传参,直接解构state,就可以写入参了,如果不需要使用state,不传也可以

调用的时候,用mapActions和$store都可以,直接调用参数名,无需传参

④给img标签写@click点击事件

url: this.GLOBAL.base_url + 'user/validateCode'+'?random='+Math.random()

这里有一个问题,如果给<img>标签设置图片的方式为src,src里面给一个后台的请求图片的url地址,如果刷新的话,一样的url,但是img不会动,这时候加一个随机数字段即可,更常用的是直接加时间戳

⑤登录

关于登录的验证码问题,不是手机验证码,而是图形验证码,这里应该用一个http请求带username,pwd,CAPTCHA三个参数,而不是发送2次验证码。。。

另外,每一次请求验证码,都会把正确的验证码,放在session里面,而这个session是存在服务器端的,所以当客户端发送验证码的时候,直接在session里面校验就可以了,而且这个session应该是可以设置过期时间的,也就是,验证码其实也可以设置过期时间。

现在开始搞shiro,这个星期shiro搞完了,速度接着搞,下一个项目前端代码量有点大哦


最新回复(0)