当前位置: 首页 > news >正文

信小程序点击按钮绘制定制转发分享图

1. 说明

先上代码片断分享链接:
https://developers.weixin.qq.com/s/vl3ws9mA72GG

  • 使用 painter 画图
  • 按钮传递定制化信息

效果如下:

2. 关键代码说明

文件列表如下:

{"usingComponents": {"painter": "/components/painter/painter"}
}
  • painter 为组件,在页面 json 文件中引入;
  • 组件使用 palette 传入画图参数,参数中使用 json 格式,内容基本是把 css 转换下写法,可以此在线绘制生成你需要的 json 内容: https://painterjs.github.io/
  • button 通过 data-xxx 传值,js 中通过 e.target.dataset.xxx 获取数据;
  • bindtap 绑定个空的函数,防止默认事件,比如跳转等;
  • 可拿到生成的图片地址,图片地址格式类似为 http://tmp/xxxxxxxxxxxxxxx,经实践用户转发发送其它人是可以看得到的,这省去了上传后台的麻烦;
  • painter 组件自动监听 palette 数据,一旦有新数据传入,它即自动开始绘制,时间较快;
  • 函数中通过 e.from 判断是 buttonmenu
  • 加上 showLoading 提示体验好点,后面记得 hideLoading 取消提示;
  • 当前官方版本支持 3 秒的 promise 异步时间,因此绘制图片时间不超过 3 秒才行,现在手机性能较好,我这里 1 秒的定时器来等待图片生成再去拿图片;
  • 为了避免相同图片重复生成,可以增加一定的缓存,我这里使用页面级别的缓存;
  • 最后注意返回这个 promise,因为转发图主要是 imageUrl 来设置;

3. 总结

小程序开发还是有坑和体验不好的地方,但相比前端来讲又稍微简单了点,不过小程序体积大了以后,一个页面上千行代码也是经常的事,所以提前使用上 typescript scss ,多使用 class 封装等对于后续维护有更好的体验。

参考资料:
[1] https://github.com/Kujiale-Mobile/Painter
[2] https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html#onShareAppMessage-Object-object

http://www.lryc.cn/news/13114.html

相关文章:

  • Python自动化测试-使用Pandas来高效处理测试数据
  • 语音增强学习路线图Roadmap
  • nginx配置ssl实现https访问
  • JavaScript 语句
  • 将古老的ASP项目转换为PHP初探
  • 数据结构复习(七)模板类封装实现不带头结点的单链表
  • IDEA插件 RestfulTool插件——Restful服务开发辅助工具集
  • 2023年全国最新会计专业技术资格精选真题及答案1
  • Linux 配置RAID组
  • 【2021/推荐/社交网络】Socially-Aware Self-Supervised Tri-Training for Recommendation
  • Django搭建个人博客Blog-Day06
  • DQL 多表查询
  • BUUCTF Reverse xor
  • vite和esbuild/roolup的优缺点
  • 32-Golang中的map
  • LeetCode-384-打乱数组
  • 九龙证券|重大利好!期货公司打新再“解绑”:可直接参与首发网下配售!
  • 信号完整性设计规则之串扰最小化
  • Windows Ubuntu双系统 设置时间同步方式
  • 【python】英雄联盟电竞观赛引擎 掉落提示 CapsuleFarmerEvolved 「Webhook」「钉钉」
  • 加油站会员管理小程序实战开发教程11
  • Python量化入门:投资的风险有哪些?
  • AV1编码标准整体概述
  • 基于springboot+vue的药物咨询平台
  • 第64章 SQL 主机教程
  • 【软件测试】python接口自动化测试编写脚本,资深测试总结方法,你的实用宝典......
  • MathType公式编辑器过期(禁止联网)的解决方案
  • 电子技术——共栅和共源共栅放大器的高频响应
  • 基于jsplumb构建的流程设计器
  • 解析从Linux零拷贝深入了解Linux-I/O(下)