| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> React Native 技术选型分析 -> 正文阅读 |
|
[移动开发]React Native 技术选型分析 |
本文从技术决策讲起,聊聊我们为什么要使用 React Native、如何使用、以及其他维度的思考。 文中将用 「RN」 代表 「React Native」。 1. 技术选型决策技术选型是一个复杂的过程,必须谨慎并保持敬畏,需要根据项目的实际情况而定。这关系到项目的命运。 1.1 了解 React Native简单介绍一下 RN。大家都知道 Android 和 iOS 两大移动操作系统,他们各自为营,互不相通。Android 的开发语言是 Java 和 Kotlin,iOS 的开发语言是 OC 和 Swift 。开发一款应用需要两支开发队伍。然后就有人思考,能否通过一种技术手段将 Android 和 iOS 统一起来?先后有多种解决方案诞生,最终 RN 以绝对优势脱颖而出。它是一个由 Facebook 于 2015 年 9 月发布的一款开源的 JavaScript 框架,它可以让开发者使用 JavaScript 和 React 来开发跨平台的移动应用。它既保留了 React 的开发效率,又同时拥有 Native 应用的良好体验,加上 Virtual DOM 跨平台的优势,实现了真正意义上的:Learn Once,Write Anywhere. React Native · Learn once, write anywhere 我在2017年第一次接触 RN,那时候还是 0.41 的版本。前前后后用它构建过四五个项目,和它打交道也三四年了。现在的最新版本已经是0.67了,亲眼见证它越来越完善的过程。 RN 的优势很明显,跨平台、热更新、调试方便等等,这里就不展开了。 但也有一些劣势值得注意,比如功能相比原生不够完善,文档相对粗略,用户体验略输原生等。 大多数情况下,对于中小型项目和创业公司来说,RN 会带来很好的收益。 更多分析请看这里。 1.2 项目背景我们现在有两款应用,好比打车软件的司机端和乘客端,支持Android 和 iOS 两个平台,所以线上总共有 4 个 App。这四个 App 属于中型偏小规模,但已经有 6 岁了,期间经历过很多届开发者,现在已经变得不太好维护了。而且团队中 Android 开发人数长期不足,导致两个平台的进度和质量都存在巨大差异。 1.3 RN 能给我们带来什么收益?如果引入 RN,会给项目带来几点明显的收益:
这些收益点,是建立在一个核心出上的:我们的 app 适合用 RN 吗? 首先我们知道,我们的 app 规模属于中小型,没那么复杂。 其次,app 类型以数据展示为主,加上有 IM 功能的一个订单平台,它没有巨额的性能消耗和复杂的交互逻辑。 而且,app 没有和外设交互。 最后的结论,我们的工程是适合用 RN 的。 1.4 有什么风险?做技术选型时,风险是架构师或者技术决策者的必须仔细考虑的事情。 技术角度的风险:
公司角度的风险:
经过对上面提到的风险的分析,以及和公司高层的沟通。所有的顾虑一一被消灭,并得到了公司层面的大力支持。 1.5 为什么不用Flutter关于 RN 和 Flutter 的讨论非常多,这里有一篇比较全面的对比 这里 对于我们来说,有四点足以让我们选择 RN:
2. 项目实践方案决策2.1 方案选项我们现有的项目已经持续了六年了,现在要引入 RN。我们应该如何引入?有两个选择:
2.2 多角度思考技术视角 从开发者视角来看,绿地模式开发体验更好,没有历史负担,更高效。 如果采用棕地模式,会增加很多额外工作和困难。 公司视角 如果采用绿地模式,那么在对齐现有功能之前,团队没有直观的阶段性输出。并且这个周期很长。如果失败,造成的损失很大。风险和短期成本较高。 如果采用宗地模式,团队容易产生阶段性成果,在尝试中前进,整体风险小。 项目现状 项目经历了六年的迭代,开发人员以及产品经历轮换了好几拨,很多功能细节没有详细记录,测试代码不全。一个 app 包含了多个产品团队。 如果采用绿地模式,不确定因素太多,沟通成本大,开发周期很难预估。 2.3 最终决策经过上面的分析,最终我们选用了相对安全保守的方案,采用棕地模式。 先从 app 的登录流程做起,毕竟它是相对独立的模块,且复杂度低。 3. 总结本文基于真实项目案例,讲述了在选择使用 RN 框架之前的选型抉择过程。其中包括技术选型分析和项目实践方案分析过程,从不同角度分析其中的利弊。 本项目中在做技术选型分析的时候,省略了很多细节因素分析,例如, 社区活跃度、商业应用案例、成熟度分析、技术原理分析等。那是因为 RN 已经家喻户晓,并且结合我们现有的 RN 经验,可以省略部分繁琐的分析过程。 文末寄语: 所有的技术选型和框架选择,都应该基于项目的实际情况,从多方面去权衡利弊,而不仅仅是看哪个框架或语言更火、更酷炫。 -- 我说的。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 19:54:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |