前端vue3分享——项目封装axios、vite使用env环境变量

这篇具有很好参考价值的文章主要介绍了前端vue3分享——项目封装axios、vite使用env环境变量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


vue3封装axios,web站点,前端,javascript,vue3

⭐前言

大家好,我是yma16,本文分享关于前端vue3分享——项目封装axios、使用env环境变量。
该系列往期文章:
csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板
认识vite_vue3 初始化项目到打包
什么是axios

axios是一个流行的JavaScript库,用于在浏览器和Node.js环境中进行HTTP请求。下面是axios的原理:
Axios是基于Promise构建的,它可以使用async/await,因此在发出请求时,返回的是一个Promise对象。这个Promise对象中包含了请求成功和请求失败的回调函数。
Axios发送的请求被封装成一个请求对象。请求对象包括请求url、请求方法、请求头、请求数据等信息。在创建这个请求对象时,可以设置全局的默认值,这些默认值可以用于所有请求。
Axios是通过XMLHttpRequest对象来实现请求的。在浏览器中,XMLHttpRequest是通过ActiveXObject对象创建的。在Node.js中,它使用http或https模块来实现请求。
Axios可以进行拦截器的设置,它提供了全局请求拦截器和全局响应拦截器。这些拦截器可以用于在请求或响应之前进行一些处理,比如添加请求头或对响应进行一些处理。
Axios还提供了取消请求的功能。这个功能是通过一个CancelToken对象来实现的。使用这个对象可以在发送请求后取消这个请求。这对于用户取消请求或者在组件销毁时取消请求非常有用。
Axios提供了一些高级功能,比如支持请求和响应的转换、自动处理不同数据格式(如JSON、FormData、Binary等)以及在Node.js中处理代理等。

vite处理环境变量

Vite 的工作原理主要分为两部分:开发时编译和生产时打包。在开发时,Vite 利用 ES Modules 特性实现了单文件组件快速编译和热更新。在生产时,Vite 利用 Rollup 进行打包,生成静态文件。
在开发模式下,Vite 会通过一个简单的 HTTP 服务器来服务于应用程序。当浏览器请求应用程序时,Vite 会查找所有的入口文件,并生成一个映射表,把每个文件的依赖关系记录下来。当应用程序需要加载某个模块时,Vite 会首先解析该模块的依赖,并根据依赖关系加载其他模块。在加载过程中,Vite 会利用浏览器的缓存机制,以及服务端的缓存机制来优化加载速度。
对于环境变量的处理,Vite 的原理是通过对项目中 import.meta 对象的支持来实现的。import.meta 对象提供了当前模块的元数据信息,包括模块的 URL 和环境变量等信息。在 Vite 中,用户可以在 vite.config.js 配置文件中设置环境变量,然后通过 import.meta.env 对象来访问这些变量,从而动态地读取环境变量。在打包时,Vite 会自动将这些环境变量编译到生成的静态文件中,从而实现在生产环境中使用环境变量的功能。

⭐vue3封装统一的axios请求

官方文档:https://www.axios-http.cn/docs/interceptors
封装一个简单的axios,在每次请求的请求头都加上 headers: {'X-Custom-Header': 'yma16'}

💖 请求拦截器

http.ts

import axios from "axios";

// 实例
const createInstance = (baseURL:string)=>{
    return axios.create({
        baseURL:baseURL,
        timeout: 1000,
        headers: {'X-Custom-Header': 'yma16'}
    })
};

// @ts-ignore
const http:any=createInstance('');


// 添加请求拦截器
http.interceptors.request.use(function (config:any) {
    // 在发送请求之前做些什么
    return config;
}, function (error:any) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(function (response:any) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
}, function (error:any) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});

export {http};

在api调用的时候引入http
这是登录的api

import {http} from "../..//http/index";

export const loginUser: any = (params: any) => {
  return http.post("/cloudApi/user/login", params);
};

export const registerUser: any = (params: any) => {
  return http.post("/cloudApi/user/register", params);
};

登录查看请求头出现X-Custom-Header:yma16
vue3封装axios,web站点,前端,javascript,vue3

⭐vue3使用env环境变量

💖 vite env变量规则

变量规则
以 VITE_ 为前缀的变量才会暴露给经过 vite 处理的代码
在.env 定义

VITE_APP_HOST= http://localhost:9090/

在.env.development定义

VITE_APP_HOST= http://localhost:9090/

在.env.production定义

VITE_APP_HOST= https://yongma16.xyz/back-front/

使用import.meta调用env环境变量
在util工具目录下编写一个全局获取变量的方法globalEnv

export const globalEnv=()=>{
    return import.meta.env
};

💖 vite.config获取env参数

vite.config获取env参数使用oadEnv
process.cwd() 可以获取当前路径
vite开发环境代理切换
mode参数为config参数的模式
vue3封装axios,web站点,前端,javascript,vue3
mode 本运行为development
vue3封装axios,web站点,前端,javascript,vue3

修改vite.config.ts

import { defineConfig,loadEnv } from "vite";
import vue from "@vitejs/plugin-vue";
// @ts-ignore
import { resolve } from "path";
// @ts-ignore
import Components from "unplugin-vue-components/vite";
// @ts-ignore
import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";

// https://vitejs.dev/config/
export default defineConfig(({mode})=>{
  // 运行模式
  console.log('mode',mode)
  // 当前路径
  console.log('process.cwd()',process.cwd())
  // @ts-ignore
  const env=loadEnv(mode,process.cwd())
  console.log('env',env)
  const proxy={
    "^/cloudApi/": {
      target: env.VITE_APP_HOST,
      changeOrigin: true,
      ws: true,
      rewrite: (path) => path.replace(/^\/cloudApi/, ""),
    },
  };

  return {
    // 打包相对路径
    base: './',
    server: {
      port: 3000,
      open: true,
      cors: true,
      proxy: {
        ...proxy
      },
    },
    "css": {
      preprocessorOptions: {
        less: {
          javascriptEnabled: true,
          patterns: [resolve(__dirname, "./src/style/main.less")],
        },
      },
    },
    resolve: {
      alias: {
        "@": resolve(__dirname, "src"),
      },
    },
    plugins: [
      vue(),
      Components({
        resolvers: [AntDesignVueResolver()],
      }),
    ],
  }
});

⭐总结

项目封装axios、vite使用env环境变量主要是统一代码规范,便于开发且后续好维护。

💖 编码sliod原则

SOLID 原则是一种设计原则,用于指导编写可维护、可扩展、易于理解和可复用的代码。

  • 单一职责原则 (Single Responsibility Principle, SRP): 一个类或模块只负责一项职责,降低耦合度。

  • 开闭原则 (Open/Closed Principle, OCP): 类和模块应该对扩展开放,对修改关闭,通过抽象化来实现。

  • 里氏替换原则 (Liskov Substitution Principle, LSP): 子类应该可以替换父类并且仍能正常运行。

  • 接口隔离原则 (Interface Segregation Principle, ISP): 不应该强迫使用者依赖于他们不需要的接口。

  • 依赖反转原则 (Dependency Inversion Principle, DIP): 抽象不应该依赖细节,细节应该依赖于抽象。

这些原则可以帮助开发者设计出高质量的面向对象代码,并促进代码的可维护性和可扩展性,提高代码的复用度。

⭐结束

本文分享到这结束,如有错误或者不足之处欢迎指出!
vue3封装axios,web站点,前端,javascript,vue3

👍 点赞,是我创作的动力!
⭐️ 收藏,是我努力的方向!
✏️ 评论,是我进步的财富!
💖 感谢你的阅读!文章来源地址https://www.toymoban.com/news/detail-725135.html

