最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

axios模塊化封裝實例化及vue本地解決跨域方案

 更新時間:2023年05月31日 09:22:49   作者:灰太狼的情與殤  
這篇文章主要為大家介紹了axios模塊化封裝實例化及vue本地解決跨域示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

開發(fā)環(huán)境 vue+axios+typescript+eslint+prettier

電腦系統(tǒng) windows10專業(yè)版

在使用vue開發(fā)的過程中,我們在數(shù)據(jù)交互的過程中,一般會選擇使用axios,很多小伙伴都在使用,下面我來分享一下axios封裝和vue開發(fā)解決跨域。

安裝axios

npm i axios -S

后端接口如下

主機一:http://192.168.0.103:8020
   接口: /api/login
主機二: http://192.168.0.103:3000
   接口: /chen

根目錄結(jié)構(gòu)

在根目錄下,新建文件,目錄結(jié)構(gòu)如下:

----src
----.env.development
----.env.production
----.env.test

env.development代碼

NODE_ENV = 'development'
//指定當(dāng)前環(huán)境模式
VUE_APP_CURRENTMODE = 'development'
VUE_APP_BASE_URL = "http://192.168.0.103:8020"
VUE_APP_BASE_PL="http://192.168.0.103:3000"
VUE_APP_BASE_PLAPI="/chen"
VUE_APP_BASE_API="/api"

在src錄下,新建network文件夾,目錄結(jié)構(gòu)如下:

----src
-----network
------Instances(實例集合)
-------index.ts(引入實例)
-------Instance1.ts(實例1)
-------Instance2.ts(實例2)
------api.js(接口封裝)

Instances下Instance1.ts代碼

import axios from "axios";
export const Instance1 = (config: Object) => {
  const instance = axios.create({
    baseURL: process.env.VUE_APP_BASE_PLAPI,
    timeout: 900000,
  });
  instance.interceptors.request.use(
    (config) => {
      if (config.method === "get") {
        config.url = config.url + "?" + config.data;
      }
      if (sessionStorage.getItem("Authorization")) {
        config.headers.Authorization =
          "auth " + sessionStorage.getItem("Authorization");
      }
      // //console.log("請求攔截成功啦");
      // //console.log(config);
      return config;
    },
    (err) => {
      console.log("請求失敗啦");
      console.log(err);
    }
  );
  //
  instance.interceptors.response.use(
    (res) => {
      return res.data;
    },
    (err) => {
      console.log("響應(yīng)失敗");
      console.log(err);
      // return err;
    }
  );
  return instance(config);
};

Instances下Instance2.ts代碼

import axios from "axios";
import qs from "qs";
export const Instance2 = (config: Object) => {
  const instance = axios.create({
    baseURL: process.env.VUE_APP_BASE_API,
    timeout: 900000,
  });
  instance.interceptors.request.use(
    (config) => {
      if (config.method === "get") {
        config.url = config.url + "?" + qs.stringify(config.data);
      }
      if (sessionStorage.getItem("Authorization")) {
        config.headers.Authorization =
          "auth " + sessionStorage.getItem("Authorization");
      }
      // //console.log("請求攔截成功啦");
      // //console.log(config);
      return config;
    },
    (err) => {
      console.log("請求失敗啦");
      console.log(err);
    }
  );
  //
  instance.interceptors.response.use(
    (res) => {
      return res.data;
    },
    (err) => {
      console.log("響應(yīng)失敗");
      console.log(err);
      // return err;
    }
  );
  return instance(config);
};

Instances下index.ts代碼

import { Instance1 } from "@/network/Instances/Instance1";
import { Instance2 } from "@/network/Instances/Instance2";
export { Instance1, Instance2 };

networt中api.ts代碼

import { Instance1, Instance2 } from "@/network/Instances";
export const Chen = (value: any) => {
  return Instance1({
    url: "/chen",
    method: "post",
    // data: value, //傳參方式一:缺點(如果這個接口在很多地方進(jìn)行了調(diào)用,修改參數(shù)了,我們需要修改很多的地方)
    data: { password, account, code } //傳參方式二:推薦傳參方法,可以更好的維護(hù)
  });
};
export const Login2 = (value: any) => {
  return Instance2({
    url: "/login",
    method: "post",
    data: value,
  });
};

在根目錄下新建vue.config.js

