⼩程序开发的四⼗个技术窍门总结(推荐)
前⾔
“⼩程序”正式上线⼀周时间,相关话题持续升温。⽀付宝开发“⼩程序”的消息也随即曝出,互联⽹巨头们摩拳擦掌,不少⽹友调侃说,这势头感觉要挑战现有的“APP帝国”了。那么,⾯对如此炙⼿可热的⼩程序,WeX5移动开发云也没有闲着,经过全⽹搜索,为⼤家筛选出⼀条⼩程序开发者的必读⽂章,内容涵盖⼩程序开发实战需要注意的40个技术点,供⼤家参考!
Q:为什么脚本内不能使⽤window等对象
A:页⾯的脚本逻辑是在JsCore中运⾏,JsCore是⼀个没有窗⼝对象的环境,所以不能在脚本中使⽤window,也⽆法在脚本中操作组件
Q:为什么 zepto/jquery ⽆法使⽤
A:zepto/jquery 会使⽤到window对象和document对象,所以⽆法使⽤。
Q:wx.navigateTo⽆法打开页⾯
A:⼀个应⽤同时只能打开5个页⾯,当已经打开了5个页⾯之后,wx.navigateTo不能正常打开新页⾯。请避免多层级的交互⽅式,或者使⽤wx.redirectTo
Q:样式表不⽀持级联选择器
A:WXSS⽀持以.开始的类选择器。
Q:本地资源⽆法通过 css 获取
A:background-image:可以使⽤⽹络图⽚,或者 base64,或者使⽤<image/>标签
Q:如何修改窗⼝的背景⾊
A:使⽤ page 标签选择器,可以修改顶层节点的样式
page {
display: block;
min-height: 100%;
background-color: red;
}
Q:为什么上传不成功
A:为了提升体验流畅度,编译后的代码包⼤⼩需⼩于 1MB ,⼤于 1MB 的代码包将上传失败。
Q:HTTPS 请求不成功
A:tls 仅⽀持 1.2 及以上版本
Q:⽹络请求的 referer
Q:不能直接操作 Page.data
A:避免在直接对Page.data 进⾏赋值修改,请使⽤Page.setData 进⾏操作才能将数据同步到页⾯中进⾏渲染怎么获取⽤户输⼊能够获取⽤户输⼊的组件,需要使⽤组件的属性bindchange将⽤户的输⼊内容同步到 AppService。
<input id="myInput" bindchange="bindChange" /><checkbox id="myCheckbox" bindchange="bindChange" />
var inputContent = {}
Page({
data: {
inputContent: {}
},
bindChange: function(e) {
inputContent[e.currentTarget.id] = e.detail.value
}
})
Q:⼩程序⽀持fetch或者promise吗?
A:promise⼯具⽬前不⽀持,fetch 客户端不⽀持⼯具下个版本保持统⼀。
Q:touchmove滑动事件⾥⾯的currentTarget. id值不变动。
A:ouchmove / touchend 事件的 target / currentTarget 会永远是 touchstart 时的 target / currentTarget 。
Q:wx.request的POST⽅法的参数传输服务器接收不到的bug。
A:wx.request post 的 content-type 默认为 ‘application/json '
如果服务器没有⽤到 json 解释的话,可以把content-type 设置回urlencoded。
....
method: "POST",
header: {
"content-type": "application/x-www-form-urlencoded"
},
...
})
Q:wx.uploadFile在⼿机上返回http码403。
A:安卓的升级到6.5.2及其以上版本。
Q:⼩程序SVG⽀持吗?
A:image的src放远程svg可以,background-image⾥也可以。
Q:wx.request返回statusCode两端类型不⼀致。
A:确实有这个问题,稍后的版本将会修复。
Q:关于组件的动态⽣成与销毁?
A:不⽀持动态⽣成组件,但可以⽤ wx:for 去渲染多个。
Q:⼩程序⽀持热更吗?
A:不⽀持开发者⾃⾏更替。
Q:⼀些接⼝的回调IOS和Android不⼀致,例如⽀付接⼝,⽤户取消⽀付后,ios只回调complete⽅法,android则回调fail⽅法,官⽅⽂档也没有任何回调说明,造成开发很困难;类似的还有图⽚选择接⼝,分享接⼝等等。
A:⽀付接⼝,⽤户取消⽀付后,ios只回调complete⽅法,android则回调fail⽅法,问题已记录,多谢反馈。
Q:如果icon已经在服务器上了,想⽤直接访问⽹址的⽅法加载图⽚进来这样可以吗?
A:不能。
Q:ipad不能使⽤⼩程序?
A:暂时不⽀持ipad打开⼩程序。
Q:⼩程序⾳频,视频播放器问题。1、能够只隐藏进度条跟时间吗?2、现在iOS平台上的时间显⽰是0:00,但是android上会显⽰错误码,能够通过什么设置修改吗?
写文章的小程序A:1:下个版本会修改这⾥的交互,不显⽰进度条和时间。2:6.5.3 版本已修复此问题。
Q:拍照窗⼝可以加浮层吗?
A:暂时不⽀持。
Q:开发者⼯具经常报jsEngineScriptError错误,会导致页⾯⽩屏。
A:移步下载最新 0.12.130400 版本的开发⼯具试试
Q:开发者⼯具⾥⾯,SPA页⾯,更改title⽆效。
A:wx.setNavigationBarTitle可以通过 API 改变导航栏标题。
Q:请问⼩程序页内⽀持长按保存图⽚或分享图⽚吗?
A:⽬前没有这个功能。
Q:关于swiper中的current问题。如果在新的版本中,直接设current,会产⽣的效果是:⽆论从哪个swiper元素点击进去,都会显⽰swiper第⼀个⼦元素的值。
A:⽬前swiper在处理swiper-item动态变化的情况时有⼀些bug,会很快修复的。
Q:⼩程序能引⽤⾃⼰服务器上的wxss和js⽂件吗?
A:不能,⽆法执⾏远程代码。
Q:苹果7,提⽰内部错误,内存占⽤过多。
A:页⾯做的预加载,列表中有图⽚,图⽚渲染的太多了,解决办法就是不当屏展⽰的图⽚,不让它渲染。
Q:⼩程序体验者安卓卡在加载页⾯进不去,IOS可以进去。
A:这是android客户端旧版本的bug,请下载最新版本的 6.5.3 客户端。
Q:请问⽬前⼩程序⽀持蓝⽛吗?
A:⽬前不⽀持。
Q:分享功能真机没有效果?
A:这是android客户端旧版本的bug,请下载最新版本的 6.5.3 客户端。
Q:强制使⽤https,开发和测试环境下怎么联调和测试?
A:「web开发者⼯具」->「项⽬」->「开发环境不校验请求域名及TLS版本」。
Q:wx.showToast()⽅法⽆效。
调⽤wx.request请求⽹络然后在
complete: function (res) {
// complete
wx.hideToast();
}
在成功⽅法⾥⾯如果要进⾏showToast的时候感觉⽆效,并没有弹出提⽰框。
A:success 回调调⽤是在complete 之前的,如果在success showToast,下⼀步 complete hideToast 就会被冲掉showToast。
Q:picker 组件中的⽂字⼤⼩是否⽀持修改?
A:不⽀持修改。
Q:tabBar的图⽚在android和ios上⾯⼤⼩差异太⼤。
A:这是android客户端旧版本的bug,请下载最新版本的 6.5.3 客户端
Q:tabbar 页⾯返回问题。⾮⾸页的tabbar 页⾯点击左上⾓返回箭头时如何返回到⼩程序⾸页?现在是直接退出⼩程序了A:创建新页⾯时⽤ navigateTo 才会新建新页⾯,同时保留旧页⾯,如果⽤ redirectTo 是在当前页⾯内跳转。
Q:问下 wx.request() 怎么设置成同步。
A:reqeust是发起⽹络请求。没有同步接⼝。
Q:最新mac版⼯具不可⽤,进来就出现获取appservice 失败。
A:⼯具设置中选择直接链接⽹络。或者系统中的代理软件设置⼯具直接链接⽹络。
Q:真机 view overflow-y下滑会很卡。
A:⽗层需要position:relative; 加了之后就不卡了。
总结
以上就是⼲货分享的主要内容,需要提醒的是,⼩程序本⾝还在不断调整、修改、完善之中,对陆续
发现的BUG,也需要进⾏相应的修复。关⼼⼩程序开发的朋友请关注我们,获取最新的⼩程序开发⼲货。希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论