作为一个二流前端也有段时间了,每天沉溺于项目功能代码很多积累到最后只成了模糊的印象。
很不巧,我这个人记性不太好。
不过有句话是这么说的,好记性不如烂笔头,在这个年代当然不需要烂笔头了,但道理是一样的,得有个地方做积累与沉淀,无论是以后翻看还是分享都是可以拿出手的。

废话说够了,那么,让一切的开始。
作为第一篇记录,也分享不了太多的东西,代码什么的就先不上了,最近在开发小程序,那就先记录一些在微信小程序的项目中踩过的坑。

1. 小程序界面相关

1.1 小程序底部 Tabbar

在绝大多数的情况下,小程序自带的底部Tabbar都能满足需求。但在此项目中需要根据页面来改变底部Tabbar内容与连接,尝试使用wx.setNavigationBarTitle(OBJECT),wx.setNavigationBarColor(OBJECT)等接口来对底部导航做设置,发现这两个接口并不能控制导航单项的显示隐藏。 结局方案:自己写底部。

1.2 高度适应问题

随着iphonex的加入,市面上的长屏幕手机越来越多,而项目中对界面的设计往往是针对iphone6的1344px制作的,而在项目中单位统一使用了适应宽度的rpx,在大部分页面中会出现底部较长等问题,这个问题本身影响不大,但在活动页中底部过多的留白会造成较差的用户体验,但是盲目引入vh等适应高度会造成图片变形等问题。
最后的解决方案:获取手机的宽高比例后与设计稿的宽高比例做对应的计算,计算出冗余的高度,并将这些高度分配在元素的间距之中。

1.3 位于界面底部的输入框上拉距离问题

在移动端的前端表单中,底部的输入框会被键盘顶上适应的距离,但这个距离是以输入框底部为基准的,在你的输入框有padding等样式时会出现较差的用户体验,特别在使用ui框架的cell之类的元素,会导致上移距离不够的问题。
最终解决方案:改写ui框架的cell,新增一个样式,让这个样式中的input框以高度占满整个cell列。

1.4 动画问题

wx自带的动画接口功能不够完善,无法适应项目的循环动画等需求。
最终解决方案:自己写动画,并做相应的封装。项目制作中未封装成组件,遂写在util中。 如果能够支持,使用css3动画应该是最好的解决方案。

单个,有结束的动画:
const animation=function (params, end, frame, speed,that, callback) {//参数自左到右分别为修改对象,结束值,刷新速度,刷新距离,回调函数,注意,end应能被speed整除let clock2 = setInterval(() => {let value;for (let i in params) {params[i] < end ? params[i] = params[i] + speed : params[i] = params[i] - speed;value = params[i];}that.setData({...params})if (value == end) {clearInterval(clock2);if (callback)callback();}}, frame)
};
复制代码
循环动画 注意start应小于end
const animationload = function (params,start, end, frame, speed, that) {//参数自左到右分别为修改对象,最小值,最大值,刷新速度,刷新距离let flag=true;let value;let clock2 = setInterval(() => {if(flag){for (let i in params) {params[i] < end ? params[i] = params[i] + speed : params[i] = params[i] - speed;value = params[i];}that.setData({...params})if (value >= end) {flag = !flag;}}else{for (let i in params) {params[i] > start ?params[i] = params[i] - speed: params[i] = params[i] + speed;value = params[i];}that.setData({...params})if (value <= start) {flag = !flag;}}}, frame)
};
复制代码

1.5 图片加载问题

小程序中加载本地图片的速度会非常慢。
解决方案:使用base64(代码太难看了,否决),后台架设图片服务,使用线上图片(虽然还是有点慢)。

1.6 icon-font的问题

程序中需要引入iconfont图片。
解决方案:小程序能够支持iconfont,甚至可以对此作出封装。但此项目中只是单纯的引入了小程序并未做封装。
将所需的icont图片库下载,拿出里面的iconfont.css以线上的地址替代头部,并对.iconfont做出相应的修改,重命名成.wxss的文件格式,放入util中再需要的css中以 @import "../../utils/iconFont.wxss"引入即可。

