配置文件

在项目根目录创建两个配置文件

// .env 文件
VITE_PUBLIC_PATH=/demo/
// .env.development 文件
VITE_PUBLIC_PATH=/
VITE_PROXY=https://dingshaohua.cn

node使用环境变量

vite使用配置文件的环境变量如

vite.config.ts

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/
export default defineConfig(({ command, mode, ssrBuild }) => {
const env = loadEnv(mode, process.cwd());
console.log('env', env); return {
plugins: [vue()],
base: env.VITE_PUBLIC_PATH,
}
})

参考:

https://cn.vitejs.dev/guide/api-javascript.html#loadenv

https://cn.vitejs.dev/guide/env-and-mode.html#env-variables

如果不想使用 defineConfig,也可以获取环境变量,方法自行百度

vue客户端使用环境变量

如 路由信息使用环境变量

router.ts

const router = createRouter({
history: createWebHashHistory(import.meta.env.BASE_URL),
routes
})

贴一个完成的vite配置

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/
export default defineConfig(({ command, mode, ssrBuild }) => {
// command 变量其实就可以判断当前的环境变量如: 本地运行是server 还是打包是build
const env = loadEnv(mode, process.cwd());
return {
plugins: [vue()],
base: env.VITE_PUBLIC_PATH, // 解决项目部署服务器二级目录问题(如果你是顶级域名部署 这些可不用做)
server: {
host: true,
proxy: { // 本地开发接口代理 处理本地开发接口跨域问题
'/api': {
target: env.VITE_PROXY,
changeOrigin: true,
ws: true,
secure: false,
// rewrite: (path) => path.replace(/^\/api/, '')
}
}
}
}
})

接口请求 与封装

api.js

import axios from "axios";
import { showFailToast } from "vant"; axios.defaults.baseURL = '/api'; // http response 异常统一处理拦截器
axios.interceptors.response.use(
(response) => {
if (response.data.code === 0) {
return response;
} else {
showFailToast(response.data.msg);
return Promise.reject(response.data);
}
},
(error) => {
return Promise.reject(error.response.data);
}
); export default {
getXXX() {
return axios.get(`/xxxx`);
},
getYYY(tokenId: any) {
return axios.get(`/xxxx/${tokenId}`);
}
};

使用的时候如下

<script setup lang="ts">
import api from "../../api"; onBeforeMount(() => {
synctXXX();
syncYYY();
}); // 获取基本信息 初始化的时候 回显
const synctWorkOrder = async () => { // 这里如果没有错误的逻辑 可以不用管里 因为全局已经有拦截提示操作
const { data } = await api.getXXX(123);
}; // 提交
const onSubmit = async (values: any) => {
showLoadingToast('提交中...');
try{ // 这里如果没有错误的逻辑
const { data } = await api.getYYY(values);
showSuccessToast("提交成功您已成功提交查询表单,谢谢!");
}catch(e: any){
showFailToast(e.msg || "提交失败,请重新提交");
}
};
</script>
<template>
...
</template>

鉴权拦截

api.js

axios.interceptors.request.use(
(config) => {
if (store.state.token) {
// 判断是否存在token,如果存在的话,则每个http header都加上token
config.headers.Authorization = `token ${store.state.token}`;
}
return config;
},
(err) => {
return Promise.reject(err);
}
);

除了接口处拦截 同时路由守卫也要拦截 这样才完美

// 定义路由的时候就需要多添加一个自定义字段requireAuth,
// 用于判断该路由的访问是否需要登录。如果用户已经登录,则顺利进入路由, 否则就进入登录页面。
const routes = [
{
path: '/',
name: '/',
component: Index
},
{
path: '/repository',
name: 'repository',
meta: {
requireAuth: true, // 添加该字段,表示进入这个路由是需要登录的
},
component: Repository
},
{
path: '/login',
name: 'login',
component: Login
}
]; router.beforeEach((to, from, next) => {
if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
if (store.state.token) { // 通过vuex state获取当前的token是否存在
next();
}
else {
next({
path: '/login',
query: {redirect: to.fullPath} // 将跳转的路由path作为参数,登录成功后跳转到该路由
})
}
}
else {
next();
}
})

