欢迎来到258分享网,纯净的网络源码分享基地!

258资源分享网

全部作品
全部作品
网站源码
微信源码
素材特效
源码插件
视频教程
建站学院
热门搜索: 织梦  农业种植  农业  安全设置  官方
258资源分享 > 建站学院 > 微信开发 > 从iOS的世界初探微信小程序开发时收集的坑(持续更新...)

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:740

高端HTML5响应式企业通用网

2020-05-06   浏览:521

html5响应式外贸网站英文版

2020-05-08   浏览:510

HTML5自适应律师工作室类网

2020-04-04   浏览:504

HTML5影视传媒文化公司类网

2020-05-12   浏览:502

从iOS的世界初探微信小程序开发时收集的坑(持续更新...)

发布时间:2020-11-05  

前言

作为一名勤恳单纯的未来iOS开发者,受迫于对新事物的好奇,便义无反顾地举手加入了团队里一个小程序项目的开发中。

首先要声明一下:

本人对前端了解微浅,微信小程序开发也无深入了解,这里仅作为一篇小程序的项目经验总结文来跟大家分享。

微信小程序处于发展中,内嵌的方法仍在不断改善与补充,相信一些坑也会在未来的版本中被填平。 本文基于的基础库版本为1.5.3,内容如有疏漏,欢迎指教。

 

从iOS的世界初探微信小程序开发时收集的坑(持续更新...)

Dry goods 【干货】 一. 值 1. setData 1. setData:是逻辑层(.js)向视图层(.wxml)进行的数据渲染,是一个异步操作,所以可能需要用到延迟执行方法来确保赋值成功后的操作: setTimeout(function () { }) }, duration) // duration: 毫秒(ms) 2. // 在该作用域里赋值能成功而page的data数据没有更新。但似乎没必要做这样不去刷新页面数据的操作,因为不是视图层需要的数据源没必要写在data中,而且这样可能会污染该值。 this.data.testData = testData // 这是真正需要的赋值操作,刷新值后渲染页面。 that.setData({ testData: testData, }) 3. // 在闭包中用到this需首先将其引用,并且需要声明在赋值的作用域外层,否则会报`Cannot read property 'data' of undefined`错误。 var that = this this.setData({ testData: that.data.testData2, }) // 若setData操作仍在一个闭包内,则同理写成that.setData({})。 { // 闭包 that.setData({ testData: that.data.testData2, }) } 2. 小程序码传参

向后端生成小程序码的请求中传入页面路径path与约定参数(test),即可同navigator跳转方法获得类似。 onLoad: function (options) { var t = options.test }

3. 函数不支持带默认参数,有参数的函数,必须传参,而且必须每一个都传,如果是回调闭包也必须提供空操作。举个... (network.js)声明的地方 // 获取社团详情 function getCommunityDetail(communityId, success, fail) { this.get(url.base + url.communityDetail + communityId, function (res) { success(res) }, function (res) { fail(res) }) } (communityInfo.js) 用到的地方 network.getCommunityDetail(options.communityId, function(success) { // Does something... }, function(fail) { // 尽管这里可能不需要做失败处理,但仍需提供这样的空操作 }) 4. dataset

dataset: 用于组件中传递数据 注意:其设置变量名与取值变量名的格式要求。(文档说明如下)

(xxx.wxml) <view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap"> DataSet Test </view> (xxx.js) Page({ bindViewTap:function(event){ event.currentTarget.dataset.alphaBeta === 1 // `-` 会转为驼峰写法 event.currentTarget.dataset.alphabeta === 2 // 大写会转为小写 } }) 二. 组件

wx tip: 请勿在 scroll-view 中使用 textarea、map、canvas、video 组件。 so,注定她们是不安定的。但在这里就不一一展开了。

1. scroll-view

上述组件嵌套在 scroll-view 中设置css属性 z-index 在真机上不起作用。

安卓端bug:scroll-view嵌套在swiper-item中横向滑动不响应,此时可设置scroll-view的css属性 overflow : auto; 但这又会引来一个美观问题,就是它的横向滚动条冒了出来,此时再设置

// 这会导致整个scroll-view内的滚动条都被隐藏。 ::-webkit-scrollbar { width: 0; height: 0; color: transparent; } 2. canvas

由于canvas的不可 `隐藏性` ,所以想直接生成图片有些阻碍,但也不是不可以,这里提供一种思路。 (需求场景:点击按钮生成一张由下载图片和文字画的canvas,并将其合成为图片,随即预览该图片) 思路:在屏幕所见范围外放置canvas,生成并保存图片后将canvas销毁(wx:if:用此方法销毁)。然而这里有几个让你不得不改变这样的需求的坑: 1:由于绘图方法drawImage未提供回调函数,所以你无法得知何时绘图完成(该回调将在未来版本中添加),对于需要区分图片层级的绘图操作尤为不好。(若图片B在图片A上,则需要先把图片A绘图成功) 2:由于性能问题(最好在安卓真机上测试),尽管把延迟调的很久让绘图操作执行,但时长会发生绘图失败生成一张空白图片可能,造成用户体验不好。 3:特别是多图合成情况,以上问题尤为突出。 需求改动:将点击直接生成合成图片改为跳转到另一个page去展示并且生成。 当然你会想问,让后台直接返回合成的图片不就ok啦?确实是这样的,这会在后面的版本中改过来。