1.7 使用的ui框架 zan-ui的一些问题

ui框架层次不如原生组件,再使用中会出现原生组建覆盖再ui框架上的问题。
解决方案:弹出时隐藏一些组件或是干脆重写。

1.8 scroll-view 需要设置高

小程序的scroll-view必须要设置高。
解决方案:通过微信api获取可视高度

    wx.getSystemInfo({success: (res) => {console.log(res.windowHeight);this.setData({height: res.windowHeight - 48,pageHeight: res.windowHeight})}});
复制代码

1.9 防抖问题

拆红包,预测,小游戏等涉及倒接口,setInterval的按钮不加防抖会出现严重的bug 解决方案:加入防抖机制

1.10 入口加载判断去不同页面时出现首页后跳转

小程序的入口只有一个,可往往需要不同参数来判断跳转的页面。
解决方案:再首页加入一个loading页面判断完毕后跳转倒各自的页面。

2. 小程序框架编码问题

2.1 小程序的跳转只能带url中?后的参数

小程序无法像react-native那样再navigator中附带对象等参数。
解决方案:使用app等全局变量。

2.2 小程序的全局变量问题

小程序的全局变量wx.setStorage()后产生的缓存不会因为小程序的删除而清除。
解决方案:使用api中的wx.clearStorage()来清楚缓存。

