【Electron】vue+electron实现图片视频本地缓存

有一款electron开发的桌面应用,因为包含即时通讯的功能,所以在聊天消息中会有很多的图片视频消息以及会话的头像等,这些图片视频占用了大量的网络资源,领导要求优化一下,将图片和视频缓存至本地。
摘要由CSDN通过智能技术生成

一、背景

有一款electron开发的桌面应用,因为包含即时通讯的功能,所以在聊天消息中会有很多的图片视频消息以及会话的头像等,这些图片视频占用了大量的网络资源,领导要求优化一下,将图片和视频缓存至本地。

二、步骤

1.获取所有的图片视频请求

经过调研发现electron的session模块有关于本应用的所有的web请求的监听方法。可参考 electron官方文档链接-WebRequest 于是乎,我们可以用这个方法获取到所有的图片视频的请求了

// 这里filter参数是为了筛选过滤哪些url的请求,
session.defaultSession.webRequest.onCompleted(filter, (details) => {
	// 这里可以通过details.resourceType判断请求的是否为图片类型,这里也获取了other,是因为视频也会存在在other中if ((details.resourceType === 'image' || details.resourceType === 'other')) {	// 获取请求地址 	 	const souceUrl = details.url}
 }) 

注意这个监听一定要在app.ready之后调用

app.on('ready', async () => {
	// 在这里调用
}) 

2.将图片和视频存储至本地

这里我使用的是node的request模块。在监听到请求后,将获取到的图片视频请求地址,通过request模块下载至本地。在这之前先创建本应用的本地文件缓存地址。这里有个坑,在打包之后,如果在应用内生成文件夹,windows系统会报错,因为应用没有访问权限,不能进行文件的操作。这里有两种解决方法:

1.方法一(不推荐) 因为我是通过electron-builder构建的应用,可以在打包配置里面添加 如下代码,将打包的应用等级提升为管理员权限,这样打好包安装之后运行,默认是以管理员身份运行的。

builderOptions: {
	...
	win: {
		...
		requestedExecutionLevel: 'highestAvailable'
	}
} 

但是这种方法有个缺陷,以管理员身份运行的程序,在windows系统中,是不允许文件往里面拖拽的。 设置好之后,创建文件夹

import fs from 'fs'
const path = require('path')
const log = require('electron-log') // 记录日志(如有需要安装)
// 设置存放缓存文件的文件夹
const AVATARPATH = 'temp'
// 设置文件夹位置(在安装应用文件夹内)
const basePath = path.join(__dirname, AVATARPATH)
fs.mkdir(basePath, { recursive: true }, err => {
	if (err) log.warn(`mkdir path: ${basePath} err`)
}) 

2.方法二(推荐!!!) 因为不能拖拽,会影响文件上传等功能,致使用户体验非常不好,之后又找到electron文档中,有一个方法 app.getPath(name) 可以使用。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您提供有关基于 ElectronVue 的音乐助手设计与实现的建议。首先,使用 ElectronVue 的组合可以使您开发的音乐助手能够在多种平台上运行,而不受限于特定的操作系统。其次,借助 Electron,您可以使用 web 技术来快速实现音乐助手的功能,而 Vue 则可以帮助您构建出非常有吸引力的用户界面。最后,开发 ElectronVue 的音乐助手时,您可以利用现有的 JavaScript 和 CSS 框架,以及许多可用的库来简化开发过程。 ### 回答2: 基于ElectronVue的音乐助手设计与实现的主要步骤如下: 1. 确定需求:首先,我们需要明确音乐助手的功能和目标用户。例如,音乐助手可以提供音乐搜索、在线播放、歌词显示等功能,目标用户可能是音乐爱好者等。 2. 搭建开发环境:使用ElectronVue进行开发,需要先安装Node.js和Vue CLI工具,然后利用Vue CLI创建项目。 3. 设计界面:根据需求,设计页面布局和交互。可以通过Vue的组件化思想,拆分页面为多个模块,方便管理和复用。 4. 实现音乐搜索功能:可以使用第三方的音乐API,如网易云音乐API,通过调用API获取搜索结果,并在界面中展示。可以使用Axios库进行HTTP请求,将搜索关键字作为参数传递给API,并将返回的结果显示在界面上。 5. 实现音乐播放功能:使用HTML5的Audio元素,在界面上嵌入一个音乐播放器。通过Vue的数据绑定功能,将音乐的URL绑定到Audio元素的src属性,实现在线播放功能。可以通过调用Audio元素的方法,如play()和pause()控制音乐的播放暂停。 6. 实现歌词显示功能:通过解析音乐文件的歌词信息,将歌词显示在界面上。可以使用第三方库实现歌词解析和显示,如lrc-parser和lyrics-display等。 7. 添加其他功能:根据需求,可以添加其他功能,如音乐收藏、播放历史记录等。可以使用本地存储技术,如LocalStorage,将用户的收藏和历史记录保存到本地。 8. 运行和打包:使用Vue CLI提供的命令进行开发调试,如npm run serve。最后,使用Vue CLI提供的命令进行打包,如npm run build,将项目打包成可执行的应用程序。 基于ElectronVue的音乐助手设计与实现,可以通过以上步骤进行,结合Vue的开发优势和Electron的跨平台特性,可以快速实现一个功能强大的音乐助手应用。 ### 回答3: 基于ElectronVue的音乐助手的设计与实现主要包括两个方面:前端页面的设计和后端功能的实现。 在前端页面的设计上,可以通过Vue框架来实现响应式的音乐助手界面。可以设计一个主界面,包括音乐播放器、搜索框、音乐列表等组件。通过Vue的组件化开发,可以方便地进行代码的重用和维护。同时,可以使用Element UI等UI组件库来提升界面的美观度和用户体验。 在后端功能的实现上,可以使用Electron提供的API来实现音乐播放、搜索、下载等功能。通过Electron的跨平台特性,可以在Windows、Mac和Linux等操作系统上运行。可以使用Javascript来获取音乐资源的URL,并通过下载工具实现将音乐文件下载到本地的功能。同时,可以通过缓存技术来提升音乐资源的获取速度,提供更好的用户体验。 此外,还可以通过集成第三方的音乐API来实现更多的音乐功能,比如获取歌曲的专辑封面、歌词等信息,实现歌曲的在线播放功能等。可以通过调用第三方API来获取音乐推荐、排行榜等功能,为用户提供更多的音乐选择。 总之,基于ElectronVue的音乐助手的设计与实现主要包括前端页面的设计和后端功能的实现。通过合理的架构和技术选型,可以实现一个功能强大、界面美观的音乐助手,满足用户对音乐的各种需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值