极乐问答No.2 | 微信小程序开发40问

导语

微信小程序开发者和开发需求者必读,内容涵盖小程序开发实战需要注意的40个技术点,供大家参考:

问答

Q

Q1:为什么脚本内不能使用window等对象

A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件

Q2:为什么 zepto/jquery 无法使用

A:zepto/jquery 会使用到window对象和document对象,所以无法使用。

Q3:wx.navigateTo无法打开页面

A:一个应用同时只能打开5个页面,当已经打开了5个页面之后,wx.navigateTo不能正常打开新页面。请避免多层级的交互方式,或者使用wx.redirectTo

Q4:样式表不支持级联选择器

A:WXSS支持以.开始的类选择器。

Q5:本地资源无法通过 css 获取

A:background-image:可以使用网络图片,或者 base64,或者使用<image/>标签

Q6:如何修改窗口的背景色

A:使用 page 标签选择器,可以修改顶层节点的样式

page {

display: block;

min-height: 100%;

background-color: red;

}

Q7:为什么上传不成功

A:为了提升体验流畅度,编译后的代码包大小需小于 1MB ,大于 1MB 的代码包将上传失败。

Q8:HTTPS 请求不成功

A:tls 仅支持 1.2 及以上版本

Q9:网络请求的 referer

A:网络请求的 referer 是不可以设置的,格式固定为 https://servicewechat.com/{appid}/{version}/page-frame.html,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版。

Q10:不能直接操作 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

}

})

Q11:微信小程序支持fetch或者promise吗?

A:promise工具目前不支持,fetch 客户端不支持 工具下个版本保持统一。

Q12:touchmove滑动事件里面的currentTarget. id值不变动。

A:ouchmove / touchend 事件的 target / currentTarget 会永远是 touchstart 时的 target / currentTarget 。

Q13:wx.request的POST方法的参数传输服务器接收不到的bug。

A:wx.request post 的 content-type 默认为 ‘application/json’

如果服务器没有用到 json 解释的话,可以把 content-type 设置回 urlencoded。

wx.request({

....

method: "POST",

header: {

"content-type": "application/x-www-form-urlencoded"

},

...

})

Q14:wx.uploadFile在手机上返回http码403。

A:安卓的微信升级到6.5.2及其以上版本。

Q15:小程序SVG支持吗?

A:image的src放远程svg可以,background-image里也可以。

Q16:wx.request返回statusCode两端类型不一致。

A:确实有这个问题,稍后的版本将会修复。

Q17:关于组件的动态生成与销毁?

A:不支持动态生成组件,但可以用 wx:for 去渲染多个。

Q18:小程序支持热更吗?

A:不支持开发者自行更替。

Q19:一些接口的回调IOS和Android不一致,例如支付接口,用户取消支付后,ios只回调complete方法,android则回调fail方法,官方文档也没有任何回调说明,造成开发很困难;类似的还有图片选择接口,分享接口等等。

A:支付接口,用户取消支付后,ios只回调complete方法,android则回调fail方法,问题已记录,多谢反馈。

Q20:如果icon已经在服务器上了,想用直接访问网址的方法加载图片进来这样可以吗?

A:不能。

Q21:ipad不能使用小程序?

A:暂时不支持ipad打开小程序。

Q22:小程序音频,视频播放器问题 。1、能够只隐藏进度条跟时间吗?2、现在iOS平台上的时间显示是0:00,但是android上会显示错误码,能够通过什么设置修改吗?

A:1:下个版本会修改这里的交互,不显示进度条和时间。2:6.5.3 版本已修复此问题。

Q23:拍照窗口可以加浮层吗?

A:暂时不支持。

Q24:开发者工具经常报jsEngineScriptError错误,会导致页面白屏。

A:移步下载最新 0.12.130400 版本的开发工具试试

Q25:开发者工具里面,SPA页面,更改title无效。

A:wx.setNavigationBarTitle可以通过 API 改变导航栏标题。

Q26:请问小程序页内支持长按保存图片或分享图片吗?

A:目前没有这个功能。

Q27:关于swiper中的current问题。如果在新的版本中,直接设current,会产生的效果是:无论从哪个swiper元素点击进去,都会显示swiper第一个子元素的值。

A:目前swiper在处理swiper-item动态变化的情况时有一些bug,会很快修复的。

Q28:小程序能引用自己服务器上的wxss和js文件吗?

A:不能,无法执行远程代码。

Q29:苹果7,提示内部错误,内存占用过多。

A:页面做的预加载,列表中有图片,图片渲染的太多了,解决办法就是不当屏展示的图片,不让它渲染。

