名词解释
Native: 原生客户端,指iOS和Android;
1、native只负责提供端能力,所有业务使用js开发。
特性:
-
适合新项目,项目创建后,即使用rn开发。
-
整个app从启动开始,所有页面都是rn开发的。
-
对初创公司的业务比较匹配
优点:
-
架构简单
-
适合小团队
-
对基建能力要求很低
缺点:
-
仅适合小项目,大型项目无法使用该方式。
-
项目发展一段时间后,随着页面越来越多,会出现性能问题。
![](https://img.haomeiwen.com/i1981099/3dcbe0c8b9f88e18.png)
2、rn作为app内一个子模块使用,一部分业务使用native开发,一部分使用rn开发。
特性:
-
rn模块比较独立
-
和native彼此之间的交互比较简单
-
只存在特定的入口和出口,以及少量的数据交互。
优点:
-
架构相对简单
-
对基建能力要求较低
-
整个rn模块作为一个包,或者拆分为基础包和业务包两个包。rn的包管理比较简单。
缺点:
-
rn被局限到单一模块内部
-
rn无法渐进式演化,覆盖更多页面。
-
rn模块内部的页面增多,也会出现性能问题。
适合存量项目做跨端改造。
![](https://img.haomeiwen.com/i1981099/f76d922b57a64bbd.png)
3、页面容器化,rn和native在业务使用层面上互相交融,不分彼此。
特性:
-
rn和native在功能模块之间,没有明确的边界,可以互相跳转,彼此传递数据。
-
业务页面由不同的容器承接,native容器、rn容器。目前大厂基本采用这种使用方式
优点:
-
页面管理灵活且精细,业务可以随意采取任意容器承接。
-
可以渐进式演化。
-
由于每个页面都是单一容器,rn都是单页面的形式,可以有效避免rn的性能问题
缺点:
-
项目架构复杂,难度大。架构设计不合理容易混乱,影响开发效率。
-
rn的包管理比较复杂
-
对团队能力和基建能力有更高的要求
![](https://img.haomeiwen.com/i1981099/c7318a887fbabe04.png)
4、跨端能力容器化-app工厂
介绍这个之前先简介一下rn的包管理流程
rn的包管理流程
![](https://img.haomeiwen.com/i1981099/feae33d73ed77173.png)
生产流程:
-
有一个页面
-
使用rn开发完毕,产出rn代码
-
rn代码打包后产出 jsbundle包
-
将打包后的包上传包包管理服务器
消费流程
-
app通过内部的包管理模块,拉取rn包的集合
-
当用户点击跳转到rn页面时,将对应的rn包加载到rn的容器里
-
js代码在rn容器内部解析并执行
-
渲染页面出来
![](https://img.haomeiwen.com/i1981099/48a3b63cea13501b.png)
我们聚焦一下消费流程,将整个流程涉及到的能力,封装成一个单独的包。可以方便别的app的集成
意味着上述生产流程的所有内容都是可以直接复用到新的app里,或者其他存量app里
![](https://img.haomeiwen.com/i1981099/157b8d2dce2592e2.png)
![](https://img.haomeiwen.com/i1981099/b71017f26b0e17ff.png)
优点:
-
高复用,不仅仅是函数的复用、类的复用、组件的复用。而是页面级别的复用
-
高灵活性,有接近于h5的灵活性
-
和h5方案相比,有更高性能
缺点:
-
复杂度很高
-
对团队能力要求很高
-
基建设施要求很高
网友评论