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

需要专门的管理后台维护

要提供一个文档专门记录每个url和服务的对应表 , 每次组件改动了都要即使修改 , 很麻烦 。 参数的格式不明确 , 是个灵活的dictionary , 同样需要维护一份文档去查这些参数 。

内存问题

每个组件在初始化的时候都需要要路由管理中心去注册自己提供的服务 , 内存里需要保存一份表 , 组件多了会有内存问题 。

混淆了本地调用和远程调用

url-scheme是Apple拿来做app之间跳转的 , 或者通过url方式打开APP , 但是上述的方案去把他拿来做本地组件间的跳转 , 这会产生问题 , 大概分为两点:

远程调用和本地调用的处理逻辑是不同的 , 正确的做法应该是把远程调用通过一个中间层转化为本地调用 , 如果把两者两者混为一谈 , 后期可能会出现无法区分业务的情况 。 比如对于组件无法响应的问题 , 远程调用可能直接显示一个404页面 , 但是本地调用可能需要做其他处理 。 如果不加以区分 , 那么久无法完成这种业务要求 。

远程调用只能传能被序列化为json的数据 , 像UIImage这样非常规的对象是不行的 。 所以如果组件接口要考虑远程调用 , 这里的参数就不能是这类非常规对象 , 接口的定义就受限了 。 出现这种情况的原因就是 , 远程调用是本地调用的子集 , 这里混在一起导致组件只能提供子集功能(远程调用) , 所以这个方案是天生有缺陷的

理论上来讲 , 组件化是接口层面的东西 , 应该用语言自身的特性去解决 , 而url是用于远程通信的 , 不应该和组件化扯上关系


推荐阅读