uniapp+vue2实现下载相关
1.使用同一个链接,如何实现PC打开是web 应用、手机打开是一个H5应用2.如何保证用户的使用体验3.如何解决页面请求接口大规模并发问题4.设计一套全站请求耗时统计工具5.大文件上传6.h5如何解决移动端适配问题7.实现站点一键换肤功能实现方式有哪些8.如何实现网页加载进度条9.常见图片懒加载方式有哪些10.cookie构成部分有哪些11.DNS协议了解多少12.函数式编程了解多少13.一直在window上面挂东西是否有什么风险14.小程序为什么会有两个线程15.如何通过设置失效时间清除本地存储的数据?16.如果不使用脚手架,如果用webpack构建一个自己的react应用17.用 nodejs 实现一个命令行工具,统计输入目录下面指定代码的行数18.package.json 里面 sideEffects 属性的作用19.script 标签上有那些属性20.SPA 中使用 hash 路由时作用和意义21.用户访问页面白屏了,原因是啥如何排查?22.[代码实现]S 中如何实现大对象深度对比23.JavaScript 中处理 100 万数据时确保性能和流畅度的几种方法24.<script> 标签放在 HTML 文档的 <body> 内底部25.虚拟滚动加加载的原理和实现思路26.ts二刷27.promise面试题28.命令行创建 uni-app 项目29.uniapp+v3的小知识点30.ts文件忽略校验31.['',''].join(" ").trim()32.自定义导航栏交互(导航栏左上角按钮+滚动动画效果)33.可视化点击x轴标签实现标签文字切换34.运行vue -V的时候vue : 无法加载文件 C:\Users\jiaho\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本
35.uniapp+vue2实现下载相关
整体逻辑流程
- 页面加载(onLoad 钩子)
参数接收:从路由参数中获取 operateId、staffName 和 operateStatus,并将其赋值给组件的数据属性。
数据初始化:调用 Promise.all 并行执行 getWarse、getAllianceParticipationList 和 getPrice 方法,获取仓库、商城和价格档等数据。
二维码信息获取:调用 getqrCodeinfoFn 方法,根据 operateId 获取二维码的详细信息。 - 页面交互
生成二维码:点击“生成二维码”按钮,调用 genQrCode 方法生成二维码。
下载二维码:点击“下载二维码”按钮,调用 downLoadqrcode 方法下载二维码。
编辑信息:点击“编辑”按钮,进入编辑状态,允许修改表单信息。
保存信息:点击“保存”按钮,调用 submitFn 方法保存修改后的信息。
取消编辑:点击“取消”按钮,调用 cancelEdit 方法取消编辑,恢复到原始状态。
下载 H5 页面:点击“下载 H5 页”按钮,调用 downloadH5 方法下载合成的 H5 页面图片。 - 图片上传与删除
上传图片:使用 u-upload 组件上传图片,上传前会进行图片宽度和大小的校验,校验通过后调用 upLoadImg 方法将图片上传到服务器,并将上传后的图片链接添加到表单数据中。
删除图片:点击已上传图片的删除按钮,调用 handleDelete 方法从表单数据中移除该图片。 - 下载 H5 页面图片(downloadH5 方法)
收集图片链接:将二维码图片链接、业务员介绍图片链接和公司介绍图片链接收集到 imageUrls 数组中,并过滤掉空链接,得到 validUrls 数组。
检查图片链接:如果 validUrls 数组为空,提示“没有可合成的图片”并返回。
下载图片:使用 Promise.all 并行下载所有图片,将下载后的临时文件路径存储在 tempFilePaths 数组中。
获取图片信息:使用 Promise.all 并行获取所有图片的信息,包括宽度和高度,存储在 imageInfos 数组中。
计算总高度:根据图片的宽度和高度,计算每张图片的缩放高度,并累加得到总高度 totalHeight。
创建画布并绘制图片:使用 uni.createCanvasContext 创建画布上下文,将图片依次绘制到画布上。
绘制画布:调用 canvas.draw 方法绘制画布。
将画布转换为图片:使用 uni.canvasToTempFilePath 方法将画布转换为临时图片文件。
保存图片到相册:使用 uni.saveImageToPhotosAlbum 方法将临时图片文件保存到相册。
三、重点功能分析 - 下载图片到相册
流程:在 downloadH5 方法中,首先收集所有图片链接,然后下载图片、获取图片信息、计算总高度、绘制画布,最后将画布转换为图片并保存到相册。
API 调用:
uni.downloadFile:下载图片文件。
uni.getImageInfo:获取图片的信息,如宽度和高度。
uni.createCanvasContext:创建画布上下文。
canvas.draw:绘制画布。
uni.canvasToTempFilePath:将画布转换为临时图片文件。
uni.saveImageToPhotosAlbum:将临时图片文件保存到相册。 - 加载图片
流程:在 downloadH5 方法中,使用 Promise.all 并行下载所有图片,并使用 uni.downloadFile 方法将图片下载到本地临时文件。
API 调用:
uni.downloadFile:下载图片文件。 - 为什么要用 Promise
异步操作管理:在 downloadH5 方法中,涉及到多个异步操作,如下载图片、获取图片信息、绘制画布等。使用 Promise 可以将这些异步操作封装成可链式调用的对象,方便管理和控制异步流程。
并行执行:使用 Promise.all 可以并行执行多个异步操作,提高程序的执行效率。 - 生成 H5 页面需要的流程和 API
流程:
收集所有图片链接。
下载图片到本地临时文件。
获取图片的信息,如宽度和高度。
计算所有图片的总高度。
创建画布并将图片依次绘制到画布上。
绘制画布。
将画布转换为临时图片文件。
将临时图片文件保存到相册。
API 调用:
uni.downloadFile:下载图片文件。
uni.getImageInfo:获取图片的信息,如宽度和高度。
uni.createCanvasContext:创建画布上下文。
canvas.draw:绘制画布。
uni.canvasToTempFilePath:将画布转换为临时图片文件。
uni.saveImageToPhotosAlbum:将临时图片文件保存到相册。
四、代码优化建议
错误处理:在 downloadH5 方法中,对每个异步操作都进行了错误处理,但可以进一步优化错误提示信息,让用户更清楚地知道出错的原因。
代码复用:可以将一些重复的代码提取成独立的方法,提高代码的复用性和可维护性。
性能优化:在计算图片缩放高度时,可以使用更高效的算法,减少不必要的计算。
通过以上分析,我们可以清晰地了解 demo.vue 文件的逻辑流程和重点功能,为后续的开发和维护提供了有力的支持。
本文来自博客园,作者:jialiangzai,转载请注明原文链接:https://www.cnblogs.com/zsnhweb/p/18738822
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2024-02-26 vue3中404路由匹配规则
2024-02-26 说一下flex的属性