相关疑难解决方法(0)

如何使用Vue.js预加载图像?

我有一个使用Vue.Js(带有webpack)的小应用程序。我有一个过渡部分。当用户单击按钮时,内容将更改。这是一个DIV带有IMG子元素的简单元素。我的问题是,当用户单击按钮时,下一个图像将被实时加载并且速度很慢,因此我需要以某种方式预加载这些图像。

我尝试了不同的方法,但无法实现图像的预加载。问题:

  • 显示页面时,只有第一个图像是DOM的一部分,因此不会加载其他图像。好的,这是正常行为。

  • 我无法通过在图像数组上使用简单的for循环来预加载图像(使用JavaScript预加载图像),因为图像将由唯一的查询字符串请求(1个)到每个请求。因此,预加载的图像名称将与请求的名称不匹配。

  • 我尝试使用加载图像require()并将其绑定到IMG标签的src属性。这也没有解决我的问题,当新的图像DIV插入DOM 后,单击后图像将被实时加载。

我的简化单文件组件(.vue)如下所示:

<template>
    <!-- [FIRST] -->
    <div v-if="contentId == 0">
      <transition
        enter-active-class="animated fadeIn"
        leave-active-class="animated fadeOut"
        mode="out-in">
        <img :src="images.firstScreenShot" key="firstImage">
      </transition>
    </div>
    <!-- [/FIRST] -->

    <!-- [SECOND] -->
    <div v-else-if="contentId == 1">
      <transition
        enter-active-class="animated fadeIn"
        leave-active-class="animated fadeOut"
        mode="out-in">

        <img :src="images.secondScreenShot" key="secondImage">
      </transition>
    </div>
    <!-- [/SECOND] -->
</template>
<script>
    export default {
        data() {
            return {
                contentId: 0,
                images: {
                    firstScreenShot: require('./assets/first-screen-shot.png'),
                    secondScreenShot: require('./assets/second-screen-shot.png'), …
Run Code Online (Sandbox Code Playgroud)

javascript preload vue.js

8
推荐指数
2
解决办法
8694
查看次数

标签 统计

javascript ×1

preload ×1

vue.js ×1