转载:选择 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. C/S模式和B/S模式

    C/S模式和B/S模式 1.C/S模式(Client/Server,客户机/服务器模式) 如QQ 暴风影音,PPlive等应用软件都是C/S模式 是一种软件系统结构的一种,C/S模式是基于企业内部网络 ...

  2. 20165230 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20165230 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指 ...

  3. MySQL实现强制查询走索引和强制查询不缓存

    0.表结构如下:(包含两个索引) Create Table: CREATE TABLE `user` ( `userID` ) NOT NULL, `userCode` ) DEFAULT NULL, ...

  4. Anaconda 安装tensorflow(GPU)

    1.安装 如果是安装CPU模式的tensorflow,只要输入一下代码就可以了 pip3 install tensorflow #python3pip install tensorflow #pyth ...

  5. Linux内核跟踪之trace框架分析【转】

    转自:http://blog.chinaunix.net/uid-20543183-id-1930846.html   ---------------------------------------- ...

  6. bash脚本里su命令执行

    俩种方法 1.可以使用 <<EOF 参数实现. 脚本内容:cat test.sh代码如下: #!/bin/bashsu - test <<EOFpwd;exit;EOF 2.当 ...

  7. git clone直接提交用户名和密码

    git使用用户名密码clone的方式: git clone http://username:password@remote 例如:我的用户名是abc@qq.com,密码是abc123456,git地址 ...

  8. CCScale9Sprite 的 setContentSize setPreferredSize 区别

    CCScale9Sprite 设置图片大小方式: updateButtonSpriteMark->setContentSize(size);//设置图片的原始大小设置节点的未转换大小.无论节点被 ...

  9. H5新特性:video与audio的使用

    HTML5 DOM 为 <audio> 和 <video> 元素提供了方法.属性和事件. 这些方法.属性和事件允许您使用 JavaScript 来操作 <audio> ...

  10. Mac OS 下安装mysqlclient报“mysql_config not found”的解决

    如问题所示,应该是你没有将mysql_config所在文件夹加入系统的PATH路径,解决方案下: 1.第一步找到你的mysql_config所在位置 1.1. 如果是直接安装mysql,所在位置应该是 ...