Q30:小程序体验者安卓卡在加载页面进不去,IOS可以进去。

A:这是android微信客户端旧版本的bug, 请下载最新版本的 6.5.3 客户端。

Q31:真机 view overflow-y下滑会很卡。

A:父层需要 position:relative; 加了之后就不卡了。

Q32:分享功能真机没有效果?

A:这是android微信客户端旧版本的bug, 请下载最新版本的 6.5.3 客户端。

Q33:强制使用https,开发和测试环境下怎么联调和测试?

A:「微信web开发者工具」->「项目」->「开发环境不校验请求域名及TLS版本」。

Q34:wx.showToast()方法无效。

调用wx.request请求网络然后在

complete: function (res) {

// complete

wx.hideToast();

}

Q35:在成功方法里面如果要进行showToast的时候感觉无效,并没有弹出提示框。

A:success 回调调用是在 complete 之前的,如果在 success showToast,下一步 complete hideToast 就会被冲掉showToast。

Q36:picker 组件中的文字大小是否支持修改?

A:不支持修改。

Q37:tabBar的图片在android和ios上面大小差异太大。

A:这是android微信客户端旧版本的bug, 请下载最新版本的 6.5.3 客户端

Q38:tabbar 页面返回问题。非首页的tabbar 页面 点击左上角返回箭头时如何返回到小程序首页? 现在是直接退出小程序了。

A:创建新页面时用 navigateTo 才会新建新页面,同时保留旧页面,如果用 redirectTo 是在当前页面内跳转。

Q39:问下 wx.request() 怎么设置成同步。

A:reqeust是发起网络请求。没有同步接口。

Q40:最新mac版工具不可用,进来就出现获取appservice 失败。

A:工具设置中选择直接链接网络 。或者 系统中的代理软件设置工具直接链接网络。

这个函数写在onReady生命周期里,但是当我离开这个页面时,这个函数还是在一直不停的执行。导致下一次继续进入这个页面的时候。会有多个loop函数在执行。我的想法是在onUnload生命周期里去取消这个函数的执行。但是怎么隔着生命周期操作其他生命周期里的函数呢?

原文发布于微信公众号 - 极乐技术社区(wxapp-union)

原文发表时间:2017-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维技术迷

Pycharm常用技巧

1.在Pycharm下为你的Python项目配置Python解释器 Project:当前项目名>Project Interpreter>add Local 2....

608120
来自专栏HaHack

学习 React Native for Android:环境搭建

11720
来自专栏DeveWork

WordPress纯代码高仿 无觅相关文章 图文模式功能

无觅的相关文章插件确实是一个不错的插件,Jeff的阳台到现在还在使用它(貌似产生了依赖性)。但到了devework.com,为了体现轻度、代码化的主题制作理念。...

209100
来自专栏向治洪

webpack+react环境搭建

前言 我们知道前端的框架纷繁复杂,各有各的优点。而我们选择使用React作为开发框架的时候,往往会选择Webpack+Babel+React来开始我们的项目。之...

23370
来自专栏進无尽的文章

兼容-记录Xcode8.0恢复插件全过程

Xcode 的插件大大丰富了 Xcode 的功能,而且有了 Alcatraz ,插件的管理也非常容易,但是有个非常恼人的问题:一旦升级 Xcode ,插件就失效...

17120
来自专栏分享达人秀

Android应用实战,不懂代码也可以开发

通过上一期的学习,我们成功开发了Android学习的第一个应用程序,不仅可以在Android模拟器上运行,同时还能在我们的Android手机上运行,是不...

20890
来自专栏码生

Chrome 浏览器最牛插件之一 Vimium

最近学习了一下,整理了一下官方的默认按键。其中我使用到的都进行了中文翻译,一些没有翻译的是我没有使用的,这部分理解不深,不想误导大家,所以将英文原文放在这里,还...

25910
来自专栏BestSDK

开发微信小程序,必知的40个小技巧

微信小程序开发者和开发需求者必读的40条技巧分享: Q:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有...

62730
来自专栏IMWeb前端团队

Ques前端组件化体系(一)

Ques是一套组件化系统,解决如何定义、嵌套、扩展、使用组件。 项目地址:https://github.com/miniflycn/Ques 传统开发模式的痛点...

272100
来自专栏SDNLAB

【每日播报】如何升级Mininet的Open vSwitch版本

因为Mininet的方便且易用,以及实验条件及真实设备的不足,它已经被越来越多的SDN学习者使用。但在Mininet使用中,安装使用的内置Open vSwitc...

40050

扫码关注云+社区

领取腾讯云代金券