vue.js - vue 最佳实践 api 处理

标签 vue.js vue-component

一直在阅读文档并在谷歌上搜索最佳实践,以在没有运气的情况下处理更大项目中的 api 调用(或者至少不是我正在寻找的东西)。

我想为后端创建一个服务/外观,我可以在每个需要它的组件中加载它。例如。

我想在服务中获取天气的历史数据,因此在我需要的每个组件中,我都可以加载天气服务并使用 getter 来获取所需的数据。我想以下面的内容结束。但我不想让它工作。所以我想知道,vue.js 中对此的最佳实践是什么?

import WeatherFacade from './data/WeatherFacade.vue'

export default {
  name: 'Chart',
  created () {
    console.log(WeatherFacade.getWeather())
  },
  components: {
    WeatherFacade 
  }
}

附言。使用 vue 2.1.10

最佳答案

这可以通过创建一些外部对象来轻松完成,这些对象将保存这些数据和模块捆绑。我通常在我的项目中做的是创建 services 目录并将它们按我想要的顺序分组。

让我们分解一下 - services/WeatherFascade.js(使用 VueResource)

import Vue from 'vue'

export default {
  getWeather() {
    return Vue.http.get('api/weather')
  }
}

如果你必须传递一些动态数据,比如ID,把它作为参数传递

import Vue from 'vue'

export default {
  getWeather(id) {
    return Vue.http.get(`api/weather/${id}`)
  }
}

然后在您的组件中,您可以导入此服务、传递参数(如果有)并取回数据。

import WeatherFascade from '../services/WeatherFascade'

export default {
  data() {
    return {
      weatherItems: []
    }
  },
  created() {
    this.getWeatherData()
  },
  methods: {
    getWeatherData() {
      WeatherFascade.getWather(// you can pass params here)
       .then(response => this.weatherItems = response.data)
       .catch(error => console.log(error))
    }
  }
}

您可以使用任何您喜欢的库,例如 axios 很酷。

关于vue.js - vue 最佳实践 api 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43102650/

相关文章:

javascript - Vue.js 按小数排序

asynchronous - VueJs 子组件 Prop 不会立即更新

javascript - Vue渲染顺序

javascript - typescript 如何将新项目添加到空对象数组

import - 如何避免 VueJS 中重复的导入和组件声明

vue.js - 使用 vue-cli3 移除插件

javascript - 在 vuejs 中将旧代码修改为 vue router 4

javascript - VueJS 2 - 如何使用 $emit 传递参数

javascript - 使用 Vuetify 将修饰符添加到菜单激活器中的 v-on

vuejs2 - this.$http.get 在 vue js 方法中不起作用