vue+vite初始配置和vite获取env环境变量的更多相关文章

  1. 通过System获取java环境变量的路径

    通过System获取java环境变量的路径代码为: import java.io.FileNotFoundException; import java.io.FileOutputStream; imp ...

  2. express+gulp构建项目(四)env环境变量

    这里的文件的作用是负责设置env环境变量和日志. index.js try { require('dotenv').load({silent: true}); //dotenv从一个.env文件中读取 ...

  3. mysql 获取设置环境变量

    mysql 获取环境变量 show global variables; 获取指定环境变量 show global variables like '%timeout'; 设置环境变量 set globa ...

  4. windows下配置cygwin和dig的环境变量

    配置cygwin和dig的环境变量 打开"控制面板"("开始">"设置">"控制面板"),然后双击" ...

  5. 在c代码中获取用户环境变量

    1 extern char ** environ 这是一个字符串数组,最后一个元素是null,即\0. 2 在代码中的使用方法 直接extern char **environ,然后 直接environ ...

  6. 转载:同一台电脑教你配置多个Tomcat的环境变量

    装两个tomcat 分别是6.0和7.0 可想运行tomcat6.0 但是实际上却运行tomcat7.0 两个版本都是用解压缩包 其实就是不能运行tomcat6.0 只能运行7.0 两个环境变量都配置 ...

  7. 14行脚本配置Linux下一个Java环境变量

    供Java人们刚开始学习.多半Java它需要花费大量的精力在开发环境的配置,于Linux下一个,构造Java环境变量,很可能加入这一努力. 为此,我做了一个bash脚本来配置自己主动Java环境变量. ...

  8. 配置jdk和tomcat的环境变量

    一.1,新建变量名:JAVA_HOME,变量值:d:\Program Files\Java\jdk1.7.0 2,打开PATH,添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jr ...

  9. Android中配置JDK和SDK的环境变量

    JDK环境变量的配置: 右击"计算机"或"我的电脑",选择"属性"-->"高级"或"高级系统设置&quo ...

  10. 最简单的配置Centos中JAVA的环境变量的方法

    一.用途 做云开发,经常用到配置java环境变量,但是每次都写太麻烦了,所以写本文,方便以后复制粘贴. 二.安装Java 1.搜索Java包:yum search java 2.安装Java包:yum ...

随机推荐

  1. TM1637读取键值调试笔记

      因为项目原因需要用到TM1637,实现驱动数码管和按键扫描,参考了网络上搜索到的一些例程,基本实现了功能要求,能够实现数码管点亮和按键扫描.   调试过程中也出现一些问题,现在描述一下问题和解决方 ...

  2. Springboot连接Greenplum,分页查询

    1.springboot分页查询greenplum数据报错: org.mybatis.spring.MyBatisSystemException: nested exception is org.ap ...

  3. 前端艺术实践:用Storybook构建交互式组件文档

    对于前端来说,组件话已经从热门话题变成了基础能力,自定义组件或自建组件库已是再常见不过的事了.在实际工作中组件库的文档直接决定开发体验和效率,文档建设的重要性不言而喻.今天要推荐的工具叫Storybo ...

  4. jmeter结果断言的几种方法

    这篇文章里,我们已经知道了怎样实用json断言(https://www.cnblogs.com/becks/p/14951725.html) 接下来还有几种断言,一一介绍 一.响应断言,这种断言的逻辑 ...

  5. 解决微信二维码接口接口返回:errcode\":47001,\"errmsg\":\"data format error rid: xxx和处理返回的buffer的问题

    data format error rid问题: 在php中使用curl调用微信二维码生成接口getwxacodeunlimit时得到错误响应信息: errcode\":47001,\&qu ...

  6. Trie树做题记录

    Trie树 字典树 本质上就是树上路径字符串版本 特定的路径表示完整的字符串,同层的相同字母合并为一个一样的字母. B. 数字串前缀匹配 || [一本通提高篇Trie字典树]Phone List 这题 ...

  7. 2025dsfz集训Day7: KMP与Trie树

    Day7: KMP与Trie树 \[Designed\ By\ FrankWkd\ -\ Luogu@Lwj54joy,uid=845400 \] 特别感谢 此次课的主讲 - Kwling KMP算法 ...

  8. 内网穿透——Natapp实现

    转自:NATAPP使用教程(内网穿透)_Willing卡卡的博客-CSDN博客_natapp NATAPP内网穿透使用教程 本文主要分享了有关内网穿透NATAPP的使用,包括:注册.建立隧道(免费). ...

  9. Python3正则表达式(一)

    Python3正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...

  10. Java编程--委派设计模式

    目录 委派设计模式 委派 (Delegation) 委派设计模式 委派 (Delegation) 委派(Delegation)是一种设计模式,通常用于实现代码的解耦和复用.简单来说,委派是指一个对象将 ...