vue3动态加载音频文件,用于不同场景加载不同的文件

news2025/2/25 23:18:40

在这里插入图片描述

本文主要介绍如何在vue3中动态加载音频文件。

目录

  • 前言
  • 静态加载
  • 动态加载
    • import函数
    • watch函数
    • 使用watch函数和import函数动态加载音频文件

前言

在vue3中,我们通常使用import xxx from 'xxxxxx'来加载文件,但是如果我们需要加载哪些文件,是需要条件去判断的,那该怎么做呢?

静态加载

先来看看最普遍的加载方式——静态加载
假设现在我需要加载one、two、three三个音频文件,这3个音频文件分别有中文版和英文版。那么按照最简单的加载方式,我应该直接import,代码如下:

import one_cn from './assets/sounds/cn/one.mp3'
import two_cn from './assets/sounds/cn/two.mp3'
import three_cn from './assets/sounds/cn/three.mp3'

import one_en from './assets/sounds/en/one.mp3'
import two_en from './assets/sounds/en/two.mp3'
import three_en from './assets/sounds/en/three.mp3'

这段代码是使用 JavaScript 导入音频文件。具体来说,它从特定的目录导入了不同语言的音频文件。这样的代码通常用于在一个程序中管理和引用不同的音频资源,可以根据需要播放不同语言的音频文件。例如,如果你想播放中文的音频,你就可以使用 one_cn,如果想播放英文的音频,你就可以使用 one_en。

但这种方式不好的地方是所有音频都会加载进来,而我们一般只需要用到其中一种,这样做的话会比较耗费资源。所以我们应该寻找一种可以动态加载文件的方法。

动态加载

动态加载需要用到import()函数和watch()函数,这里我简单介绍一下。

import函数

在Vue 3中,import()函数可以实现动态导入模块。我们使用import()函数可以异步地加载一个JavaScript模块,而无需在应用程序启动时加载整个模块。

import()函数返回一个Promise对象,当模块加载完成后,该Promise对象会被resolved。

下面是一些使用import()函数的例子:

// 加载单个模块
import('/modules/myModule.js')
  .then((module) => {
    // 使用myModule中的功能
    console.log(module.myFunction());
  });

// 加载多个模块
Promise.all([
  import('/modules/myModule1.js'),
  import('/modules/myModule2.js'),
  import('/modules/myModule3.js')
]).then(([module1, module2, module3]) => {
  // 使用myModule1、myModule2和myModule3的功能
  console.log(module1.myFunction());
  console.log(module2.myFunction());
  console.log(module3.myFunction());
});

使用import()函数可以延迟模块的加载时间,这可以提高应用程序的性能并减少初始加载时间。不过需要注意,使用import()函数会增加网络请求,因此在使用时需要权衡好加载时间和网络请求数量的关系。

watch函数

在Vue3中,watch()函数是用来监听Vue实例上的一个数据变化,并对其进行相应的处理。其基本语法如下:

watch(source, callback, options)

其中,source是一个函数或一个字符串,用来监听的数据源。callback是一个函数,以参数的形式接收被监听的数据变化。options是一个可选的配置对象,其中包含了如下选项:

  • deep:是否深度监听,默认值为false
  • immediate:是否在watcher被创建后立即执行回调函数,默认值为false
  • flush:用于控制watcher的触发时机。默认值为"pre",即在Vue更新DOM前触发watcher。可选的值还有"post""sync"

在Vue3中,使用watch()函数的方式与Vue2有些区别。Vue2中使用的是一个对象来进行配置,而Vue3中则是将配置分散到了函数的参数中,使得使用更加灵活和方便。同时,在Vue3中,watch()的返回值是一个函数,可以用来停止监听。

举个例子,下面是在Vue3中使用watch()进行数据监听的示例:

import { watch } from 'vue'

export default {
  data() {
    return {
      count: 0
    }
  },
  mounted() {
    // 监听数据变化
    watch(() => this.count, (newVal, oldVal) => {
      console.log(`count变化了:${oldVal} => ${newVal}`)
    }, {
      deep: false,
      immediate: true
    })
  }
}

在这个例子中,我们监听了count数据的变化,并在回调函数中打印了变化前后的值。同时,我们还将配置项deepimmediate分别设置为falsetrue,表示监听数据的深度和是否立即执行回调函数。

使用watch函数和import函数动态加载音频文件

使用watch()函数监听语言的变化,自定义一个dynamicLoadingMp3()函数执行加载函数import
话不多说,下面是代码示例:

<script setup>
import { ref, watch } from 'vue'

let language = ref('cn')
// 监听语言变化
watch(() => language,(now, prev) => {
	//now是language变化后的最新值
	dynamicLoadingMp3()//重新加载音频文件
});

// 根据语言动态加载音频文件
const dynamicLoadingMp3 = function(){
	// 根据语言环境的变量选择目录进行加载
	import(`./assets/sounds/${language.value}/one.mp3`).then((oneSound) => {
		//在此处使用音频文件oneSound
	});
	import(`./assets/sounds/${language.value}/two.mp3`).then((twoSound) => {
		//在此处使用音频文件twoSound
	});
	import(`./assets/sounds/${language.value}/three.mp3`).then((threeSound) => {
		//在此处使用音频文件threeSound
	});
}
dynamicLoadingMp3()
</script>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1274797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用住宅IP配置 Postman

