苹果开发中文网站组件化方案调研(16)

[self.viewaddSubview:btn];

}

//调用组件B的功能

-(void)btn_click{

[[URL_RouetersharedInstance]openURL:@"test://B_Action"withParam:@{@"para1":@"PARA1",@"para2":@(222),@"para3":@(333),@"para4":@(444)}];

}

-(void)action_A:(NSString*)para1{

NSLog(@"callaction_A:%@",para1);

}

@end组件B实现的代码类似 , 就不在贴了 。 上面都是简化版的实现 , 不过核心原理是一样的 。

从上面的代码可以看出来 , 实现原理很简单:每个组件在自己的load方面里面 , 把自己对外提供的服务(回调block)通过url-scheme标记好 , 然后注册到URL-Router里面 。

URL-Router接受各个组件的注册 , 用字典保存了每个组件注册过来的url和对应的服务 , 只要其他组件调用了openURL方法 , 就会去这个字典里面根据url找到对应的block执行(也就是执行其他组件提供的服务)

存在的问题

通过url-scheme的方式去做组件化主要存在如下一些问题:


推荐阅读