(和package.json同級),代碼如下

module.exports = {
  // 打包的時候去掉.map文件
  productionSourceMap: false,
  devServer: {
    proxy: {
      "/api": {
        target: process.env.VUE_APP_BASE_URL,
        changeOrigin: true,
        ws: true,
        pathRewrite: {
          "^/api": process.env.VUE_APP_BASE_URL + process.env.VUE_APP_BASE_API
        },
      },
      "/chen": {
        target: process.env.VUE_APP_BASE_PL,
        changeOrigin: true,
        ws: true,
        pathRewrite: {
          "^/chen": process.env.VUE_APP_BASE_PL
        },
      },
    }
  },
  chainWebpack: (config) => {
    // 開啟eslint自動修復(fù),關(guān)鍵代碼
    config.module
      .rule("eslint")
      .use("eslint-loader")
      .loader("eslint-loader")
      .tap((options) => {
        options.fix = true;
        return options;
      });
  },
};

請求結(jié)果如下:

本地的分享到了這里就結(jié)束啦,希望對你有所幫助,讓我們一起努力走向巔峰,更多關(guān)于axios模塊化封裝(實例化)和vue本地解決跨域的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue多次打包后出現(xiàn)瀏覽器緩存的問題及解決

    vue多次打包后出現(xiàn)瀏覽器緩存的問題及解決

    這篇文章主要介紹了vue多次打包后出現(xiàn)瀏覽器緩存的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue通過封裝全局獲取焦點指令

    Vue通過封裝全局獲取焦點指令

    這篇文章主要為大家詳細(xì)介紹了Vue通過封裝全局獲取焦點指令的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考下
    2023-12-12
  • vue父子組件動態(tài)傳值的幾種方式及注意問題詳解

    vue父子組件動態(tài)傳值的幾種方式及注意問題詳解

    這篇文章主要介紹了vue父子組件動態(tài)傳值的幾種方式及注意問題詳解,需要的朋友可以參考下
    2022-12-12
  • 詳解Vue項目的打包方式(生成dist文件)

    詳解Vue項目的打包方式(生成dist文件)

    本文主要介紹了詳解Vue項目的打包方式(生成dist文件),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 徹底搞懂并解決vue-cli4中圖片顯示的問題實現(xiàn)

    徹底搞懂并解決vue-cli4中圖片顯示的問題實現(xiàn)

    這篇文章主要介紹了徹底搞懂并解決vue-cli4中圖片顯示的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Vue 開發(fā)必須知道的36個技巧(小結(jié))

    Vue 開發(fā)必須知道的36個技巧(小結(jié))

    這篇文章主要介紹了Vue 開發(fā)必須知道的36個技巧(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vue如何通過$router.push傳參數(shù)

    vue如何通過$router.push傳參數(shù)

    這篇文章主要介紹了vue如何通過$router.push傳參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue element實現(xiàn)表格合并行數(shù)據(jù)

    vue element實現(xiàn)表格合并行數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了vue element實現(xiàn)表格合并行數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Vue3除了keep-alive還有哪些實現(xiàn)頁面緩存詳解

    Vue3除了keep-alive還有哪些實現(xiàn)頁面緩存詳解

    Vue3中的keep-alive組件用于緩存頁面,以便在切換頁面時保留其狀態(tài),下面這篇文章主要給大家介紹了關(guān)于Vue3除了keep-alive還有哪些實現(xiàn)頁面緩存的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • Vue項目中props傳值時子組件檢測不到的問題及解決

    Vue項目中props傳值時子組件檢測不到的問題及解決

    這篇文章主要介紹了Vue項目中props傳值時子組件檢測不到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

额尔古纳市| 河北省| 老河口市| 个旧市| 阜南县| 益阳市| 许昌市| 大埔区| 沙湾县| 桃源县| 黄大仙区| 琼结县| 定结县| 翁源县| 临清市| 昭觉县| 小金县| 武义县| 东乡族自治县| 丰宁| 墨玉县| 聂荣县| 九江市| 科尔| 郴州市| 伊通| 宣城市| 志丹县| 双峰县| 桃园县| 合肥市| 英德市| 浮梁县| 凤山市| 明溪县| 荃湾区| 鄂托克前旗| 庆阳市| 牙克石市| 合山市| 六盘水市|