Heim Web-Frontend js-Tutorial So verwenden Sie Vue zur sekundären Kapselung des Axios-Plug-Ins

So verwenden Sie Vue zur sekundären Kapselung des Axios-Plug-Ins

May 28, 2018 pm 03:01 PM
axios sekundär 封装

Dieses Mal zeige ich Ihnen, wie Sie Vue zum erneuten Kapseln des Axios-Plug-Ins verwenden , lass uns einen Blick darauf werfen. Unabhängig davon, welche Methode zum Abrufen von Daten verwendet wird, muss der Code für ein Projekt einfach zu warten sein und zweitens muss er schön geschrieben sein, sodass das Hinzufügen einer Kapselungsebene erforderlich ist

vuejs2.0 vue-resource wird nicht mehr gepflegt, vuejs2.0 hat Axios verwendet, was der Hauptgrund ist, warum ich kurzerhand zu Axios wechseln werde:

Grundlegende Verpackungsanforderungen:

    Einheitliche URL-Konfiguration
  1. Einheitliche API-Anfrage
  2. Anfrage (Anfrage) Interceptor, zum Beispiel : Token usw. mitbringen, Anforderungsheader festlegen
  3. Antwort-(Antwort-)Interceptor, zum Beispiel: einheitliche
  4. Fehlerbehandlung

    , Seitenumleitung usw.

  5. Kombinieren Sie Vuex bei Bedarf, um eine globale Ladeanimation oder Fehlerbehandlung durchzuführen
  6. Axios in ein Vue-Plug-in kapseln und verwenden
Dateistruktur

Verwenden Sie vue-cli für die entsprechende Kapselung im src-Ordner:

src
  |
-- http 封装axios模块文件夹
   |
---- config.js axios的默认配置
---- api.js 二次封装axios,拦截器等
---- interface.js 请求接口文件
---- index.js 将axios封装成插件
Nach dem Login kopieren

config.js

Die Standardkonfiguration bezieht sich auf gitHub. Das Folgende ist nur ein Beispiel:

export default {
  method: 'post',
  // 基础url前缀
  baseURL: 'https://easy-mock.com/mock/5ad75e9f41d4d65f0e935be4/example',
  // 请求头信息
  headers: {
   'Content-Type':'application/json;charset=UTF-8'
  },
  // 参数
  data: {},
  // 设置超时时间
  timeout: 10000,
  // 携带凭证
  withCredentials: false,
  // 返回数据类型
  responseType: 'json'
}
Nach dem Login kopieren

PS: Hier wird ein Mock-Tool empfohlen. Die obige Anfrageadresse stammt von diesem Tool. Ich werde darüber schreiben, wie ich dieses Tool separat verwenden kann, wenn ich in Zukunft Zeit habe.

api.js

import axios from 'axios' // 注意先安装哦
import config from './config.js' // 倒入默认配置
import qs from 'qs' // 序列化请求数据,视服务端的要求
export default function $axios (options) {
  return new Promise((resolve, reject) => {
    const instance = axios.create({
      baseURL: config.baseURL,
      headers: {},
      transformResponse: [function (data) {}]
    }
  )
  // request 拦截器
  instance.interceptors.request.use(
    config => {
      // Tip: 1
      // 请求开始的时候可以结合 vuex 开启全屏的 loading 动画
      // Tip: 2 
      // 带上 token , 可以结合 vuex 或者重 localStorage
      // if (store.getters.token) {
      //   config.headers['X-Token'] = getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
      // } else {
      //   // 重定向到登录页面  
      // }
      // Tip: 3
      // 根据请求方法,序列化传来的参数,根据后端需求是否序列化
      if (config.method.toLocaleLowerCase() === 'post' 
        || config.method.toLocaleLowerCase() === 'put' 
        || config.method.toLocaleLowerCase() === 'delete') {
        config.data = qs.stringify(config.data)
      }
      return config
    },
    error => {
      // 请求错误时做些事(接口错误、超时等)
      // Tip: 4
      // 关闭loadding
      console.log('request:', error) 
    
      // 1.判断请求超时
      if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
        console.log('根据你设置的timeout/真的请求超时 判断请求现在超时了,你可以在这里加入超时的处理方案')
        // return service.request(originalRequest);//例如再重复请求一次
      }
      // 2.需要重定向到错误页面
      const errorInfo = error.response
      console.log(errorInfo)
      if (errorInfo) {
        // error =errorInfo.data//页面那边catch的时候就能拿到详细的错误信息,看最下边的Promise.reject
        const errorStatus = errorInfo.status; // 404 403 500 ... 等
        router.push({
          path: `/error/${errorStatus}`
        })
      }
      return Promise.reject(error) // 在调用的那边可以拿到(catch)你想返回的错误信息
    }
  )
 
  // response 拦截器
  instance.interceptors.response.use(
    response => {
      let data;
      // IE9时response.data是undefined,因此需要使用response.request.responseText(Stringify后的字符串)
      if(response.data == undefined){
        data = response.request.responseText
      } else{
        data = response.data
      }
      // 根据返回的code值来做不同的处理(和后端约定)
      switch (data.code) {
        case '':
        break;
        default:
      }
      // 若不是正确的返回code,且已经登录,就抛出错误
      // const err = new Error(data.description)
      // err.data = data
      // err.response = response
      // throw err
      return data
    },
    err => {
      if (err && err.response) {
        switch (err.response.status) {
          case 400:
          err.message = '请求错误'
          break
      
          case 401:
          err.message = '未授权,请登录'
          break
      
          case 403:
          err.message = '拒绝访问'
          break
      
          case 404:
          err.message = `请求地址出错: ${err.response.config.url}`
          break
      
          case 408:
          err.message = '请求超时'
          break
      
          case 500:
          err.message = '服务器内部错误'
          break
      
          case 501:
          err.message = '服务未实现'
          break
      
          case 502:
          err.message = '网关错误'
          break
      
          case 503:
          err.message = '服务不可用'
          break
      
          case 504:
          err.message = '网关超时'
          break
      
          case 505:
          err.message = 'HTTP版本不受支持'
          break
      
          default:
        }
      }
      console.error(err)
      // 此处我使用的是 element UI 的提示组件
      // Message.error(`ERROR: ${err}`);
      return Promise.reject(err) // 返回接口返回的错误信息
    }
  )
 
  //请求处理
  instance(options)
    .then((res) => {
      resolve(res)
      return false
    })
    .catch((error) => {
      reject(error)
    })
  })
}
Nach dem Login kopieren

interface.js

import axios from './api' // 倒入 api
/* 将所有接口统一起来便于维护
 * 如果项目很大可以将 url 独立成文件,接口分成不同的模块
 * 此处的数据依然来自 Easy Mock
 */
// 单独倒出
export const query = params => {
  return axios({
    url: '/query',
    method: 'get',
    params
  })
}
 
export const mock = params => {
  return axios({
    url: '/mock',
    method: 'get',
    params
  })
}
export const upload = data => {
  return axios({
    url: '/upload',
    method: 'post',
    data
  })
}
// 默认全部倒出
// 根绝需要进行 
export default {
  query,
  mock,
  upload
}
Nach dem Login kopieren

index.js

Eingekapselt in ein Vue-Plug-in, kann es in (hoher) Verwendung (B) Verwendung (Gitter)

// 倒入所有接口
import apiList from './interface'
const install = Vue => {
  if (install.installed) 
    return;
  install.installed = true;
  Object.defineProperties(Vue.prototype, {
    // 注意哦,此处挂载在 Vue 原型的 $api 对象上
    $api: {
      get() {
        return apiList
      }
    }
  })
}
export default install
Nach dem Login kopieren

Verwendung

Das heißt Es ist alles fertig. Es ist fast einsatzbereit. Führen Sie die folgenden Vorgänge in main.js aus:

// 倒入 http 文件夹下的 index.js
import api from './http/index'
Vue.use(api)
// 此时可以直接在 Vue 原型上调用 $api 了
Nach dem Login kopieren

Zusammenfassung

    Die obige Sekundärseite Die Kapselung ist relativ umfassend und grundsätzlich abgeschlossen, um unsere bisherigen Anforderungen zu erfüllen
  1. In Bezug auf die Fehlerbehandlung müssen wir uns auch auf den Rückgabewert mit dem Backend einigen und eine spezifische Vereinbarung treffen
  2. Kapselungsrückruf Es ist ein bisschen viel, wenn Sie es verwenden, müssen Sie auch then() hinzufügen, um die Ergebnisse zu verarbeiten. Natürlich müssen gute Dinge ausgeblendet werden . Ich werde sie nicht teilen...
  3. PS: IE9 unterstützt Promise nicht. Sie müssen ein Polyfill installieren.
import 'babel-polyfill'
Nach dem Login kopieren

Ich glaube, Sie beherrschen die Methode Nachdem Sie den Fall in diesem Artikel gelesen haben, lesen Sie bitte andere verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

So verwenden Sie Eltern-Kind-Komponenten in Vue, um Todolist-Komponenten zu kommunizieren


