转载:选择 React Native 的理由

从开始知道 React Native 到现在已经过了5个月,真实的试用也经历了三个月的时间。阅读文档开始,了解是什么,到简单的理解为什么,都是在聆听不同的人的不同的声音,无论是,知乎上的“科学家”们,还是 Youtube 上的各位“牛人”,都从某个角度告诉了我们选择 RN 的理由。

国内开始询问为什么用 RN 的问题由来已早,见于知乎,看到的解释,尚没有让我看到能真实反应今天的 RN 的状况的内容,带出来的各种负面的反应大于正面的反应,混乱了问题的真正所在,“为什么要选择 RN”。

当开始问,“评价 RN”,这样的问题,而真正想知道为什么要选择 RN 的理由的时候,其实际,已经和为什么选择 RN 这样的初衷渐行渐远,大多数的回答,让人感觉的更多的是,RN 还有很多 Bug,RN 性能还是不如 Native Code,等等诸如此类,或多或少的阻碍了某人去尝试试用 RN 的那点热情。

在 React Conf 2017 上 Airbnb,以及 Wix.com 的各位“牛人”的演讲中,充分的体现了他们为什么选择 RN 的主题,他们的演讲所表达的,是走的更远的过程,把 Web,Mobile 项目合并为 用 React X 来统一,减少了开发的成本,还使得项目更加高效,当然,虽然如此, RN 的采用,并不代表只需要,完全的 JS 程序员,只是负责写 Native Code 的程序员依然存在,不过处理的问题更集中了,人员相对减少了。

我同意上面的观点,试用的原因只有一个,就是高效,使得开发、维护项目更加高效,而且真的可以做到。

RN 发展到今天,已经是位于 0.47.1 的位置上,每个月的版本迭代,其发展的速度相当的快,虽然,还有诸多的问题所在,但是其促成的高效开发,学一次,随处可写,已经实实在在可以应付各类手机项目问题。

当代码从 Native Code 转到 RN 的时候,所面临的最大的问题,或许就是性能的问题,这已经不是 RN 的短板所在,因为有很多优秀的教程和演说,已经说明了提升 RN 以接近 Native Code 性能的实践和方法,并得到了很好的效果。这其中 Wix.com 上的“牛人”走在前面,去 Youtube 上看看他们在 React Conf 2017 上的演讲,你就会有很多启发,觉得其实用 RN 实现 Native Code 的性能并不难,或许相当的容易。

或许选择 RN 以使用,对很多人,有很多壁垒,是的,其中一个,RN 要求你绝不仅仅是一个良好的 JS 程序员,或者是只懂得 JS 的程序员。而相反的是,你需要是一个有相当经验的 Android 或者 iOS,或者同时使用过两种开发工具的有能力的程序员。

从个人体验上,至今,个人做的项目,仅仅是用了 3 个月左右的时间(学习了 2 个月)基本同步完成了 Android 和 iOS 部分的应用,这是一个相对复杂的数据计算应用,而 RN 大幅度的提升了项目的效率。

与之前类似 iOS 应用做了对比,减少了至少 2 / 3 的时间,这是一个令我惊讶的事实,我没有想到 RN 有如此高的效率。错误率也相对减少了,而调试变得简单。

感觉写应用又回到了有趣的时代。

当然,这其中得益于 Realm 手机数据库,Mbox 状态管理两种高效的第三方组件的帮助。

RN 中的第三方的组件并不是所有都很完善,越简单的库,越稳定,而复杂的库,问题会随之而来,在实际的开发中,通常会遇到两种问题:

第一,库有缺陷,提出的 Issue 得不到快速的解决,那么你只好亲自动手去修改了,往往自己修改要快过等待。

第二,库缺乏一些自己需要的特性,这样的问题,除了自己解决,没有更好的办法。而在自己解决的过程中,你会对 RN 了解的更全面。

对于新手而言,我想说,在选择 RN 之前,你需要是一个有着 Android 或 iOS 开发经验的程序员,在我看来,这必不可少。

然后,学习有成本的,但是,不要看重学习的成本而忽略了其真实的价值所在。

那就是,更轻松的完成自己的工作,给自己多点时间。

