在 Vue 项目中引入静态图片有多种方式

在 Vue 项目中引入静态图片有多种方式,具体取决于你的项目结构和使用的构建工具(如 Vite、Webpack 等)。以下是几种常见的方法:


1. 将图片放在 public 目录下

如果你的项目使用的是 Vite 或者其他现代前端构建工具,通常会有一个 public 目录。这个目录下的文件会被直接复制到构建输出目录中,因此可以直接通过相对路径引用。

步骤:
  • logo.png 放在 public/image/ 目录下。
  • 在代码中直接使用相对路径引用图片。
const companyInfo = reactive({
    companyLogo: '/image/logo.png',
    companyName: 'NTV GBS',
    productVersion: '3.0'
})

在模板中:

<img :src="companyLogo" alt="logo" class="logo">

2. 将图片放在 src/assets 目录下

如果图片放在 src/assets 目录下,需要使用 import 语句来引入图片,并将其赋值给一个变量。

步骤:
  • logo.png 放在 src/assets/ 目录下。
  • 使用 import 语句引入图片。
import logo from '@/assets/logo.png'

const companyInfo = reactive({
    companyLogo: logo,
    companyName: 'NTV GBS',
    productVersion: '3.0'
})

在模板中:

<img :src="companyLogo" alt="logo" class="logo">

3. 使用环境变量

如果你希望在不同环境下使用不同的图片路径(例如开发环境和生产环境),可以使用环境变量。

步骤:
  • .env.development 文件中定义一个环境变量:
VITE_LOGO_URL=/image/logo.png
  • 在代码中引用:
const companyInfo = reactive({
    companyLogo: import.meta.env.VITE_LOGO_URL,
    companyName: 'NTV GBS',
    productVersion: '3.0'
})

4. 动态拼接 URL

如果 logo 是从接口获取的相对路径,可以在代码中动态拼接完整的 URL。

步骤:
  • 在接口返回的数据中获取 logo 的相对路径。
  • 动态拼接完整的 URL。
const getSystemVersion = async () => {
    try {
        const data = await request.get('/api/system/version')
        if (data.code === 0) {
            const { name, version, logo, branch } = data.data.items[0]
            companyInfo.companyName = name
            companyInfo.productVersion = version
            companyInfo.companyLogo = logo ? `${import.meta.env.VITE_API_BASE_URL}${logo}` : '/image/logo.png'
            showCloudFeatures.value = branch === 'cloud'
        }
    } catch (error) {
        console.error('获取系统信息失败:', error)
        ElMessage.error('获取系统信息失败')
    }
}

5. 检查和调试

  • 确保图片路径正确并存在。
  • 打开浏览器开发者工具,检查网络请求,查看图片请求是否成功。
  • 检查控制台是否有错误信息,帮助定位问题。

总结

  • 将图片放在 public 目录下,直接使用相对路径引用。
  • 将图片放在 src/assets 目录下,使用 import 语句引入。
  • 使用环境变量区分不同环境下的图片路径。
  • 动态拼接 URL 处理从接口获取的相对路径。
  • 检查和调试以确保图片能够正常显示。

通过以上步骤,你可以正确引入并显示静态图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值