So verwenden Sie Vue um AdminLTE-Vorlagen zu integrieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Vue zur sekundären Kapselung des Axios-Plug-Ins. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Auswahl der Datenanforderung in Vue: Axios oder Fetch? Auswahl der Datenanforderung in Vue: Axios oder Fetch? Jul 17, 2023 pm 06:30 PM

Auswahl der Datenanforderung in Vue: AxiosorFetch? In der Vue-Entwicklung ist die Bearbeitung von Datenanfragen eine sehr häufige Aufgabe. Die Wahl des für Datenanfragen zu verwendenden Tools ist eine Frage, die berücksichtigt werden muss. In Vue sind Axios und Fetch die beiden am häufigsten verwendeten Tools. In diesem Artikel werden die Vor- und Nachteile beider Tools verglichen und Beispielcode bereitgestellt, der Ihnen bei der Entscheidungsfindung helfen soll. Axios ist ein Promise-basierter HTTP-Client, der in Browsern und Node funktioniert.

Nutzen Sie Vue und Axios effizient, um die Stapelverarbeitung von Front-End-Daten zu implementieren Nutzen Sie Vue und Axios effizient, um die Stapelverarbeitung von Front-End-Daten zu implementieren Jul 17, 2023 pm 10:43 PM

Nutzen Sie Vue und Axios effizient, um die Stapelverarbeitung von Front-End-Daten zu implementieren. In der Front-End-Entwicklung ist die Datenverarbeitung eine häufige Aufgabe. Wenn wir große Datenmengen verarbeiten müssen, wird die Datenverarbeitung sehr umständlich und ineffizient, wenn es keine wirksame Methode gibt. Vue ist ein hervorragendes Front-End-Framework und Axios ist eine beliebte Netzwerkanforderungsbibliothek. Sie können zusammenarbeiten, um eine Stapelverarbeitung von Front-End-Daten zu implementieren. In diesem Artikel wird detailliert beschrieben, wie Vue und Axios effizient für die Stapelverarbeitung von Daten eingesetzt werden können, und es werden relevante Codebeispiele bereitgestellt.

TrendForce: Nvidias Blackwell-Plattformprodukte sorgen dafür, dass die CoWoS-Produktionskapazität von TSMC in diesem Jahr um 150 % steigt TrendForce: Nvidias Blackwell-Plattformprodukte sorgen dafür, dass die CoWoS-Produktionskapazität von TSMC in diesem Jahr um 150 % steigt Apr 17, 2024 pm 08:00 PM

Laut Nachrichten dieser Website vom 17. April hat TrendForce kürzlich einen Bericht veröffentlicht, in dem es davon ausgeht, dass die Nachfrage nach den neuen Blackwell-Plattformprodukten von Nvidia optimistisch ist und die gesamte CoWoS-Verpackungsproduktionskapazität von TSMC im Jahr 2024 voraussichtlich um mehr als 150 % steigen wird. Zu den neuen Blackwell-Plattformprodukten von NVIDIA gehören GPUs der B-Serie und GB200-Beschleunigerkarten, die NVIDIAs eigene GraceArm-CPU integrieren. TrendForce bestätigt, dass die Lieferkette derzeit sehr optimistisch in Bezug auf GB200 ist. Es wird geschätzt, dass die Auslieferungen im Jahr 2025 eine Million Einheiten überschreiten werden, was 40-50 % der High-End-GPUs von Nvidia ausmacht. Nvidia plant, in der zweiten Jahreshälfte Produkte wie GB200 und B100 auszuliefern, aber vorgelagerte Waferverpackungen müssen noch komplexere Produkte einführen.

Wie schnell werden FET-Münzen einen zweiten Anstieg erleben? Wie hoch ist die Prognose für den maximalen Anstieg? Wie schnell werden FET-Münzen einen zweiten Anstieg erleben? Wie hoch ist die Prognose für den maximalen Anstieg? Apr 14, 2024 am 09:16 AM

Als führende Währung im Bereich der künstlichen KI hat die FET-Währung aufgrund ihrer beträchtlichen Kapitalrendite viel Aufmerksamkeit erregt. Die FET-Währung ist nicht nur ein quantitativ teilbarer Token, der von der Fetch.ai-Plattform verwendet wird, sondern auch die intelligenten Verträge der Plattform Orakel. Ein wichtiger Teil von. Mit dem Einsetzen des Bullenmarktes steigt der Preis der FET-Münzen weiter, aber die Anleger sind mit diesem Markttrend immer noch nicht zufrieden. Sie möchten wissen, wie bald die FET-Münzen einen zweiten Anstieg erleben werden. Ich würde auch gerne wissen, wie stark die Analysten des Währungskreises den maximalen Anstieg der FET-Münzen vorhersagen. Den Prognosen der Analysten im Kreis zufolge wird der zweite Anstieg im Jahr 2025 erfolgen, mit einem maximalen Anstieg von 8,15 $. Als nächstes wird Ihnen der Herausgeber im Detail berichten. Wie schnell werden FET-Münzen einen zweiten Anstieg erleben? Den Prognosen der Analysten im Kreis zufolge wird die FET-Währung zum zweiten Mal explodieren.

