39
回答
高手问答第 192 期 —— 深入认识 React Native — 跨平台移动开发必备

OSCHINA 本期高手问答(4 月 4 日 - 4 月 10 日)我们请来了张益珲@珲少 和大家一起探讨关于使用 React Native 进行移动端跨平台应用开发的问题。

张益珲,工学学士,一位经验丰富的程序员,曾开发过 iOS 平台系列游戏疯狂越狱1-2,应用物通配货软件,VIPExam考试库,证券财经软件等,曾就职于中国唯品会,目前主要从事移动端应用开发,对 iOS 开发和 React Native 跨平台开发拥有丰富经验。同时,珲少也是开源中国社区的优秀博主,一直在持续不断地产出高质量技术内容,大家不妨前往关注珲少博客一波 : )

React Native(简称 RN) 是由 Facebook 开源的跨平台移动应用开发框架,旨在让开发者能在 JavaScript 和 React 的基础上获得完全一致的开发体验,RN 着力于提高多平台开发的开发效率 —— 学习一次,编写任何平台。

由于 Android 和 iOS 两大主流移动操作系统的“垄断地位”,越来越多的公司和企业开始把业务的重点放在移动客户端上,而又为了提升开发效率,RN 框架就在这样的背景下诞生了。作为一个跨平台移动应用开发框架,RN 背后有着 Facebook 这个“巨头”的支持,所以如果开发者希望涉足跨平台移动应用开发这个领域,RN 是一个值得考虑的选择。

当然,本期高手问答当然不是为了向大家普及 React Native,主要是希望开发者通过本次高手问答能深入理解 React Native,向使用 React Native 进行跨平台开发迈出第一步。

本期问答内容:

  • React Native 开发与原生开发对比(开发效率、应用性能等)
  • React Native 的设计思想
  • React Native 组件的使用
  • React Native 开发技巧分享

或有其他相关问题,也欢迎大家积极提问!

为了鼓励踊跃提问,珲少会在问答结束后从提问者中抽取 5 名幸运会员赠予《React Native全教程:移动端跨平台应用开发》一书。

图书购买地址:天猫

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就关于 React Native 开发的问题向@珲少 提问,请直接回帖提问。

举报
局长
发帖于6个月前 39回/4K+阅
共有39个答案 最后回答: 5个月前

@珲少  目前我们在用的是cordova+ H5的形式在开发app. 各种定制化需求一般都可以通过社区或者自定义插件实现, 生态算比较完善. RN也接触过, 但是不敢在中型以上项目中使用. 因为, RN的工程可能需要维护2套代码, 开发成本比cordova高, 而且, 使用RN对原生部分的要求更高(仅仅会IOS android或者仅仅会JS都不够), 相反cordova的plugin机制更贴近原生写法, 如果有当前社区无法解决的需求, cordova可以花更少的精力更快的用原生代码来实现.   所以, 感觉RN 的优势在于, 开发简单逻辑但对性能要求更高的项目.  这样的结果感觉并不太搭, 不如cordova来的中庸全面.  想请教下您怎么看呢?

--- 共有 1 条评论 ---
珲少你好,你理解的很对,cordova以及各种第三方插件已经可以十分方便的调用原生功能,但是其渲染机制依然是H5,RN则是用JS的方式写原生,两种开发模式的结构完全不同,原生的优点是流畅,不依赖网络,性能好,交互精致;H5的优势在于快速,热更新,跨平台;RN则是在他们之间的一种解决方案,丢弃了一部分原生的性能,但是比H5略强,丢弃了一部分H5的快速,但是比原生略强,算是提供给开发者另一种选择 6个月前 回复

@珲少在window上用android studio开发,有哪些坑?

--- 共有 2 条评论 ---
珲少这个确实和RN没有关系 😄 Andriod studio3.x版本后已经优化了许多,无论Windows和Mac或其他平台,都是最主流的安卓开发集成环境 6个月前 回复
局长这和 React Native 有什么关系吗? 6个月前 回复
@珲少 您好,我是一名移动开发者,我们公司现在用的是cordova+h5的方式,虽然只用写一套代码,但是比原生的体验还是差了一些,那么如果我要让我的团队转rn,学习成本会不会很高?是不是需要维护多套代码?在性能上比原生会不会差?
--- 共有 1 条评论 ---
珲少您好,首先RN和H5是完全不同的两种APP开发模式,H5使用的主要技术依然是基于WebView的,通过JS来沟通WebView和原生端,实际的界面渲染和逻辑依然是WebView来处理的,RN是真正的原生,其只是提供了使用JS编写原生应用的一种方式,流畅度,体验都要更优一些,当然其也有更加复杂,开发局限性更大等劣势。关于学习门槛,如果JS有基础,其实是十分容易上手的 6个月前 回复
@珲少 @珲少 你好第一次在开源中国提问。我主要比较关心的是,在混合开发的模式下,想要有接近原生的体验,都会引入一些第三方库,在安卓ios都在不断迭代更新自身的背景下。如何保证旧版和新版api的兼容性。我觉得兼容性应该大家都会比较关注吧。RN在这方面有什么更胜一筹的优化思路吗,或者说比较成熟的优化方案呢。
--- 共有 2 条评论 ---
珲少RN提供了版本升级工具,使用十分方便 6个月前 回复
珲少关于使用第三方库接口的问题,很多第三方库在升级时通常会保留旧的接口,只做过期提示。如果接口变动较大,是会徒增很多适配的工作量,在开发时,可以再第三方库和上层应用间增加一层接口层,接口层定以后可以保持上层的调用方式不会变动,第三库更新好,同步修改接口层即可 6个月前 回复

@珲少 怎么看待在用TS写RN需要编译两次这个问题,到了babel7会否有所改善

--- 共有 1 条评论 ---
珲少要看个人的编码习惯吧,ES6的新特性已经非常面向对象的编写风格,配合一些框架开发中也十分畅快 6个月前 回复

@珲少 完整的学习过贾鹏辉的课程,案例也都能实现。没有android和ios的开发基础,只能使用别人开发的插件。不知道后期怎么去进一步提高。

--- 共有 1 条评论 ---
珲少毕竟是开发原生应用,原生端的知识还是要略微了解一下。如果开发一般通用功能的APP,RN提供的和一些第三方组件应该可以满足,如果有更加定制化的需求,就免不了要自己编写组件和原生通信等等了 6个月前 回复
顶部