入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-09-12 投稿人: 浏览次数:2082

在我们做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

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。