美文网首页
vue中一些模块的使用备注

vue中一些模块的使用备注

作者: 喆哲 | 来源:发表于2020-01-15 20:19 被阅读0次
1、computed计算属性

计算属性数据会被缓存,可用于性能优化。这时就需要用computed中的get和set属性,get完成计算赋值,set数据修改时执行预设代码,不修改不必反复调用。

<template>
  <div class="hello">
    <h3> {{newMsg}}</h3>
    <h3>{{num}}</h3>
    <button @click="handNum">修改</button>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  computed: {
    num: {
      get () {
        return this.msg
      },
      set (val) {
        this.msg = val
        this.newMsg += val
      }  
    }
  },
  methods: {
    handNum () {
      this.num = 'new' + this.num
    }
  },
  data () {
    return {
      newMsg: 'Hello ',
      msg: 'Welcome to Your Vue.js App'
    }
  }
}
</script>
1、axios网络请求
  • 基本使用
import axios from 'axios'
// 基本请求
axios({
  url: 'http://123.207.32.32:8000/home/multidata', 
// 如需跨域则http://123.207.32.32:8000/home/multidata?callback=123
  method: 'get'
}).then(data => {
  console.log(data)
})
axios({
  url: 'http://123.207.32.32:8000/home/data',
  params:{
    type: 'pop',
    page: 1
  }
}).then(data => {
  console.log(data)
})

axios.defaults.baseURL = 'http://123.207.32.32:8000'  // 默认设置根路径
axios.defaults.timeout = 6000  // 默认设置超时时间

// 并发请求
axios.all([
  axios({
    url: '/home/multidata'
  }),
  axios({
    url: '/home/data',
    params:{
      type: 'pop',
      page: 1
    }
  })
]).then(axios.spread((data1,data2) => {
  console.log(data1) 
  console.log(data2) 
}))

// 创建axios实例
const ios_a = axios.create({
  baseURL: 'http://123.207.32.32:8000',
  timeout: 3000
})

ios_a({
  url: '/home/multidata'
}).then(data => {
  console.log(data)
})
  • 单独封装
1、建一个js文件用来封装axios
// 方案1
import axios from 'axios'
export function request (config, success, failure) {
  const request_a = axios.create({
    baseUrl: 'http://123.207.32.32:8000',
    timeout: 4000
  })
  request_a(config).then(res => {
    success(res)
    }).catch(err => {
      failure(err)
    })
}
// 方案2
export function request (config) {
  const request_a = axios.create({
    baseUrl: 'http://123.207.32.32:8000',
    timeout: 4000
  })
  return request_a(config)
}


2、拦截器的使用
export function request (config) {
  const request_a = axios.create({
    baseUrl: 'http://123.207.32.32:8000',
    timeout: 4000
  })
  // axios.interceptors // 全局拦截
  // 请求拦截
  request_a.interceptors.request.use(config => { // 成功拦截
    console.log(config)  
    return config // 返回数据继续
  }, err => { // 失败拦截
    console.log(err)
  })
  // 响应拦截
  request_a.interceptors.response.use(res => { // 成功拦截
    console.log(res)
    return res.data // 返回数据继续
  }, err => { // 失败拦截
    console.log(err)    
  })
  return request_a(config)
}


3、在逻辑页面使用设置封装好的请求,并传入参数
import {request} from './network/request' // 引入封装的函数
// 方案1
request(
 {url: '/home/multidata'},
 res => { console.log(res)},  // 成功回调
 err => {console.log(err)}   // 失败回调
 )
// 方案2
request('/home/multidata').then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})

相关文章

网友评论

      本文标题:vue中一些模块的使用备注

      本文链接:https://www.haomeiwen.com/subject/sbwgoctx.html