vue3+vite动态引入图片方式

 更新时间:2023年06月05日 14:49:00   作者:shareloke  
这篇文章主要介绍了vue3+vite动态引入图片方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue3+vite动态引入图片

说明

在vue2中可以使用require动态引入图片,但在开发vue3+vite项目的时候想要动态的去引入图片来显示,尝试过require 发现报错 require is not defind。

因为require是webpack的方法,而vite是不支持require方法的,vite官网:

服务时引入一个静态资源会返回解析后的公共路径:

import imgUrl from './img.png'
document.getElementById('hero-img').src = imgUrl

例如,imgUrl 在开发时会是 /img.png,在生产构建后会是 /assets/img.2d8efhg.png

行为类似于 Webpack 的 file-loader

区别在于导入既可以使用绝对公共路径(基于开发期间的项目根路径),也可以使用相对路径。

实现方式

方式一

比较笨的实现方法 使用 import()

const bgImage = ref<string>("");
const bgImageFunc = (url: string) =>
  import(url).then((res: any) => {
    bgImage.value = res.default;
  });
// 使用
bgImageFunc("../../assets/images/bg/bg.jpg");

方式二

使用vite官方提供的方式

/**
 * <p> 获取加载图片地址 </p>
 * examples: bg/bg.png
 * @param imgPath: string
 */
export const requireImg = (imgPath: string) => {
  return new URL(`../assets/images/${imgPath}`, import.meta.url).href;
};
// 使用
requireImg("bg/bg.png");

方式三

使用 import.meta.glob 提供的方法

/**
 * <p> 获取加载图片地址 </p>
 * examples: /src/assets/bg/bg.png
 * @param url: string
 *
 */
export const useFile = (url: string) => {
  const modules: Record<string, any> = import.meta.glob("@/assets/images/**/*.{png,svg,jpg,jpeg}", { eager: true });
  if (modules[url]) return modules[url].default;
  else {
    // 地址错误
    console.log("Error url is wrong path");
  }
};
// 使用 必须是带有/src 完整目录
useFile("/src/assets/bg/bg.png");

以上三种方式可以任选一种即可

vue3使用vite2.0动态引入本地图片img

需求:

引入到js中批量绑定在dom上,作图标进行展示。

 

这样就可以动态引入了

第二种直接引入

import tyarticle_iconpe from '@/assets/images/home_icon/brochure_icon.png'

第三种可以直接在assets前面加一个src就能识别了

new URL(`/src/assets/images/home_icon/name_icon`, import.meta.url).href

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于Vuejs框架实现翻页组件

    基于Vuejs框架实现翻页组件

    这篇文章主要为大家详细介绍了基于VueJs框架的翻页组件,小巧精致,性能优异的MVVM框架实现翻页组件,也适用于angular,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • vue+axios 前端实现的常用拦截的代码示例

    vue+axios 前端实现的常用拦截的代码示例

    这篇文章主要介绍了vue+axios 前端实现的常用拦截的代码示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • vue实现下拉菜单效果

    vue实现下拉菜单效果

    这篇文章主要为大家详细介绍了vue实现下拉菜单效果,运用了hover显示与隐藏以及定位,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • VUE mixin 使用示例详解

    VUE mixin 使用示例详解

    混入mixin提供了一种非常灵活的方式,来分发Vue组件中的可复用功能,一个混入对象可以包含任意组件选项,接下来通过本文给大家介绍VUE mixin 使用,需要的朋友可以参考下
    2022-08-08
  • Vue中foreach数组与js中遍历数组的写法说明

    Vue中foreach数组与js中遍历数组的写法说明

    这篇文章主要介绍了Vue中foreach数组与js中遍历数组的写法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • vue项目中如何添加枚举

    vue项目中如何添加枚举

    这篇文章主要介绍了vue项目中如何添加枚举,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 如何在Vue中使用CleaveJS格式化你的输入内容

    如何在Vue中使用CleaveJS格式化你的输入内容

    这篇文章主要介绍了如何在Vue中使用CleaveJS格式化你的输入内容,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Vue基于el-breadcrumb实现面包屑功能(操作代码)

    Vue基于el-breadcrumb实现面包屑功能(操作代码)

    这篇文章主要介绍了Vue基于el-breadcrumb实现面包屑功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 解决iView中时间控件选择的时间总是少一天的问题

    解决iView中时间控件选择的时间总是少一天的问题

    下面小编就为大家分享一篇解决iView中时间控件选择的时间总是少一天的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 详解van-cell如何使用插槽

    详解van-cell如何使用插槽

    这篇文章主要为大家介绍了van-cell如何使用插槽详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论