选择 React Native 的理由的更多相关文章

  1. Airbub 弃用React Native

    弃用 React Native ? 最近的技术圈尤为热闹,Google 发布了首个 Flutter 预览版.Vue.js 在 GitHub 上的 star 数量超过了 React.js,而如今全球著名 ...

  2. 为什么学习React Native三点原因

    React Native不到两岁,兼容Android平台刚刚1年.我学习React Native其实也就不到1年,不算长,也不算短. Paul Graham在文章中写过:大多数人真正注意到你的时候,不 ...

  3. React Native开发技术周报2

    (1).资讯 1.React Native 0.22_rc版本发布 添加了热自动重载功能 (2).技术文章 1.用 React Native 设计的第一个 iOS 应用 我们想为用户设计一款移动端的应 ...

  4. React-Native(二):React Native开发工具vs code配置

    从网上翻阅了一些开发react-native的开发工具时,发现其实可选的工具还是比较多的Sublime Text,WebStrom,Atom+Nuclide,vs code 等.因为我用.net生态环 ...

  5. Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较

    说明 Native.Hybrid.React.Web App方案的分析比较 目录 前言 参考来源 前置技术要求 楔子 几种APP开发模式 概述 Native App Web App Hybrid Ap ...

  6. React Native 开发工具篇

    正文 概述:开发RN的工具有很多,选择性也比较多,比如Facebook专门为React开发的IDE:Nuclide,还有做前端比较熟悉的WebStorm.Sublime Text 3.VS Code等 ...

  7. 跨平台框架与React Native基础

    跨平台框架 什么是跨平台框架? 这里的多个平台一般是指 iOS 和 Android . 为什么需要跨平台框架? 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平 ...

  8. [译] Facebook:我们是如何构建第一个跨平台的 React Native APP

    英文原文(需FQ):https://code.facebook.com/posts/1189117404435352/ 早些时候,我们介绍过iOS版的React Native. React Nativ ...

  9. Weex和React Native框架对比与选择

    工作原理 大致基本类同,JS-Native桥和前端渲染框架,只是使用框架技术不一样: Weex 阿里内部早期研发的一个通过 JSON 数据描述 native 渲染的项目WeApp以及Vue.js这款优 ...

随机推荐

  1. 计算广告学-多点归因模型(Multi-Touch Attribution Model)

    计算广告学中的一个重要的问题是, 如果用户产生了一次转化(conversion, 比如购买, 注册等), 且该用户在转化之前看过大量不同频道(比如搜索, 展示, 社交等等)的广告, 那么我们如何确定是 ...

  2. vue开发者工具vue-devtools-4.1.4_0.crx谷歌插件下载及安装

    网盘地址: https://pan.baidu.com/s/14PoaihUHQZEJtiHNWUmdjg 下载好后 谷歌浏览器中扩展程序,开启开发者模式,将下载的文件拖到窗口中即可 然后重启浏览器 ...

  3. CSS 实现单边阴影

    box-shadow: 0px -15px 10px -15px #111; 五个值分别为:x y blur spread color 将 spread 设置成 blur 的负值即可 这种只适用于 o ...

  4. python——脚本和print

    脚本和print 1.脚本文件 <Python 基础教程>(第二版)中 P118页,原操作为下: 1 _metaclass_ = type 2 3 class Person: 4 def ...

  5. 查看gcc的默认宏定义命令【转】

    转自:http://blog.csdn.net/cywosp/article/details/10730931 有些时候我们在编写代码或者阅读开源项目时经常会遇到一些陌生的宏定义,在找遍所有源代码都没 ...

  6. Linux USB驱动学习总结(二)---- USB设备驱动

    USB 设备驱动: 一.USB 描述符:(存在于USB 的E2PROM里面) 1.  设备描述符:struct usb_device_descriptor 2.  配置描述符:struct usb_c ...

  7. nanosleep()

    函数原型 #include <time.h> int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);   描述 ...

  8. 10款常见MySQL高可用方案选型解读【转】

    我们在考虑MySQL数据库的高可用架构时,主要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. 用作备份. ...

  9. Python基础之多线程事件Event

    import threading,time class Boss(threading.Thread): def run(self): print("BOSS:伙计们今晚上加班到22:00&q ...

  10. JVM常用启动参数+常用内存调试工具

    一.JVM常用启动参数 -Xms:设置堆的最小值. -Xmx:设置堆的最大值. -Xmn:设置新生代的大小. -Xss:设置每个线程的栈大小. -XX:NewSize:设置新生代的初始值. -XX:M ...