微信小程序中的传值方式,添加”主动技能”

移动开发的页间传值方式

在移动开发过程中,这里以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进行“增删改查”。

微信小程序中的传值方式,添加”主动技能”_第1张图片
storage官方方法

然后通过onshow方法判断激活处理

缺陷

从上面微信小程序的页间传值方式中可以看到,微信小程序的传值方式都是建立在被动传值,主动处理的基础上的.

除了你以静态变更变量后,主动在onload或者onshow中进行主动唤醒处理方法,否则你没有什么方法来进行逻辑上的主动处理。

这样会造成两个问题:

  1. 代码结构错乱和冗余
  2. 代码耦合度高

以移动开发模式来解决问题

反观,在移动开发中,各种传值方式是为了满足不同场景下的不同调用,这样可以灵活的解决不同场景下的不同需求。

  • 实际场景分析

比如场景,用户选择启动“夜间模式”,那么我们需要将整个app的主题更换为黑色主题,如果按照现有的方法,我们需要依依在onshow中进行判断。

当然这个例子并不完全正确,你也可以通过设置全局的css来进行。

  • 以通知模式来解决问题

昨天我发布了WxNotificationCenter - 微信小程序通知广播模式类,降低小程序开发的耦合度,是借鉴iOS开发中的通知模式来实现。

主要就是实现主动注册通知,然后分发通知后多处共同分别处理的解决方案。

这种方案不一定是好的,目前可能没有很多微信小程序会用到,但是在处理不同逻辑过程中,需要我们去思考一下那种更加人性化和方便,来解决实际问题。

WxNotificationCenter - 微信小程序通知广播模式类,降低小程序开发的耦合度 解决的问题就是一对多,多触发的主动技能。你可以实际看我在这个过程中的demo

微信小程序中的传值方式,添加”主动技能”_第2张图片
通知模式简单逻辑图

https://github.com/icindy/WxNotificationCenter/blob/master/README.md

以移动端的思维来思考微信小程序

微信小程序本身就可以划归为移动开发范畴,不管语法是怎么样的,如果有移动开发经验的同学来说,将自己的移动端思维拿到微信小程序中加以使用,可能效果会更好。

来源

首发地址http://weappdev.com/t/topic/236
微信小程序开发论坛 http://weappdev.com/
垂直微信小程序开发交流社区

你可能感兴趣的:(微信小程序中的传值方式,添加”主动技能”)