欢迎光临,了解微信小程序开发,就上易用通!

github精选:关于小程序的一些零散思考

发布:2018-01-31 10:07浏览: 来源:网络 作者:cola

入口:

公众号需要先关注,用户需要从 通讯录 -> 公众号 -> 手动寻找某一个特定的公众号

此前据媒体报道,张小龙爆出了一张朋友圈的截图,用户可以直接从手机桌面打开小程序

获取用户关注:

订阅号和服务号早就出来了,用户对此没有新鲜感。

而小程序是新鲜产物,预计推出之后会获得一大批用户红利,根据二八原则,每个小程序能获得相当可观数量的用户,可以节省大量的推广成本!

开发效率(成本):

订阅号和服务号开发,主要是HTML5的开发,也就是开发手机端的网页。

而小程序提供了一系列基础API,组件,可以大大提高开发效率。

举个简单例子,小程序底部的tarbar导航条,使用小程序开发只需设置几个配置项即可,相对于HTML5来说不管从代码量还是开发逻辑都简单很多,当然这只是其中的一个方面。

组件在开发效率的贡献也是巨大的,比如摇出微笑这个小程序,声音设置的控制开关,只需调用swith组件即可。

<switch class="voice-switch" bindchange="switchVoice" checked/>

用户体验:

使用订阅号和服务号,用户会有很明显地感觉跳转到了一个手机网页。

而小程序能给用户以原生App的流畅体验,并且基于微信提供的组件,可以很方便地开发出类似微信风格的App

“摇出微笑”所调用的API

wx.login
wx.getUserInfo
wx.setStorageSync
wx.getStorageSync
wx.showModal
wx.onAccelerometerChange
wx.playBackgroundAudio
wx.onBackgroundAudioStop

如果使用HTML5的话,无疑会增加很多代码量和逻辑。

还有比较重要的一点是,用户在安装微信的时候,已经同意了微信对手机的各种权限。因为小程序是基于微信的,在调用API的时候,就无须用户再次同意了。

而使用HTML5,就没有这么方便咯!有的权限浏览器默认是关闭的,即使是开启的,也会提示用户同意授权。

个人认为最有用的API

小程序究竟能做些什么?

网络请求

这是一个程序的基础,如果不能跟服务器进行交互,那么就只能使用本地数据

wx.request

用户信息

可以无需用户确认(正式推出后不知是否有变动),使其自动登陆到微信服务器,而我们能获取到一定的用户数据,并可以基于此构建自己的用户数据。

wx.login
wx.getUserInfo

支付

这个重要性就不言而喻啦!可以结合模版消息,以下是关于模版消息的官方说明。

模版消息:基于微信的通知渠道,我们为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。

wx.requestPayment(OBJECT)

图片

调用相册或者相机

wx.chooseImage(OBJECT)
wx.previewImage(OBJECT)
wx.getImageInfo(OBJECT)

WebSocket

定位

wx.getLocation(OBJECT)
wx.openLocation(OBJECT)

上传下载文件

wx.uploadFile(OBJECT)
wx.downloadFile(OBJECT)

小程序的架构的经验

小程序要求,每个页面都要由四个文件组成。

灵活运用页面的生命周期

xxx.js    //逻辑代码写在这里
xxx.json  //配置项
xxx.wxml  //页面结构,类似于html
xxx.wxss  //页面样式,类似于css

xxx.js

Page({

})

如果用到了template,还可以新建一个文件夹专门存放模版文件。

images
	-xxx.png
	-xxx.png
pages
	home
		-home.js
		-home.json
		-home.wxml
		-home.wxss
	me
		-me.js
		-me.json
		-me.wxml
		-me.wxss
utils
	-api.js
	-util.js
-app.js
-app.json
-app.wxss

小程序目前可能遇到的潜在问题:

