You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目中Vue组件内引用静态图片的正确方法

正确的Laravel Vue静态图片引用方式

我来帮你梳理下Laravel中Vue组件引用静态图片的正确姿势,你之前踩的坑其实都是路径逻辑或资源处理规则的问题,分两种场景给你解决方案:

一、图片放在public/imgs目录下

这个目录是Web服务器的根目录,资源可以直接通过URL访问,核心是要使用绝对路径(开头加斜杠):

<img src="/imgs/sample.jpg" alt="示例图片">

你之前写的imgs/sample.jpg是相对路径,浏览器会根据当前页面的路由拼接请求地址(比如当前路由是/posts/1,就会请求/posts/1/imgs/sample.jpg),自然找不到资源。加上开头的斜杠后,不管路由在哪,都会直接从Web根目录找图片。

二、图片放在resources/imgs目录下

这个目录的资源需要经过构建工具(Mix/Vite)处理后才会发布到public目录,所以要配合require()或import,同时注意路径层级:
假设你的组件路径是resources/js/components/MyComponent.vue,图片在resources/imgs/sample.jpg,相对路径需要往上跳两级(从components到js目录,再到resources目录),正确写法是:

<img :src="require('../../imgs/sample.jpg')" alt="示例图片">

进阶:用别名简化路径

你可以给构建工具配置别名,避免每次写冗长的相对路径:

针对Laravel Mix(老版本Laravel)

在webpack.mix.js中添加别名配置:

mix.webpackConfig({
    resolve: {
        alias: {
            '@': path.resolve(__dirname, 'resources/')
        }
    }
});

之后就能用别名快速引用:

<img :src="require('@/imgs/sample.jpg')" alt="示例图片">

针对Laravel Vite(新版本Laravel)

在vite.config.js中添加别名配置:

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import path from 'path';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
    resolve: {
        alias: {
            '@': path.resolve(__dirname, 'resources/'),
        },
    },
});

然后在Vue组件中可以这样用:

<script setup>
import sampleImage from '@/imgs/sample.jpg';
</script>

<template>
    <img :src="sampleImage" alt="示例图片">
</template>

常见错误排查

  • 路径层级错误:一定要确认组件到图片的相对路径是否正确,多试几次../或../../验证
  • 构建工具未重新编译:修改resources目录下的资源后,记得重新运行npm run dev或npm run build让工具处理资源
  • 混淆两种目录的规则:public目录用绝对路径,resources目录必须通过构建工具处理引用

内容的提问来源于stack exchange,提问作者John Paul Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 11:17:28