如何在 vue 组件中使用 Laravel 资产

Mah*_*ndi 4 php laravel vue.js balde

我使用带有 vue js 的 Laravel 5.7
我尝试在 vue 组件中显示图像元素,但我不能使用 Laravel 刀片助手!

<img src="{{asset('admin/images/users/avatar-1.jpg')}}" width="35 px" height="23px">
Run Code Online (Sandbox Code Playgroud)

它给我看错误

那么如何在 vue 组件中使用 Assets Helper 呢?

BBo*_*Bog 12

您可以采用不同的方法,更符合您asset在刀片模板中的使用方式。

在布局的 head 部分创建一个对基础资产路径的全局引用,像这样

<script>
window._asset = '{{ asset('') }}';
</script>
Run Code Online (Sandbox Code Playgroud)

下一步是创建一个 Vue mixin。在我的情况下,trans.js具有以下内容的文件:

module.exports = {
    methods: {
        asset(path) {
            var base_path = window._asset || '';
            return base_path + path;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

确保在 Vue 之后包含它,例如:

window.Vue = require('vue');
Vue.mixin(require('./asset'));
Run Code Online (Sandbox Code Playgroud)

然后你可以在你所有的 Vue 组件中使用它。您的原始代码如下所示

<img :src="asset('admin/images/users/avatar-1.jpg')" width="35 px" height="23px">
Run Code Online (Sandbox Code Playgroud)

请注意在这种情况下缺少{{和添加:,因为它用作属性值。


utd*_*dev 6

vue组件文件以.vue结尾,不能直接在这些文件中使用blade的东西,需要做如下操作:

Vue 组件具有所谓的 props 属性,例如,如果您创建以下组件:

// TestComponent.vue

<template>
    <div>
        <p :users="users"></p>
    </div>
</template>

<script>
    export default {

        props: ['users'],

        data: () => ({
            // ...
        }),
    }
</script>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以将数据传递给道具属性用户,因此您可以调用刀片文件中的组件并将您的用户从服务器端添加到道具字段,如下所示:

<test-component :users="{{ $users }}"></test-component>
Run Code Online (Sandbox Code Playgroud)

对于图像,您需要熟练掌握并添加图像源。

不要忘记在 app.js 文件中初始化组件

Vue.component('test-component', require('./components/TestComponent.vue'));
Run Code Online (Sandbox Code Playgroud)


小智 5

Blade 未在 vue 组件文件(.vue 文件)上运行,如果仅使用图像路径(<img src=" ">)将 images 文件夹移动到 laravel 公共目录,然后可以直接使用图像路径

<img src="/images/users/avatar-1.jpg" width="35 px" height="23px">

否则你必须像这个答案一样调用 vue props


Bal*_*aji 5

在图像路径的开头添加正斜杠。文件应该是 laravel 公共文件夹

<img src="/admin/images/users/avatar-1.jpg">
Run Code Online (Sandbox Code Playgroud)