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

1,722 阅读3分钟
原文链接: weappdev.com

移动开发的页间传值方式

在移动开发过程中,这里以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的key-value,可以使用官方的api进行“增删改查”。

storage官方方法

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

缺陷

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

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

这样会造成两个问题:

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

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

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

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

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

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

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

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

通知模式简单逻辑图

icindy/WxNotificationCenter/blob/master/README.md

# WxNotificationCenter
WxNotificationCenter - 微信小程序通知广播模式类,降低小程序开发的耦合度

## 信息

来自[微信小程序开发论坛](http://weappdev.com/) [http://weappdev.com/](http://weappdev.com/)
垂直微信小程序开发论坛

## 版本信息

`version 0.1`

## 效果预览

![WxNotificationCenter效果预览gif](screenshoot/wxnotice.gif)

## 使用

 1. copy 文件 `WxNotificationCenter.js` 到你的开发目录中

This file has been truncated. show original

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

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

来源

微信小程序开发论坛 weappdev.com/
垂直微信小程序开发交流社区