Vue und Axios implementieren die synchrone Verarbeitung asynchroner Datenanforderungen Vue und Axios implementieren die synchrone Verarbeitung asynchroner Datenanforderungen Jul 17, 2023 am 10:13 AM

Vue und Axios realisieren die synchrone Verarbeitung asynchroner Datenanforderungen. Einführung: Da die Seite in der modernen Front-End-Entwicklung Daten über asynchrone Datenanforderungen abrufen und dynamisch anzeigen muss, ist die asynchrone Verarbeitung zu einer unvermeidlichen Anforderung geworden. Allerdings führen asynchrone Datenanforderungen häufig dazu, dass die Codelogik komplex und schwer zu warten ist. Im Vue-Framework lässt sich über die Axios-Bibliothek die synchrone Verarbeitung asynchroner Datenanfragen einfach implementieren und so die Lesbarkeit und Wartbarkeit des Codes verbessern. 1. Einführung in Vue Vue ist ein leichtes Front-End-Framework.

Offengelegte AMD „Strix Halo' FP11-Gehäusegröße: entspricht Intel LGA1700, 60 % größer als Phoenix Offengelegte AMD „Strix Halo' FP11-Gehäusegröße: entspricht Intel LGA1700, 60 % größer als Phoenix Jul 18, 2024 am 02:04 AM

Diese Website berichtete am 9. Juli, dass die Prozessoren der AMD Zen5-Architektur „Strix“ über zwei Verpackungslösungen verfügen werden: Der kleinere StrixPoint wird das FP8-Paket verwenden, während der StrixHalo das FP11-Paket verwenden wird. Quelle: videocardz source @Olrak29_ Die neueste Enthüllung ist, dass die FP11-Gehäusegröße von StrixHalo 37,5 mm * 45 mm (1687 Quadratmillimeter) beträgt, was der LGA-1700-Gehäusegröße der AlderLake- und RaptorLake-CPUs von Intel entspricht. AMDs neueste Phoenix APU verwendet eine FP8-Gehäuselösung mit einer Größe von 25*40 mm, was bedeutet, dass StrixHalos F

Vue und Axios implementieren Fehlerbehandlungs- und Eingabeaufforderungsmechanismen für Datenanfragen Vue und Axios implementieren Fehlerbehandlungs- und Eingabeaufforderungsmechanismen für Datenanfragen Jul 17, 2023 am 09:04 AM

Vue und Axios implementieren Fehlerbehandlungs- und Eingabeaufforderungsmechanismen für Datenanfragen. Einführung: In der Vue-Entwicklung wird Axios häufig für Datenanfragen verwendet. Im eigentlichen Entwicklungsprozess treten jedoch häufig Anforderungsfehler auf oder der Server gibt Fehlercodes zurück. Um die Benutzererfahrung zu verbessern und Anforderungsfehler rechtzeitig zu erkennen und zu bearbeiten, müssen wir einige Mechanismen zur Fehlerbehandlung und Eingabeaufforderungen verwenden. In diesem Artikel wird erläutert, wie Sie mit Vue und Axios Fehlerbehandlungs- und Eingabeaufforderungsmechanismen für Datenanforderungen implementieren, und Codebeispiele bereitstellen. Installieren Sie Axi

Verpackungstechnologie und Anwendung in PHP Verpackungstechnologie und Anwendung in PHP Oct 12, 2023 pm 01:43 PM

Kapselungstechnologie und Anwendungskapselung in PHP sind ein wichtiges Konzept in der objektorientierten Programmierung. Sie beziehen sich auf die gemeinsame Kapselung von Daten und Operationen auf Daten, um eine einheitliche Zugriffsschnittstelle für externe Programme bereitzustellen. In PHP kann die Kapselung durch Zugriffskontrollmodifikatoren und Klassendefinitionen erreicht werden. In diesem Artikel werden die Kapselungstechnologie in PHP und ihre Anwendungsszenarien vorgestellt und einige spezifische Codebeispiele bereitgestellt. 1. Gekapselte Zugriffskontrollmodifikatoren In PHP wird die Kapselung hauptsächlich durch Zugriffskontrollmodifikatoren erreicht. PHP bietet drei Zugriffskontrollmodifikatoren:

See all articles