Postman是一个用于方便进行网站测试的HTTP客户端。通过它&#xff0c;用户可以配置不同复杂度的HTTP请求&#xff0c;并将它们保存在数据库中以便将来重复使用。你可以连接代理到Postman&#xff0c;使其在进行测试时变得匿名和更安全。下面将详细说明如何在这个程序中配置代理…

RS-232串口芯片静电保护TVS管选择

RS-232串口芯片静电保护TVS管选择 RS-232接口是现在主流的串行通信接口之一&#xff0c;符合美国电子工业联盟制定的串行数据通信的接口标准&#xff0c;原始编号全称为EIA-RS-232&#xff08;简称232和RS-232&#xff09;&#xff0c;广泛应用于计算机串行接口外设连接&#…

Pytorch-gpu环境篇

最最最头疼的就是配环境了 包之间的版本匹配问题 INSTALLING PREVIOUS VERSIONS OF PYTORCH 要考虑到pytorch和torchvision之间的匹配关系 显卡版本匹配问题

AI知识库:智能化的知识管理

随着人工智能技术的不断发展&#xff0c;越来越多的企业开始关注如何利用AI技术提升业务运营效率。其中&#xff0c;AI知识库作为一种智能化的知识管理工具&#xff0c;已经在各行各业得到了广泛的应用。接下来就探讨一下AI知识库是如何帮助企业实现智能化知识管理的。 | 一、A…

【Linux】快速上手自动化构建工具make/makefile

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.什么是make / makefile 2…

【Windows】内网穿透实现hMailServer远程发送邮件

目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网…

window环境同时安装python2和python3

背景 在日常环境中&#xff0c;有时候要用到python2写的代码要用Python2执行&#xff0c;有时候python3的代码要用到python3执行.很多人需要同时让Python2和python3的命令都可以用。方便切换环境。 需求 有一些项目需要Python2环境。用的时候就使用 python2 .\1.py 有一些项…

人工智能原理复习--确定性推理

文章目录 上一篇推理概述自然演绎推理合适公式 归结演绎推理归结原理归结反演 提升归结效率下一篇 上一篇 人工智能原理复习–知识表示&#xff08;二&#xff09; 推理概述 推理就是按某种策略由已知判断推出另一判断的思维过程 分类&#xff1a; 演绎推理、归纳推理、默…

单页应用的架构与设计:打造高效可扩展的 Web 应用(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

『运行心得』机柜断电事件的排除与解决

本文描述了一起机房机柜断电事件引发的故障排除和解决过程。 当办公楼机房发生断电后&#xff0c;经过排查发现可能是空气开关短路导致。尽管重新合上空气开关后设备恢复正常&#xff0c;但断电事件再次发生&#xff0c;电工怀疑空气开关老化导致电路故障&#xff0c;并将电源…

python 实现链表

链表基础知识 链表是在物理内存中不连续&#xff0c;数据通过链表中的指针来链接到下一个元素。 链表由一系列节点组成&#xff0c;节点在运行时动态生成&#xff0c;节点一般包括两个部分&#xff1a;存储数据的数据域&#xff0c;存储下一个节点的指针域 链表的常用操作&a…

使用Docker安装部署Swagger Editor并远程访问编辑API文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

基于pyltp的依存句法分析

代码是两年多前网上找的&#xff0c;能运行。先记在这里&#xff0c;以防以后用到 import os from pyltp import Segmentor, Postagger, Parser, NamedEntityRecognizer, SementicRoleLabeller # pip install pyltp -i https://pypi.tuna.tsinghua.edu.cn/simple 可以先下载好…

Shopee买家通系统,智能下单新体验

Shopee买家通系统带来了一场智能下单的革命&#xff0c;为用户提供了更便捷的购物体验。通过简单的准备工作&#xff0c;您即可使用该系统完成自动下单&#xff0c;省去繁琐步骤&#xff0c;轻松实现购物愉悦。 账号准备&#xff0c;注册无忧 首先&#xff0c;准备一个具备下单…

C++的编译链接

文章目录 1、前置条件2、预处理/预编译2、编译3、汇编5、链接 1、前置条件 # 操作系统版本 cat /proc/version Linux version 3.10.0-1160.95.1.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Jul 24 …

iOS 开发高效率工具包:10 大必备工具

​ 作为 iOS 开发人员&#xff0c;拥有合适的工具可以极大地提高您的工作效率和工作质量。无论您是刚刚起步还是已经开发 iOS 应用程序多年&#xff0c;以下是每个 iOS 开发人员都应该了解的 10 大必备工具。 让我们开始 Xcode Xcode 是用于 iOS 开发的官方 IDE&#xff08;…

JavaScript中的for循环你用对了吗?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript-for循环 目录 循环结构 循环思想&#xff08;三要素&#xff09; 实现…

ElasticSearch知识体系详解

1.介绍 ElasticSearch是基于Lucene的开源搜索及分析引擎&#xff0c;使用Java语言开发的搜索引擎库类&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业级搜索引擎。 它可以被下面这样准确的形容&#xff1a; 一个分布式的实时文档存储&#xf…

CSS特效023:文字聚光灯效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

LoadRunner性能测试从零开始

目录 第1章 软件性能测试 1.1 什么是软件的性能 1.1.1 软件 1.1.2 软件性能的产生 1.1.3 功能与性能的关系 1.1.4 用户眼里的软件性能 1.1.5 软件人员眼里的软件性能 1.1.6 以空间换时间 1.1.7&#xff0e;以时间换空间 1.2 软件性能测试 1.2.1 性能测试在软…