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

作者: Dicn | 来源:发表于2016-11-12 09:56 被阅读221次

    移动开发的页间传值方式

    在移动开发过程中,这里以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中进行主动唤醒处理方法,否则你没有什么方法来进行逻辑上的主动处理。

    这样会造成两个问题:

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

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

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

    • 实际场景分析

    比如场景,用户选择启动“夜间模式”,那么我们需要将整个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/
    垂直微信小程序开发交流社区

    相关文章

      网友评论

        本文标题:微信小程序中的传值方式,添加”主动技能”

        本文链接:https://www.haomeiwen.com/subject/ejmputtx.html