到了这里,关于前端vue3分享——项目封装axios、vite使用env环境变量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记:vite3+vue3+axios前端项目跨域问题解决【前端和服务器nginx配置】

    前言:什么是跨域,网上一搜一大把,所以这里直接跳过,直入主题。 处理方式:不通过后端处理跨域,通过前端+服务器nginx处理。 1.前端涉及处理跨域的必要配置(开发环境、生产环境):vite3、vue3、axios 2.服务器涉及处理跨域的配置(生产环境):nginx【主要用到其配置

    2024年02月01日
    浏览(37)
  • axios封装—vue3项目

    前言 axios的API很友好,可以在项目中直接使用。但是在大型项目中,http请求很多,且需要区分环境, 每个网络请求有相似需要处理的部分,会导致代码冗余,破坏工程的可维护性,扩展性,所以需要对axios请求进行相应的封装 正文 安装axios 封装请求api 1. 在src目录下新建个

    2024年02月07日
    浏览(27)
  • vue3+vite中使用环境变量 .env 的一些配置情况说明

    在项目文件中新建文件.env .env.pro 两个文件其中.env 是默认设置 .env.pro 为正式环境设置 1、设置.env中的内容信息 注意vue3+vite 必须使用VITE开头的配置信息 否则无法获取 如果不想使用VITE开头自己修改就在vite.config.ts文件中添加envPrefix:“APP_” 2、在 vite 中使用环境变量,可以用

    2024年02月04日
    浏览(42)
  • vue3初始搭建项目完整教程 vue3 + vite + element-ui + axios

    1. 安装 2. 创建目录 3. 在router下新增index.js 4.修改main.ts 1. 新增文件夹 2. 新增Home.vue和About.vue 1. 修改app.vue 1.unplugin-auto-import 2. 在vite.config.js中引入 1.安装element-ui 2. 按需导入 3.在vite.config.js新增插件 4.测试是否引入成功 5.如果报错 1. 网上下载reset.css 2.在assets中新增css文件夹 3.将

    2024年02月16日
    浏览(65)
  • Vue3创建项目(四)axios封装及接口配置

    项目结构:  目录  🍉🍉🍉index.ts  🍉🍉🍉 api.ts 看完需要预计花费10分钟。 请求拦截器与响应拦截器  阅读下面代码需先了解以下内容:         请求拦截器:     请求拦截器的作用是在请求发送前进行一些操作,例如在每个请求体里加上token,每次请求携带token传给

    2024年02月03日
    浏览(35)
  • vue3+ts+vite项目引入echarts,vue3项目echarts组件封装

    技术栈 :Vue3 + Ts + Vite + Echarts 简介 : 图文详解,教你如何在 Vue3 项目中 引入Echarts , 封装Echarts组件 ,并实现常用Echarts图例 1.1 静态效果 1.2 动态效果 2.1 安装 Echarts npm: pnpm: 2.2 main.ts 中引入 2.3 Echarts 组件封装 /src/components/ReEcharts/index.vue 文件中写入如下代码 3.1 柱状图 实现

    2024年02月09日
    浏览(42)
  • vue3【使用axios并封装axios请求】

    第一步:安装axios 第二步:编写请求文件 新建request.js 简单的axios封装,里面相关提示信息,自己可以引入element-plus去添加

    2024年02月04日
    浏览(36)
  • 个人博客-SpringBoot+Vue3项目实战(6)- 二次封装Axios

    在上文中,我们封装了统一的后端数据返回结果,有了标准化的接口数据,我们就可以针对它,在前端发送接收时,进行预处理。 通常在一个企业级或者个人开源的项目中, Axios 会被二次封装。 二次封装的好处有哪些呢? 统一 url 配置 统一 api 请求 request (请求)拦截器,例

    2024年02月06日
    浏览(44)
  • vite + vue3 + vue-router4 + ts + element plus + pinia + axios构建项目

    最后是完整的vite.config.ts、main.ts配置 1、先用vite创建一个项目 2、安装element plus vite.config.ts配置组件按需导入,图标自动导入   main.ts配置 页面文件使用 3、安装axios main.ts 4、安装pinia /stores/index.ts /stores/counter.ts main.ts 页面使用 5、安装router4 /router/index main.ts   6、vite.config.ts常

    2023年04月25日
    浏览(35)
  • 1.vue3+vite开发中axios使用及跨域问题解决

    一、跨域问题解决  1.基于vite+vue3配置时,在vite.congig.js文件server项目中添加 proxy代理   文件名:vite.congig.js 2.axios封装时设置基本路径baseURL 二、provide/inject 实现axios 全区使用   在main.js中provide    app.provide(\\\'axios\\\', axios)   在组件内获取   import { inject } from \\\'vue\\\'   const axios = i

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包