当前位置: 首页 > news >正文

Vue 项目中使用 EJS 模板动态注入环境变量

🚀 Vue 项目中使用 EJS 模板动态注入环境变量

在使用 Vue CLI 构建项目时,public/index.html 是一个 EJS 模板文件。很多小伙伴想要在 HTML 里根据 process.env 注入动态变量,比如根据生产环境设置 baseUrl,却发现直接写:

var baseUrl = process.env.VUE_APP_BASE_API;

最后打包后仍然输出的是字面量 process.env.VUE_APP_BASE_API,而不是它的值。


🎯 问题原因

Vue CLI 中 public/index.html 是由 EJS 渲染的模板。
在 EJS 语法中:

<% ... %> 表示逻辑代码(不会输出内容)
<%= ... %> 表示输出变量值(会自动 HTML 转义)
<%- ... %> 表示输出变量值(不转义)

所以你要在 HTML 中输出环境变量的值,必须用:

<%= process.env.VUE_APP_BASE_API %>

🏗 示例代码

以下代码会在生产环境下把 VUE_APP_BASE_API 注入到全局 JS 变量:

<% if (process.env.NODE_ENV === 'production') { %><script>window.SITE_CONFIG['projectName'] = 'zhubayi';var baseUrl = '<%= process.env.VUE_APP_BASE_API %>';</script>
<% } %>

这里:
if 判断是否是生产环境
<%= ... %> 输出 VUE_APP_BASE_API 的值为字符串

.env.production文件

# 开发环境配置
NODE_ENV = 'production'# 页面标题
VUE_APP_TITLE = 测试平台# 管理系统/生产环境
VUE_APP_BASE_API ='/test-api'

🛠 使用建议

  • 注意 1:环境变量必须在 .env.production.env 文件中定义,且变量名要以 VUE_APP_ 开头,才会在 Vue CLI 中生效。
  • 注意 2:如果你输出的变量是路径,注意末尾是否带 /,拼接时容易出错。
  • 注意 3:如果需要输出复杂 JSON,可以使用 JSON.stringify(process.env.MY_VAR)

📦 总结

✅ 在 EJS 模板中,想要输出变量值,必须用 <%= ... %>
✅ 普通 <% ... %> 是逻辑控制,不会输出任何内容。


http://www.dtcms.com/a/175263.html

相关文章:

  • 哪些岗位需要考取城市客运安全员证?
  • SCINet 训练代码修改
  • cmake qt 项目编译(win)
  • npm下载插件无法更新package.json和package-lock.json文件的解决办法
  • clickhouse - 重新建表覆盖旧表-解决分区时间错误问题-197001
  • AI内容检测的技术优势与应用场景
  • Java注解
  • Linux开发工具【上】
  • win11共享打印机主机设置
  • 使用 Python 监控系统资源
  • LeetCode 解题思路 45(分割等和子集、最长有效括号)
  • 程序员学商务英语之Shipment Claim 运输和索赔
  • LeetCode 每日一题 2025/4/28-2025/5/4
  • Go语言——string、数组、切片以及map
  • 代码mark:脚本获取包含全角字符的字符串的长度
  • Grafana-新增用户
  • 【AI】如何自己训练AI大模型
  • 20250506| 物化视图学习
  • 【Python】--实现多进程
  • FastComposer论文问题与解决
  • 信息论06:信息增益——量化不确定性的艺术与科学
  • STM32H743单片机实现ADC+DMA多通道检测
  • 匿名函数对编译错误的影响
  • day17 天池新闻数据KMeans、DBSCAN 与层次聚类的对比
  • SpringSecurity配合Thymeleaf实现详解,以及实战用例
  • 【计网】ipconfig、ping、arp、tracert
  • mysql中select 1 from的作用
  • 嵌入式MCU语音识别算法及实现方案
  • 自动生成 te.extern 接口:TVM 中第三方库的智能化接入方案
  • 达梦DM数据库安装步骤