Vue的一些API理解整理,如何一次引入多次调用

在我们做vue项目时通常会创一个config文件夹,里面一般会包含 api.js和index.js,其中api.js一般用于存放一些url地址,例如

let base = 'http://192.168.1.110:8081/hhdj/'
export default {
  login: `${base}login/login.do`,
  codeUrl: `${base}validatecode.jsp`,
  newsList: `${base}news/newsList.do`
}

或者这样写

const serverUrl = 'http://www.fooju.cn/fjw/api.php?'
export default {
  serverUrl: 'http://www.fooju.cn/',
  map: 'http://online0.map.bdimg.com/tile/?qt=tile',
  login: serverUrl + 's=Login/login', /* 登录 */
  register: serverUrl + 's=Login/register', /* 注册 */

对于index.js文件里面存放的是将数据发送给服务端的一些处理,例如

import api from './api'
import axios from 'axios'
axios.defaults.withCredentials = true
let qs = require('qs')

export const login = data => {
  console.log('login api')
  return axios.post(api.login, qs.stringify(data))
}
export const codeUrl = api.codeUrl
export const getNews = data => {
  return axios.get(api.newsList, {params: data})
}

或者

import api from './api'
import axios from 'axios'
var qs = require('qs')
axios.defaults.withCredentials = true

export const getNewsList = params => {
  return axios.get (config.getNewsList, {params: params})
}
export const saveNews = formdata => {
  return axios.post (config.saveNews, formdata)
}
function createPostParams (obj) {
  return qs.stringify(obj)
}
export const login = data => {
  return axios.post (config.login, qs.stringify(data))
} 

对于index.js文件中export输出的方法,我们可以在main.js中一次性引入,然后在vue中的文件通过this.$api.XXX()调用,例如

import Vue from 'vue'
import App from './App'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
import * as api from './config'
//这里需要注意的是路径只写到相应的文件夹下面即可
import mycom from './components/index'
import store from './store/store'
Vue.prototype.$api = api
Vue.config.productionTip = false
Vue.use(ElementUI)
Vue.use(mycom)
Vue.test = function () {
  alert()
}
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store:store,
  template: '<App/>',
  components: { App }
})

在不用的vue文件中调用方法为,

<template>
  <div>
    <el-input v-model="user.username"></el-input>
    <el-input v-model="user.password"></el-input>
    <el-input v-model="user.checkcode"></el-input>
    <img :src="codeurl" alt="">
    <el-button type="sucess" @click="loginUser">提交</el-button>
   <!-- <a href="#/demo/111">111</a>
    <a href="#/demo/222">222</a>-->
    <router-link to="/demo/222">2222</router-link>
    <router-link to="/demo/111">1111</router-link>
  </div>
</template>

<script>
  export default{
    data () {
      return {
        user: {
          username: '',
          password: '',
          checkcode: ''
        },
        codeurl: ''
      }
    },
    methods: {
      loginUser () {
        this.$store.commit('setUser',this.user)
        this.$router.push('/demo/11')
        /*this.$api.login(this.user).then(function (res) {
          console.log(res.data)
        })*/这里是调用不同方法的地方this.$api.login()
      }
    }
  }
</script>

<style scoped>

</style>

http://blog.csdn.net/heliumlau/article/details/70182966

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值