Vue 为图片赋值动态地址
Vue 的的 src 属性在赋值时,如果是静态内容可以直接指定,但动态内容则不行更多精彩更多技术博客,请移步 asing1elife’s blog静态指定的方式一般静态指定时,会将图片放在相同路径下,然后通过绝对路径进行指定<mt-header fixed><img class="logo" sr
·
Vue 图片 的 src 属性在赋值时,如果是静态内容可以直接指定,但动态内容则不行
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
静态指定的方式
- 一般静态指定时,会将图片放在相同路径下,然后通过绝对路径进行指定
<mt-header fixed>
<img class="logo" src="./images/logo.png" alt="logo" slot="left">
</mt-header>
静态方式碰到动态地址存在的问题
- 根据 Vue 动态赋值的原则,如果要动态指定地址,则需要通过以下方式
<mt-header fixed>
<img class="logo" :src="`./images/logo-${type}.png`" alt="logo" slot="left">
</mt-header>
- 但实际上通过上述方式无法加载到对应图片,因为在 webpack 中静态图片会被当做模块来加载,如果改为动态加载,url-loader 则无法解析图片地址
- 也就是说如果动态去加载静态图片,会导致程序在启动前无法获取到完整的图片路径,从而无法加载到对应的静态资源
动态指定的方式
- 有些情况下,需要被加载的图片资源是固定的,但图片的名称却需要动态匹配
- 对于这些静态资源,如果放置到图片服务器感觉有点大材小用,所以其实可以放置在项目的 /static 目录下
- 对于在该目录下的图片资源,项目启动时会预加载,所以就算动态指定具体名称,也可以获取到对应图片
- 之后在指定时只需要通过绝对路径写明图片地址即可
<div class="employment-item">
<img :src="`/mop/static/character/consultant-${active(2) ? 'white' : 'blue'}.png`">
</div>
动态指定需要注意的点
- 一般生产环境中对于项目静态资源都会指定一个根路径
- 具体指定方式在 config/index.js 文件中的 build 节点,存在如下代码
assetsPublicPath
就是为静态资源指定的根路径- 为了和生产环境保持一致,开发环境也需要在 config/index.js 中的 dev 节点指定
更多推荐
已为社区贡献28条内容
所有评论(0)