1.使用uniapp的redirectTo跳转的时候,会关闭离开页,这个时候跳转到的新页面就会有没有返回按钮,如果你需要有新的返回页面有返回按钮的话,在pages.json给这个新页面的app-plus下titleNView字段加上autoBackButton字段并设置为true就可以了,注意这个时候还需要在新页面添加一个拦截返回事件的钩子,把原生的处理掉,加上你自己的返回按钮跳转逻辑,像这样:
onBackPress((e) => {
back()
// 阻止uniapp默认返回事件
return true
})
我试了一下如果你不加自己的返回跳转逻辑得。app会认为你要退出app,双击之后app就关闭了。
2.涉及到接口请求的代码务必加上loading,很多bug都是由于异步导致的,接口还没返回成功然后用户去操作了其他,不要再犯这种低级错误,老是以自己的开发场景去测试app,而不考虑弱网的情况。
3.在一个非常老的公司项目里(jsp),有个js文件是通过document.write引入的,然后在引入这个js文件的js里使用了动态引入的js内部的变量,这个变量一直报undifined,因为是移动端浏览器报错(还不是chrome),尝试使用Vconsole定位了一下,没找到啥原因,初步怀疑是document.write引入js是异步的原因,然后尝试加一个setTimeout去验证一下猜想,发现没用,然后又是一顿乱试,比如用document.createElement自己建一个script标签插入到head标签里什么的,但都不管用,后来我又猜测是不是动态引入的js里有什么es6的骚操作呢,全局代码我大概看了一下,发现了一个async await,改了之后接着实验,还是不行,甚至这个动态引入的js代码压根就不执行,没办法了,最后上绝招了。 我把动态引入的js代码全注释调了,只放了一个alert。发现可以执行,所以前面猜想的关于【由于document.write等引入方式】产生的问题压根是错的。然后就逐步打开动态引入的js代码的注释,先打开一半。然后四分之三,都可以正常alert,在最后打开的某一行里(前期当然不会一行一行逐行定位,都是一大片一大片代码解开,然后逐步缩小范围),发现alert不可以执行了(alert放在该文件第一行),我定睛一看,妈的有个可选链操作符.....因为都是之前项目的老代码,好几千行,没注意到这,把这个可选链换成常规的写法就好了。耽误了差不多小半天的时间,反思一下,如果再遇到这种猜测可能是es6的问题,就把源码放到自己的babel项目里转一下直接就可以定位原因了。 另外这个手机是 魅族m686,然后浏览器就是魅族原生的浏览器。调试非常费劲,浏览器缓存也很严重,这种前后端不分离的项目非常坑。
4.小程序的mastache语法不支持toString 和 indexOf方法,注意,会引发异常的bug,在控制台还不报错
5.最近在开发微信小程序,涉及到云开发的一部分,有个小坑就是云函数里面的时区是utc+0的,所以和国内的时间差是八个小时,所以当你在云函数中使用new Date()的时候,你获取的时间会比国内时间少八个小时。一开始我调试的时候并没有遇到这个问题,我在云函数中得到的时间和本地的时间是一致的,我以为没问题,但其实不对,因为我调试的时候用的是本地环境,所以时区还是前端代码的utc+8,当我把云函数上传到服务器执行的时候,就会出现一种,我调的时候时间是正确的,但存到数据库就不对了(差八个小时),实际不是数据库的问题,是你小程序运行环境的问题,另外遇到问题的时候还是要细心看文档,有时候网上说的都不对,文档都提醒过你了。
developers.weixin.qq.com/minigame/de…
以上是官网推荐的解决方案,亲测有效