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 ...
随机推荐
- 保存计算过程的计算器——java实现
一.设计模型 按照MVC-Model View Control(模型,视图,控制器)的设计思想展开程序的设计和代码的编写.数据模型部分相当于MVC中的Model角色,视图设计部分给出的界面部分相当于M ...
- 康谋分享 | aiSim5基于生成式AI扩大仿真测试范围(终)
在前面的几章节中探讨了aiSim仿真合成数据的置信度,此外在场景重建和测试流程闭环的过程中,难免会面临3D场景制作重建耗时长.成本高.扩展性低以及交通状况复杂程度难以满意等问题,当前的主要挑战在于如何 ...
- gRPC 和传统 RPC 有啥不一样?一篇讲清楚!
现在大家做系统开发,都喜欢搞"微服务架构"--简单说就是把一个大系统拆成很多小服务,这样更灵活也更容易扩展.那这些服务之间怎么沟通呢?就得靠一种技术叫 RPC(远程过程调用).今天 ...
- Java 的 CMS 垃圾回收流程
Java 的 CMS 垃圾回收流程 CMS(Concurrent Mark-Sweep)垃圾回收器 是一种并发垃圾回收器,旨在减少垃圾回收时的停顿时间,适用于对低延迟要求较高的应用.CMS 主要通过并 ...
- 1779. 找到最近的有相同 X 或 Y 坐标的点
1779. 找到最近的有相同 X 或 Y 坐标的点 class Solution { public int nearestValidPoint(int x, int y, int[][] points ...
- 智能语音备忘录:SpeechRecognition与gTTS的奇妙融合
引言:智能语音备忘录的时代已经到来 在这个信息爆炸的时代,我们每天需要处理大量的事务和信息.传统的文字记录方式虽然可靠,但在效率上往往难以满足快节奏生活的需求.想象一下,如果你能在驾车.散步或是灵感突 ...
- 定时任务Cron表达式工具类Cron Util
依赖 cron-utils的github地址:https://github.com/jmrozanec/cron-utils <dependency> <groupId>com ...
- symfony5初体验:doctrine、配置、文件上传、jwt登录/auth等常见问题
之前用symfony3.4,最近上手symfony5发现加入了很多新特性,搭配easyadminBundle.api-platform这些用起来感觉简直如有神助,瞬间爱了. 不过api-platfor ...
- 基于CARLA/ROS的多传感器融合感知系统实战教程(附完整代码)
引言:为什么需要多传感器融合? 在自动驾驶系统中,单一传感器存在固有缺陷: 摄像头:易受光照影响,缺乏深度信息: 激光雷达(LiDAR):成本高,纹理信息缺失: 毫米波雷达:分辨率低,角度精度差. 本 ...
- eclipse左边窗口再次出现的方法
1.WindowsShow ViewOtherProject Explorer 2.WindowsShow ViewProject Explorer