微信小程序踩过的坑与总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18242391/article/details/82957367

从八月开始就在着手看微信小程序,当时看慕课网的入门视频,算是基本入门了,后来有幸去参加公司的小程序项目开发,踩过不少坑,特别在此纪录,如果是普通的入门只需要看下文档,然后稍微看下博客就会了,这里只是记录我踩过的一些坑。

所编写的代码调试基础库在2.3.0

1. map组件设置view无效


这个对于刚开始做项目的人是很疑惑的,后来经过查找原来是map组件在小程序中属于原生组件,原生组件上面只能设置微信小程序指定的组件cover-view或者cover-image,具体解释看这里

2.map组件的marker在android机上显示异常


我们有这样的需求,就是在地图上显示marker,然后在marker里面有文字,这个调试的时候是用ios调试的,都是正常的,但是在android机上只有部分marker上能显示数字,而且不同机型它的显示效果不同。这个确实目前为止感觉无解,同时marker里面有一个label属性,它不支持设置宽高,它的默认设置位置在marker下面的位置,具体它的位置还是需要通过anchorX,anchorY调整。

3.小程序的网络请求只支持https


对于一般的项目都是通过http调试的,这时候对于模拟器来说,只要将详情里面的‘不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书’选项勾上就可以,而对于真机只需要点击右上角的选项,然后打开调试就行了,但是对于真正的项目发布上线还是需要https,并且需要在后台配置https域名地址。

4. 根据定位的经纬度逆向搜索城市


这个小程序里面确实没有提供该功能,最后解决途径还是通过高德的web服务api接口来获取的(腾讯的也可以)

5. 微信小程序页面传值以及从页面获取值


对于小程序的页面传值感觉还是很奇葩的,将要传的值拼接在url后面,比如这样

//和网络请求中的get传参一样
wx.navigateTo({
  url: 'pageA/pageA?lng=' + lng + "&lat=" + lat,
})

在pageA页面这样获取值

onLoad: function (options) {
	let lng = options.lng
	let lat = options.lat
}

onLoad是小程序页面的生命周期方法

还有一个这样的需求,对于一个列表,每个列表绑定一个id,当点击列表项时候需要获取这个id,然后通过这个id去取一个数组对象中的数据,可以这样

<view bindtap='chooseItem' data-id='{{id}}'>
</view>

给当前view自定义一个属性,然后在点击列表项的时候,会调用chooseItem方法

chooseItem: function(res){
	let carId = res.currentTarget.dataset.id //获取点击列表项的Id
}

6.template 的使用


有时候项目一个页面的布局代码过长,或者重复代码过多,这时候就可以使用template抽取代码中逻辑重复的部分,然后简化布局结构,有点相当于模块化编程。使用template需要在对应的wxml和wxss中引入布局和样式,比如这样

// wxml中引入
<import src="../a/a_template.wxml" /> 
// wxss中引入
@import "../a/a_info_template.wxss";

好像还有小程序端的组件化编程,以及wepy和mpvue这种第三方框架,有机会学习使用。

7.地图组件中使用cover-view许多功能无法实现


在map中只能使用cover-view或者cover-image,导致许多功能实现不了,或者不好实现,比如,我们首页地图上有个可以左右滑动的tab页面,这个如果只是用cover-view或者cover-image是实现不了(可能可以,但是估计也不容易),radio组件用不了,导致选项框得找前端切图才能实现,另外有些属性也失效了比如padding以及用cover-view限制显示行数为多行,超出部分用省略号表示,这个在cover-view中只能对于单行这样的操作才有效。还有其他的暂时没测出来,测出来再补上。

8. promise使用


小程序现在支持promise的使用,它可以对方法的使用变为链式的调用,有点类似函数式编程,使用起来比较方便。

9. wxs文件的使用


有时候后台传过来的值,不符合页面的展示需求,这时候除了在js中重新处理下数据,还可以在wxml中引入wxs文件,然后在wxs中处理页面数据然后返回重新渲染页面。

总结


小程序总体来说还是很简单的,只要会html,css,javascript,然后看下小程序的文档就会使用了,但是基本使用还是远远不够的,对于后期还是需要改善下代码质量,然后在项目中使用模块化编程,后期的打算是把vue学会然后在项目中打算尝试使用mpvue框架,因为这个框架底层就是使用vue写的,这样可以更进一步提升自己的前端编码水平。

猜你喜欢

转载自blog.csdn.net/qq_18242391/article/details/82957367