Taro+nestjs+mongodb实现健身记录微信小程序

健身记录小程序

代码仓库:gitee.com/chenxiangzh...

前端技术栈:taro/ts(针对微信小程序)

后台技术在:nestjs/mongodb

项目背景:周围同事健身氛围浓厚,讨论讨论着就突发奇想做个app。也看了当前比较流行的健身app,感觉比较复杂。以前没做过小程序,最后基于学习的心态,搞了这个。

本篇文章侧重于前端。

项目介绍

用于记录健身日常的微信小程序,由三个页面组成:动作页、记录页、计划页

1.动作页

可自定义添加动作。允许上传图片、实现训练肌肉可视化(通过canvas绘制)、通过MD渲染描述,实现自定义风格等;

2. 记录页

基于动作添加记录。对其进行记录组数/计时

3. 计划页

可定制一系列动作的训练方式与强度。

难点攻克

  1. 肌肉绘制:微信小程序不支持svg,需采用canvas的方式绘制肌肉。因为是健身小白,在查资料方面做的功课比较多。

    • 通过Adobe Illustrator绘制肌肉矢量图(用一张图片打底绘制肌肉,需要注意层次关系,包括外部描边以及肌肉轮廓);
    • 对导出的矢量数据进行重组。我使用了python,将矢量数据转为可使用的json
    • 在显示方面,还需要基于美观与简洁性选择性绘制,比如股直肌、股内侧肌、股外侧肌可概括为股四头肌,你需要考量应该以单个为一个选择单位,还是这一组为一个选择单位。
  2. MD渲染文本:找过第三方库,但是发现都不太适用,于是自己封装了一个md渲染器,功能比较简单,只允许渲染标题、列表和代码块。其中最难的是快捷插入样式块,目前还是有一些问题,插入时键盘会闪一下,这个确实不知道这么解决。只能牺牲一部分体验来实现功能了。

    • 光标位置:Textarea只能通过onInput或者onBlur拿到光标位置。对于其他的方式比如先获取dom,再通过其内置方法比如selectionStart获取,而实际上很多内置方法都是显示undefined,完全用不了。可能因为Textarea是已经被Taro/微信小程序封装过一次的,也理解。
    • 插入文本后让光标位于中间:跟上面同理,内置方法拿不到。这里的实现方法是,先插入内容,再更新TextareaselectionStartselectionEnd属性为你要插入的光标位置,再延迟focus
  1. 自定义图标:微信小程序不支持svg,需要将svg转为base64
相关推荐
计算机毕设指导61 小时前
基于微信小程序的咖啡店点餐系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
光影少年12 小时前
rn如何和原生进行通信,是单线程还是多线程,通信方式都有哪些
前端·react native·react.js·taro
计算机程序设计小李同学19 小时前
婚纱摄影集成管理系统小程序
java·vue.js·spring boot·后端·微信小程序·小程序
计算机徐师兄1 天前
Java基于微信小程序的食堂线上预约点餐系统【附源码、文档说明】
java·微信小程序·食堂线上预约点餐系统小程序·食堂线上预约点餐微信小程序·java食堂线上预约点餐小程序·食堂线上预约点餐小程序·食堂线上预约点餐系统微信小程序
杨进军2 天前
模拟 Taro 实现编译多端样式文件
前端·taro
毕设源码-邱学长2 天前
【开题答辩全过程】以 基于微信小程序的松辽律所咨询系统的设计与实现为例,包含答辩的问题和答案
微信小程序·小程序
计算机毕设指导62 天前
基于微信小程序的钓鱼论坛系统【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
qq_12498707532 天前
基于微信小程序的宠物交易平台的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·毕业设计·计算机毕业设计
kyh10033811202 天前
第二个微信小游戏《汉字碰碰消》上线啦!
微信·微信小程序·微信小游戏·去水印微信小程序·养了个羊
计算机毕设指导62 天前
基于微信小程序的精致护肤购物系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea