требуется метод js для методов страницы Nuxt - PullRequest
0 голосов
/ 25 сентября 2019

Я использую nuxt js.Есть ли способ отделить код от метода, который будет использоваться во многих других методах запросов, и поместить его в другую папку / местоположение, возможно, назвать его devour.js

async asyncData({ $axios, route, params, $auth }) {
    const jsonApi = new JsonApi({ apiUrl: $axios.defaults.baseURL });
    jsonApi.headers["Authorization"] = $auth.getToken("local");
    // this code below defining models i call it in many other pages many times //
    jsonApi.define("team", {
      name: "",
      abbreviation: "",
      sport: {
        jsonApi: "hasOne",
        type: "sports"
      }
    });
    jsonApi.define("sport", {
      name: "",
      teams: {
        jsonApi: "hasMany",
        type: "teams"
      },
      tournaments: {
        jsonApi: "hasMany",
        type: "tournaments"
      }
    });
    // up to here //
    let { data, errors, meta, links } = await jsonApi.find(
      "team",
      route.params.id,
      {
        include: "sport"
      }
    );
    return { data };
  },

Так что я думаю о размещениитот код, который я упомянул на другой странице.

ОБНОВЛЕНИЕ:

Я пытался сделать это, как сказал Дэвид в комментариях, но когда я импортировал его, он просто не работал.Он говорит, что он не определен.

Это мой пожирающий файл

import JsonApi from 'devour-client';

export default function ({ $axios, $auth }) {
  const jsonApi = new JsonApi({ apiUrl: $axios.defaults.baseURL });
  jsonApi.headers['Authorization'] = $auth.getToken('local');
  jsonApi.define('team', {
    name: '',
    abbreviation: '',
    sport: {
      jsonApi: 'hasOne',
      type: 'sports'
    }
  });
  jsonApi.define('sport', {
    name: '',
    teams: {
      jsonApi: 'hasMany',
      type: 'teams'
    },
    tournaments: {
      jsonApi: 'hasMany',
      type: 'tournaments'
    }
  });
  return jsonApi
}

И это мой текущий сценарий, где я использую этот

import jsonApi from '~/api/devour';
async asyncData({ $axios, $auth, jsonApi }) {
    let { data, errors, meta, links } = await jsonApi.findAll('teams', {
      include: 'sport'
    });
    return { data };
  },

1 Ответ

1 голос
/ 26 сентября 2019

Примерно так:

lib / api.js

const loadStuff = async (params) => {...};
export { loadStuff };

компоненты / widget.vue

import { loadStuff } from '~/lib/api';

Обратите внимание, что путь ~/lib/api зависит от имени файла и среды сборки.Например, это может быть @/lib/api.

...