在微前端qiankun中使用Vite你踩坑了吗?

本文介绍了在微前端框架qiankun中使用Vite进行应用打包所遇到的挑战。作者分享了在实际操作中发现qiankun官方暂未明确支持Vite的情况,但通过探索,可以找到解决办法。同时,文章还提到了另一个微前端框架MicroApp,作为qiankun的替代选择,以应对不同的微前端需求。
在 Vue.js 项目中使用 Vite 获取和使用环境变量时,可以通过 `.env` 文件定义不同环境下的配置,并通过 `import.meta.env` 对象访问这些变量。Vite 默认只暴露以 `VITE_` 开头的环境变量给客户端代码,这样可以确保敏感信息不会被意外暴露。 ### 环境变量命名规范 - 所有自定义环境变量必须以 `VITE_` 开头,否则它们不会被加载到客户端环境中。 - 变量值始终作为字符串处理,即使原始值是布尔值或数字,也需要手动转换[^1]。 例如,在 `.env.development` 文件中定义如下内容: ```bash # 页面标题 VITE_APP_TITLE='博客' # 开发环境接口地址 VITE_SERVE='http://******' ``` 可以在 Vue 组件或其他 JavaScript/TypeScript 文件中通过以下方式访问这些变量: ```javascript console.log(import.meta.env.VITE_APP_TITLE); // 输出: 博客 console.log(import.meta.env.VITE_SERVE); // 输出: http://****** ``` ### 在 vite.config.ts 中使用环境变量 如果需要在 `vite.config.ts` 配置文件中使用环境变量,可以通过 `loadEnv(mode, process.cwd())` 方法获取当前模式下的环境变量。这种方式适用于配置服务器端选项(如代理、端口等)或构建参数(如是否删除 console 和 debugger)[^2]。 示例代码如下: ```typescript import { defineConfig, loadEnv } from 'vite'; import vue from '@vitejs/plugin-vue'; export default ({ mode }: any) => { const env = loadEnv(mode, process.cwd()); return defineConfig({ plugins: [vue()], server: { port: Number(env.VITE_PORT), // 端口号 proxy: { '/api': { target: env.VITE_SERVE, changeOrigin: true } } }, build: { terserOptions: { compress: { drop_console: Boolean(env.VITE_DROP_CONSOLE), drop_debugger: Boolean(env.VITE_DROP_DEBUGGER) } } } }); }; ``` ### 处理非字符串类型的环境变量 由于环境变量默认为字符串类型,因此在处理布尔值或数值型变量时需显式进行类型转换。例如,将字符串 `'true'` 转换为布尔值 `true` 或将 `'8080'` 转换为数字 `8080`。这种做法可以避免运行时错误并提高配置灵活性[^3]。 ```typescript const VITE_DROP_CONSOLE = Boolean(env.VITE_DROP_CONSOLE); const VITE_PORT = Number(env.VITE_PORT); ``` ### 区分不同环境的配置 Vite 根据当前模式自动加载对应的 `.env` 文件。例如: - 当前模式为 `development` 时,加载 `.env.development`; - 当前模式为 `production` 时,加载 `.env.production`。 这意味着可以根据不同的部署环境设置特定的 API 地址、功能开关等配置,从而实现灵活的多环境支持[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值