在开发前,首先要有原型图和UI视觉图。 原型图通常是由产品经理使用Axure 绘制,原型图会用简单的图形和文字展示页面功能,比如页面元素的布局和交互逻辑。 UI视觉图就是基于原型图的页面布局出的最终视觉效果图。 当然,若页面不复杂,原型图和UI 视觉图也可能都画在一起。
我们开发者要做的,就是基于UI的视觉效果和原型图的交互逻辑开发小程序。 我们可以按照以下三步走:
WXML+WXSS还原设计稿。按照页面交互,梳理出每个页面的data部分,填充WXML的模板语法。完成JS逻辑部分。注意:高效的开发流程有很多种方式,具体还得看团队的工作节奏,我们刚才说的只是最常规的。 比如,若产品交互体验还不明确,我们可以先完成一些局部功能,比如与后端数据的对接,并且做好测试。
微信小程序里的flex 布局和网页开发中的flex 布局是一样的。 flex 布局可以实现一些灵活的比较高的效果,比如:信息列表中,要求文字在内容高度不确定下保持垂直居中。
container:容器,采用flex布局的元素 item:项目,容器内的元素
用户在小程序上进行交互的时候,某些操作可能比较耗时,需要我们予以及时的反馈,去舒缓用户等待的不良情绪,这样的反馈就是交互反馈 。
常见的交互反馈有:
触摸反馈Toast和模态对话框界面滚动通常页面会摆放一些button按钮或者view区域,用户触摸按钮之后会给按钮换个颜色。如果此按钮是加载数据的,要显示一个loading的状态。
用户触摸后的样式设置可用通过组件的hover-class属性实现,如: .hover{background-color: #00acec;} <button hover-class="hover"> hover</button> 按钮loading 状态的显示,可以通过 组件的loading 属性实现: <button loading="{{loading}}" bindtap="tap">hover</button> Page({ data: { loading: false }, tap: function() { // 把按钮的loading状态显示出来 this.setData({loading: true}) // 接着做耗时的操作 } })在某个操作成功之后,我们希望提示用户这次操作成功,并且不打断用户接下来的操作。这就需要使用弹出式提示Toast,Toast提示默认1.5秒后自动消失。更多
// 显示Toast wx.showToast({ title: '已发送', icon: 'success', duration: 1500 }) // 隐藏Toast wx.hideToast()在做错误提示的时候,Toast 是不合适的,因为错误提示需要明确告知用户具体原因,因此不适合一闪而过的Toast。 错误提示需要使用模态框,模态框可以让用户明确知晓自己的操作结果,同时附带下一步操作的指引。更多
wx.showModal({ title: '标题', content: '告知当前状态,信息和解决方法', confirmText: '主操作', cancelText: '次要操作', success: function(res) { if (res.confirm) { console.log('用户点击主操作') } else if (res.cancel) { console.log('用户点击次要操作') } } })往往手机屏幕是承载不了所有信息的,所以就有里界面滚动。 常见的界面滚动有:下拉刷新、上拉加载。 下拉刷新:用户下拉整个界面时,可以刷新当前页面。 上拉加载:用户上拉整个界面,触底时,加载更多信息。这种交互操作叫为上拉触底。 注:scroll-view 滚动视图组件,提供了提供了丰富的滚动 回调触发事件,可以实现界面中某一区域的滚动。
示例: 1.使用id 请求新闻内容
url:http://localhost:9000/getNews?id=1 method:’GET’2.使用id 请求用户名
url:http://localhost:9000/getUserName method:'POST’ data:{id:2}常见的登录的问题:
怎么获取用户在微信的信息怎么获取小程序用户的唯一身份标准比如,李伟进入一个电商小程序的时候,做个判断: 如果李伟是新用户,小程序显示“李伟您好,欢迎新用户光临本店!” 如果李伟是老用户,小程序显示“李伟您好,欢迎老用户光临本店!” 在这里面,“小黑”这个昵称,我们可以通过获取用户信息的方法来得到。 然而,昵称并不能用来判断用户的唯一性,因为叫李伟的肯定有很多。我们要用openid 来判断用户的唯一性。
注意: AppId 是公开信息,泄露AppId不会带来安全风险 AppSecret 是小程序秘钥,不能泄露,如果发现泄露需要到小程序管理平台进行重置。
本地数据缓存:就是将小程序的数据存储在当前设备硬盘上。 本地数据缓存的作用:
存储用户在小程序上产生的操作,在用户关闭小程序重新打开时可以恢复之前的状态。缓存一些服务端非实时的数据,从而提高小程序获取数据的速度。异步读取:
wx.getStorage({ key: 'key1', success: function(res) { // 异步接口在success回调才能拿到返回值 var value1 = res.data }, fail: function() { console.log('读取key1发生错误') } })同步读取:
try{ // 同步接口立即返回值 var value2 = wx.getStorageSync('key2') }catch (e) { console.log('读取key2发生错误') }异步写入:
wx.setStorage({ key:"key", data:"value1" success: function() { console.log('写入value1成功') }, fail: function() { console.log('写入value1发生错误') } })同步写入:
try{ wx.setStorageSync('key', 'value2') console.log('写入value2成功') }catch (e) { console.log('写入value2发生错误') }有些商城页面一开始加载数据的时候,就会先把本地缓存的数据显示出来。等新的数据加载完成之后,就再用新的数据更新视图。 这种方式适用于对数据实时性/一致性要求不高的页面。
小程序的宿主环境提供了很多的操作设备的能力,可以让我们提供开发效率,增强用户体验。 常见的设备能力:
扫码拍照操控蓝牙获取设备网络状态调整屏幕亮度 …… 微信扫码能力 wx.scanCode() :开启微信到扫码功能。 把复杂的信息编码成一个二维码,让用户去扫,可以减少用户输入。 如:餐厅点餐的小程序,我们给餐厅中每个餐桌编号,然后把编号到二维码中,扫码获得编号之后,就可以知道是哪一桌点了什么菜,从而大大提高了用户点餐的体验度。 // 点击“扫码点餐”的按钮,触发tapScan回调 tapScan: function() { // 调用wx.login获取微信登录凭证 wx.scanCode({ success: function(res) { var num = res.result // 获取到的num就是餐桌的编号 } }) }