2.3 数据改造,列表分页时,较为优雅的写法

  getList(params) {console.log(params)getPageList(params).then(res => {console.log(res.data.data.data)const data = res.data.data.data.map((item, key) => {return {...item,modifyTime: moment(item.endTime).format('YYYY.MM.DD'),// department_name: item.projectDockingDeaprtmentList.map(item => item.department_name).join(' ')departmentsinfo: item.departments.map(item=>(`@${item.departmentName}`)).join(' ')||'@All',};});// 按照页面赋值if (this.pageNo === 1) {this.setData({dashboard: data});} else {this.setData({dashboard: this.data.dashboard.concat(data)});}this.setData({loadStateType: 'text',loadStateText: '上拉加载更多',});if (data.length < this.data.params.pageSize) {this.setData({loadStateType: 'text',loadStateText: '暂无更多数据',});}})},
复制代码

2.4 无法获取用户微信号

微信的wx.getUserInfo是无法获取倒用户的微信号的,只能获取倒用户的openid

2.5 获取用户是否关注了与小程序绑定的公众号的问题

解决方案:可以通过wx.getUserInfo接口中是否能获取UnionID来判断

2.6组件封装

本项目中未使用组件化的思路,需要改进。
解决方案:微信小程序组件化

3. 小程序上线的一些问题

2.1 后台必须使用https

后台接口域名必须谁用https,并且在微信平台中做过设置。

2.2 其他配置

上线可以选择关闭不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书这个选项

以上是个人在项目中的一些经历,可能观念有误欢迎指正,随着开发的进行研究的深入会继续补充修正,感谢各位大佬的阅读。

转载于:https://juejin.im/post/5b8df926f265da43673ebc9f

关于最近开发小程序中踩过的那些坑相关推荐

  1. 使用TS开发小程序中遇到的问题

    在使用ts开发小程序的过程中,遇到了一些开发工具和关于ts的使用上的一些问题,并记录解决方法 1. ts开发过程中类型指定问题 Type 'number | undefined' is not ass ...

  2. uni-app开发小程序中的历史记录

    1.首先,你要把你搜索道的内容存到本地 2.然后在页面取出来 3.渲染页面即可 4.重复搜索过的会把之前的删除,添加最新的 5.这里还包括一键清空所有 注意这里的搜索历史记录是真实项目中的的案例包括细 ...

  3. 小程序中接口的问题及坑

    文章目录 一.wx.navigateTo无法打开页面 二.本地资源无法通过 css 获取 三.请求接口问题 请求接口之参数 方式 一.wx.navigateTo无法打开页面 一个应用同时只能打开10个 ...

  4. 小程序多个echars_微信小程序中使用echarts以及踩坑总结

    人在家中坐,锅从天上来. 半个月前本来在家写着一个项目,还没来得及提测,领导突然一个电话,需要立刻去支援另一个项目,一打听,一个烂尾半年的项目,纵使内心不愿意,还是要去啊.因为鲁迅说过,生活就像强*, ...

  5. 快手小店电脑版_微信PC版更新!支持在小程序中使用微信支付 | 一周资讯

    小程序1. 微信PC版更新,支持在小程序中使用微信支付.12月19日,微信PC端推出内测版2.7.2.73,新版本支持以下新功能:新增看一看精选内容,新的订阅号浏览体验,支持在小程序中使用微信支付.( ...

  6. 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等

    在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及 ...

  7. 开发微信小程序 中遇到的坑 及解决方法

    开发微信小程序 中遇到的坑 及解决方法 参考文章: (1)开发微信小程序 中遇到的坑 及解决方法 (2)https://www.cnblogs.com/feiye512/p/6070052.html ...

  8. 小程序中里的bindinput_云开发实战分享|诗和远方:旅行小账本云开发

    原创:豪豪 前言 最近沉迷小程序开发,发现了一款功能.界面.体验俱佳的小程序"旅行小账本".着手做了个简约版--"旅行小账本".效果比较满意,毕竟前后台一人单干 ...

  9. uni-app 开发小程序,使用到u-charts.js时会出现弹框或下拉框部分与图标重叠的情况(还有在解决过程中出现 vasToTempFilePath: fail canvas is empty)

    如下图,是我用uni-app开发小程序时出现视图与弹框或下拉框重叠的效果图,在微信开发工具上显示正常,但到了真机上就这样. 解决措施: 在小程序中canvas层级过高,导致z-index也无法让弹窗置 ...

  10. 微信开发小程序云开发云存储中文件下载地址实时读取文件内容实时下载地址解读

    微信开发小程序云开发云存储中文件下载地址解读 最近公司要我开发一款具备电子签名功能的微信小程序,虽然我是Android开发程序员,但...老总要求了那我就去做呗,好在微信小程序还算入门容易,网上有很多 ...

最新文章

  1. 设计模式的征途—17.模板方法(Template Method)模式
  2. 初涉程序员之路的感悟
  3. node.js 搭建blog
  4. logstic 回归文章链接
  5. java 错误登陆次数_纯java代码实现登陆次数验证,登陆错误5次之后锁定30分钟
  6. 看Java大牛是如何高效学习的?你掌握好这些了吗?
  7. cetos 中vsftpd从安装到配置完全教程
  8. HTML滚动条自定义
  9. 高等数学 · 希腊符号
  10. 关于Mac下载brew报curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
  11. 文本转语音的接口(开放免费)
  12. 计算机本科生毕业设计题目(三)
  13. SPSS数据分析常见问题(差异性研究)
  14. PS使用技巧(一) 移动工具 V
  15. WebStrom配置好git后文件颜色代表的含义
  16. JSP概述——什么是JSP、JSP运行原理
  17. 最全银行核心系统架构解读(165页PPT)
  18. [RHEL 4U4] 最小安装后安装Apache(RPM)
  19. Linux 下怎么查看服务器的cpu和内存的硬件信息
  20. 黑苹果重置NVRAM方法,无法进入系统,丢失引导

热门文章

  1. 人类视觉计算理论经典著作,豆瓣评分9.7,中文版惊鸿面世
  2. 书单丨724运维日,为运维人干杯
  3. Go在容器运行时要注意的细节
  4. 万春 读《Orange’S 一个操作系统的实现》有感
  5. 悟透JavaScript--可爱与智慧并存,灵感与诙谐共生
  6. Machine Learning - VII. Regularization规格化 (Week 3)
  7. oracle函数应用,oracle函数应用
  8. VISIO—如何打开?及安装教程
  9. JSP — 项目篇《I》【打印九九乘法表】
  10. L1-019 谁先倒 (15 分) — 团体程序设计天梯赛