需要Nuxt页面方法的js方法

问题描述 投票:0回答:1

我正在使用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 };
  },

所以我正在考虑将我在另一页中提到的代码放入。

更新:

我曾尝试这样做,就像David在评论中说的那样,但是当我导入它时,它将无法正常工作。它说它是未定义的。

这是我的吞噬文件

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 };
  },
vue.js nuxt.js nuxt
1个回答
1
投票
类似这样的东西:

LIB / api.js

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

组分/ widget.vue

import { loadStuff } from '~/lib/api';
请注意,~/lib/api路径将根据文件名和您的构建环境而变化。例如。可能是@/lib/api
© www.soinside.com 2019 - 2024. All rights reserved.