docs: 内容

This commit is contained in:
杭城小刘
2020-11-08 15:51:47 +08:00
parent a744b950b0
commit e89fe0ca1c
27 changed files with 11290 additions and 10341 deletions

View File

@@ -32,4 +32,95 @@
- https://blog.csdn.net/blog_jihq/article/details/80669616
- RN iOS 插件化开发
- RN iOS 插件化开发
![image-20200816000651547](/Users/lbp/Library/Application Support/typora-user-images/image-20200816000651547.png)
![image-20200816000711707](/Users/lbp/Library/Application Support/typora-user-images/image-20200816000711707.png)
- 各个组件彼此独立,互不影响。
- 组件通过组件管理器(也被叫做 ComponentManager、Router、MediumBus通信。通过中介者进行通信。
- 公共库基础服务基本不变,所以需要下沉到公共组。所以这部分工作可以交给底层架构组到同学去做。
- 业务开发专心去做业务开发、业务流程的相关
![image-20200816004925859](/Users/lbp/Library/Application Support/typora-user-images/image-20200816004925859.png)
- 左侧最基础的 MVC 架构
- 右侧是经过组件化之后的工程目录。 LianJiaClient 里面就是最基础的 AppDelegate也就是 App 的启动入口。LJComponent 目录下按照彼此独立的功能拆分为多个组件。每个组件按照真实的物理文件夹,划分为多个工程文件夹,每个组件内部按照 MVC 组织,比如 UI、Model、Service、Logic、Connector
- 工程文件和物理文件最好一一对应。好理解、好找
## 如何实施组件化
1. 制定代码规范基础服务独立成库
什么叫公共基础组件?和业务无关的技术功能
![image-20200816010644959](/Users/lbp/Library/Application Support/typora-user-images/image-20200816010644959.png)
2. 单个组件内部可以按照合适的架构组织,比如 MVC 和一些分层,比如 service
![image-20200816120154120](/Users/lbp/Library/Application Support/typora-user-images/image-20200816120154120.png)
3. 组件之间通信包括2部分组件之间页面跳转、组件之间服务的调用
- 页面跳转
url 导航去中心化。如果集中放到 Router 的导航方法内则该方法可能会很长n个组件每个组件内m个页面则需要 n*m 个组合)。每个业务组件,内部某个地方集中处理该组件内可能需要用到的注册 url 并返回对应的 vc把 VC 返回给 ComponentManager然后决定跳转方式push、present
![image-20200816120108178](/Users/lbp/Library/Application Support/typora-user-images/image-20200816120108178.png)
- 服务调用
![image-20200816123924669](/Users/lbp/Library/Application Support/typora-user-images/image-20200816123924669.png)
![image-20200816120957323](/Users/lbp/Library/Application Support/typora-user-images/image-20200816120957323.png)
4. 进一步优化。动态性
![image-20200816124854310](/Users/lbp/Library/Application Support/typora-user-images/image-20200816124854310.png)
ComponentManager 在根据 lianjia://ModuleOverSeaHouseList 去匹配,然后发现有 url 则不跳转本地,直接打开 H5
5. 服务调用传递参数不方便。NSDictionary 组装很麻烦,可以将公共 Model 下沉,作为一个 Pod
![image-20200816125008767](/Users/lbp/Library/Application Support/typora-user-images/image-20200816125008767.png)
6. 组件化架构
![image-20200816130556184](/Users/lbp/Library/Application Support/typora-user-images/image-20200816130556184.png)
7. 工程组织方式
![image-20200816130738633](/Users/lbp/Library/Application Support/typora-user-images/image-20200816130738633.png)
8. 遇到的问题
![image-20200816131719018](/Users/lbp/Library/Application Support/typora-user-images/image-20200816131719018.png)
重复资源问题:图标可以用 iconfont并且可以控制颜色或者在打包编译阶段使用 shell、ruby 脚本去删除重复图片(局限性:只能图片名,对比像素比较麻烦)
9. 建议
![image-20200816132840319](/Users/lbp/Library/Application Support/typora-user-images/image-20200816132840319.png)
10. 总结
![image-20200816133001605](/Users/lbp/Library/Application Support/typora-user-images/image-20200816133001605.png)
Protocol我遵循你这个组织的协议则我就可以加入你这个组织比如某个组件遵循协议然后就可以统一调度管理。