移动开发的页间传值方式
在移动开发过程中,这里以iOS原生开发为例,在整个开发中页面间有多种传值方式
- 属性传值
- Block传值
- 代理传值
- 单例传值
- 通知传值
- ...
主要是以上几种传值方式,来应对一些复杂的业务逻辑
微信小程序的页间传值方式
微信小程序因为是面向功能较为简单的需求进行开发(不排除以后会复杂起来),所以传值的方式比较少
- 路径传值(官方推荐)
路径传值是目前看来微信官方给的最靠谱的传值方式
例子
wx.navigateTo({
url: 'test?id=1'
})
//test.js 取值方式
Page({
onLoad: function(option){
console.log(option.query)
}})
- 公共属性传值(不推荐)
这个是我自己YY起的名字
对,利用app.js
暴漏公共属性进行
// app.js 设定公共属性
data: {
hl:"hello world!"
}
// test.js 取出公共属性
var app = getApp()
console.log(app.hl);
然后通过onshow
方法判断激活处理
- storage传值(强烈不推荐)
这个比较好理解,放在storage的key-value,可以使用官方的api进行“增删改查”。
storage官方方法然后通过onshow
方法判断激活处理
缺陷
从上面微信小程序的页间传值方式中可以看到,微信小程序的传值方式都是建立在被动传值,主动处理的基础上的.
除了你以静态变更变量后,主动在onload
或者onshow
中进行主动唤醒处理方法,否则你没有什么方法来进行逻辑上的主动处理。
这样会造成两个问题:
- 代码结构错乱和冗余
- 代码耦合度高
以移动开发模式来解决问题
反观,在移动开发中,各种传值方式是为了满足不同场景下的不同调用,这样可以灵活的解决不同场景下的不同需求。
- 实际场景分析
比如场景,用户选择启动“夜间模式”,那么我们需要将整个app的主题更换为黑色主题,如果按照现有的方法,我们需要依依在onshow
中进行判断。
当然这个例子并不完全正确,你也可以通过设置全局的css来进行。
- 以通知模式来解决问题
昨天我发布了WxNotificationCenter - 微信小程序通知广播模式类,降低小程序开发的耦合度,是借鉴iOS开发中的通知模式来实现。
主要就是实现主动注册通知,然后分发通知后多处共同分别处理的解决方案。
这种方案不一定是好的,目前可能没有很多微信小程序会用到,但是在处理不同逻辑过程中,需要我们去思考一下那种更加人性化和方便,来解决实际问题。
WxNotificationCenter - 微信小程序通知广播模式类,降低小程序开发的耦合度 解决的问题就是一对多,多触发的主动技能。你可以实际看我在这个过程中的demo
通知模式简单逻辑图https://github.com/icindy/WxNotificationCenter/blob/master/README.md
以移动端的思维来思考微信小程序
微信小程序本身就可以划归为移动开发范畴,不管语法是怎么样的,如果有移动开发经验的同学来说,将自己的移动端思维拿到微信小程序中加以使用,可能效果会更好。
来源
首发地址http://weappdev.com/t/topic/236
微信小程序开发论坛 http://weappdev.com/
垂直微信小程序开发交流社区
网友评论