美文网首页iOS开发杂货铺
十五分钟了解什么是组件化开发?

十五分钟了解什么是组件化开发?

作者: 蚂蚁牙齿不黑 | 来源:发表于2018-03-12 16:09 被阅读141次

1. 什么是组件化? ( 1分钟)

组件化没有官方严格的定义,因为这三个字已经是一个很直白的单词了,平时工作闲暇的时候总会造一些轮子,这些轮子就可以叫作一个组件,如果在一个项目中,也可能会按照功能需求进行划分组件,所以没有严格的界限,不如把它定义为一段完整的代码集合,呵呵。。。

2.怎么实现组件化开发?( 3分钟)

在了解了组件只是代码集合之后,下一步理所当然就是想知道各个组件之间如何无耦合的进行通讯,可以说方式有很多,在ios 的生态环境里我可以列出3种方法,1.通知 2.runtime 3.设计中间件,这三种方法只有第3种是所有编程语言中都可以通用的思路,所以下面会进行介绍,runtime这种方式可能影响苹果审核,自行研究一下,通知这种消息模式就是一种天然的解耦方法,不知道的可以私信问,太简单了

3.图解中间件设计 ( 4分钟)

image.png image.png

从图二可以看出各个模块之间没有直接的关联了,但是他们都依赖中间件,

4.中间件设计原理 ( 7分钟)

中间件会在堆控件维护一个注册服务表,哈希表结构,在ios 中的实现就是一个字典,在这个字典中会存储一段自定义字符串为key(这个自定义字符串也叫接口)然后保存一段代码块(这算代码也叫服务),这段代码块在iOS中的实现形式就是block

这里举一个场景来描述刚才说的话,两个组件报表模块和单据模块,在报表模块提供了一个报表查询功能,然后在单据的模块内部去调用这个不属于自己的功能

接口 服务 服务提供方
"jz://report/queryData" 报表查询功能 报表模块
  • 报表模块先向全局字典中注册报表查询服务("jz://report/queryData") 这段代码写在报表模块中
    [MGJRouter registerURLPattern:@"jz://report/queryData" toHandler:^(NSDictionary *routerParameters) {
        NSLog(@"%@",routerParameters);
        NSDictionary *userInfo = routerParameters[MGJRouterParameterUserInfo];
        void (^completion)(id result) = routerParameters[MGJRouterParameterCompletion];
        NSArray *reportData = @[];
        if (completion) {
            completion(reportData);
        }
    }];
  • 单据模块调用报表查询服务 这段代码写在单据模块中
    NSArray *queryStr = @[@{@"StartValue":@"",@"Operator":@"like",@"DestValue":@"2017-10-09 15:55:40",@"EndValue":@"",@"Id":@"f59ff536-07dc-451c-b0ea-45aea40f5cf8"}];
    NSString *reportTplId = @"hfddff536-07dc-451c-b0ea-4581511dfd454";
    NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
    [userInfo setObject:queryStr forKey:@"key_queryStr"];
    [userInfo setObject:reportTplId forKey:@"key_reportTplId"];
    [MGJRouter openURL:@"jz://report/queryData" withUserInfo:userInfo completion:^(id result) {
        NSLog(@"报表组件回调结果:%@",result);
    }];

看到这里还有不明白的欢迎留言。

相关文章

  • 十五分钟了解什么是组件化开发?

    1. 什么是组件化? ( 1分钟) 组件化没有官方严格的定义,因为这三个字已经是一个很直白的单词了,平时工作闲暇的...

  • YDL Android 组件化实践与拓展 (1) - 基础功能

    组件化概述 问:什么是组件,什么是组件化? 答:在软件开发领域,组件(Component)是对数据和方法的简单封装...

  • 浅谈Android插件化

    如今,插件化与组件化的开发越来越广泛的被我们所使用,尤其是许多大公司。 什么事插件化,什么是组件化呢?组件化开发:...

  • Android组件化和插件化开发

    Android组件化和插件化开发 什么是组件化和插件化? 组件化开发 就是将一个app分成多个模块,每个模块都是一...

  • Android组件化和插件化开发

    Android组件化和插件化开发 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个...

  • 【长篇】Android组件化细讲+手写实现

    Android开发进阶必看之【组件化架构技术精讲合集】B站搜这个视频。 什么是组件化,为什么要组件化 耦合、维护、...

  • Android组件化开发实践笔记

    一、什么是组件化和插件化?   组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发...

  • WebComponent介绍与简单使用

    WebComponent能够提供开发者组件化开发的能力什么是组件化组件化没有一个明确的定义,但是一般形容就是:“高...

  • 组件化学习

    组件化是什么 组件化是通过cocoapods的形式安装各个组件,那么就要了解cocoapods是怎么打造本地私有库...

  • vue基础入门(3)

    3.组件基础 #3.1.什么是组件? #3.1.1.理解组件 前端组件化开发是目前非常流行的方式,什么是前端组件化...

网友评论

    本文标题:十五分钟了解什么是组件化开发?

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