目前应用的瓶颈:

  1. 一个微信小程序,同时只能有5个网络请求连接。

  2. 一个应用同时只能打开5个页面。

  3. 不支持跳转到其他网站,是一个封闭的APP,限制用户导流。

  4. 不支持富文本的渲染,解析不了原生的HTML。

  5. 程序大小限制在1M以内,引入第三方库的限制。

  6. 个人开发者无法申请微信小程序;目前微信仅支持企业、政府、媒体、其他组织申请。

  7. 一个小程序账号只有一个管理员(可修改),可以绑定10位开发者。

已经发现的bug:

  1. Page中的function方法名不能设置为setData,否则将失效

  2. 分割线用1rpx的时候有时候有些分辨率不显示,改为px

  3. image只支持网络图片或者base64图片,使用本地图片需要将图片转为base64代码

  4. .json文件中不能有任何注释,否则会报错

  5. 在清空输入框时,input的初始值不能设置为空,否则会失效

  6. wx.playBackgroundAudio,需设置title属性,并且dataUrl必须是网络地址

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

  8. 使用竖向滚动时,需要给 scroll-view 一个固定高度。

  9. JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件

  10. 样式表不支持级联选择器。WXSS支持以.开始的类选择器;可以使用标签选择器,控制同一类组件的样式。

  11. 页面是通过Page对象来渲染的,每个页面对应的js文件必须要创建page,最简单的方式就是在js文件下写入Page({}),在page中有管理页面渲染的生命周期,以及数据处理,事件都在这完成。所以:养成创建页面的同时在js文件先创建Page的习惯。

  12. 循环加载JSON数据集合时,如果其中有项是null,在开发工具中加载正常,但是在手机中浏览时显示空白页,并且调试时没有错误信息,所以需要对可能为null的数据进行判断。

  13. 如果你很幸运,有APPID,那么你就可以在真机上预览,但同时你发送的请求必须是合法域名,而假如你没有APPID,那么你就不能在真机上预览,因此你就没有所谓合法域名的限制。

  14. 如果遇到 tabBar 设置不显示的情况,原因有很多,直接去app.json这个文件

 

已知bug(分享者:laolu87)

最近也只是大致的过了一下api,实现了摇一摇功能和下拉加载功能.在实现这两个功能的过程中还是发现了一些不完美的地方.在这里列出来吧:

  1. 摇一摇的灵敏度不够准确,我用实现web摇一摇功能的方法实现了微信小程序的摇一摇功能,发现它的灵敏度可能调节的有点灵敏过头了.不过相信官方会在以后慢慢改进吧!所以暂时这个问题没去深究.

  2. 由于小程序使用了有点类似react的虚拟dom来渲染页面结构,所以在数据更新时,它会根据你的数据变化判断页面的哪些部分需要更新.在做下拉加载时就碰到这么一个坑,为了实现一键定位某一个元素的功能,我做了一个点击事件,通过改变scroll-into-view的值来定位到那一个元素,结果第一次点击能够生效,以后不管你拉到哪里,点击那个按键定位元素都会失效,查了半天才发现原来是这个页面渲染搞的鬼.你第一次改变scroll-into-view的值的时候由于数据有变动,页面做了重新渲染,点击时它生效了.在接下来的点击中由于那个数据是更新了,不过判断时由于它的值还是和原来的值一样,所以它不会对页面进行重新渲染,导致页面不会定位到设定好的元素.最后只能用一种比较无奈的解决办法解决了这个问题,那就是在scroll-view标签的bindscroll方法中重设这个值使之这个值处于变化状态,好让页面渲染在判断时能够重新渲染页面.在这里就能看出来react还是要比小程序高出一个级别来的,state更新时一定会重新渲染页面不是没有道理的.生命周期函数的设置不是没有道理的.前者让你数据更新了一定会重新渲染页面后者可以让你在这个过程中设置不需要重新渲染的更新,做到保证不会出低级问题的情况下又能够让你在这个基础上精细控制渲染的每一个过程.






免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。