vue+vite初始配置和vite获取env环境变量
配置文件
在项目根目录创建两个配置文件
// .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环境变量的更多相关文章
- 通过System获取java环境变量的路径
通过System获取java环境变量的路径代码为: import java.io.FileNotFoundException; import java.io.FileOutputStream; imp ...
- express+gulp构建项目(四)env环境变量
这里的文件的作用是负责设置env环境变量和日志. index.js try { require('dotenv').load({silent: true}); //dotenv从一个.env文件中读取 ...
- mysql 获取设置环境变量
mysql 获取环境变量 show global variables; 获取指定环境变量 show global variables like '%timeout'; 设置环境变量 set globa ...
- windows下配置cygwin和dig的环境变量
配置cygwin和dig的环境变量 打开"控制面板"("开始">"设置">"控制面板"),然后双击" ...
- 在c代码中获取用户环境变量
1 extern char ** environ 这是一个字符串数组,最后一个元素是null,即\0. 2 在代码中的使用方法 直接extern char **environ,然后 直接environ ...
- 转载:同一台电脑教你配置多个Tomcat的环境变量
装两个tomcat 分别是6.0和7.0 可想运行tomcat6.0 但是实际上却运行tomcat7.0 两个版本都是用解压缩包 其实就是不能运行tomcat6.0 只能运行7.0 两个环境变量都配置 ...
- 14行脚本配置Linux下一个Java环境变量
供Java人们刚开始学习.多半Java它需要花费大量的精力在开发环境的配置,于Linux下一个,构造Java环境变量,很可能加入这一努力. 为此,我做了一个bash脚本来配置自己主动Java环境变量. ...
- 配置jdk和tomcat的环境变量
一.1,新建变量名:JAVA_HOME,变量值:d:\Program Files\Java\jdk1.7.0 2,打开PATH,添加变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jr ...
- Android中配置JDK和SDK的环境变量
JDK环境变量的配置: 右击"计算机"或"我的电脑",选择"属性"-->"高级"或"高级系统设置&quo ...
- 最简单的配置Centos中JAVA的环境变量的方法
一.用途 做云开发,经常用到配置java环境变量,但是每次都写太麻烦了,所以写本文,方便以后复制粘贴. 二.安装Java 1.搜索Java包:yum search java 2.安装Java包:yum ...
随机推荐
- 测试用例Excel转XML格式教程
运行环境: Python版本:Python2.7.15 第三方库:pywin32 Excel版本:Excel2016 1.安装Python2.7.15 1)下载Python安装包 进入Python官网 ...
- ShardingSphere 解决关联表查询问题的详细方案
一.基础概念 在分库分表场景下,关联表(JOIN)查询的复杂性主要源于数据分布在不同的数据库或表中.ShardingSphere 通过 绑定表(Binding Table) 和 广播表(Broadca ...
- adb常见命令及日志
一.adb介绍 1.adb(Android Debug Bridge)是android sdk的一个工具 2.adb是用来连接安卓设备和PC端的桥梁,用户可以通过adb在电脑上对手机进行一系列操作 3 ...
- 47.9K star!全平台开源笔记神器,隐私安全首选!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "Joplin 是一款开源的笔记记录和待办事项应用,支持端到端加密同步,完美替代商 ...
- Java查找一个字符串在另一个字符串中出现的次数
主要是练习String类中indexOf的用法 /** * 查找一个字符串在另一个字符串中出现的次数 */ public class MainTest { public static void mai ...
- 深挖diff算法:揭开代码版本控制神器的神秘面纱
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- RISC-V指令:逻辑指令与移位指令
本节将继续学习逻辑指令(and.or.xor)和移位指令(sll.srl.sra) 逻辑指令 从CPU芯片电路角度来看,其实CPU更擅长指令逻辑操作,如与.或.异或 RISC-V指令集中包含了三种逻辑 ...
- TVM:visitor设计模式
visitor模式,因为它在编译器的框架中应用的广泛,在TVM中也是无处不在. visitor模式介绍 Visitor(访问者)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类, ...
- 第一次阶段性OOP题目集总结性Blog
前言: 基础题目训练说明 第一次基础题目有四道,题量适中,考察知识点主要是正则表达式的基本用法,以及简单分类讨论逻辑与java基础语法,考察学生能都否从讨论判断转变到便捷的正则表达式的使用,逻辑上的难 ...
- IntelliJ IDEA 源文件提示 cannot resolve method 或者 Cannot find declaration to go to
问题描述:IntelliJ IDEA 在源文件中提示 Cannot resolve method,但是项目可以正常编译运行,提示异常的类明明存在且没有任何异常.尝试使用ctrl+鼠标左键进入该类时,提 ...