转载:选择 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. [php]mysql操作流程

    这种是比较老的一种mysql连接方法 1.连接数据库 $this->con = mysql_connect($this->host, $this->user, $this->p ...

  2. 一次非线上iowait高的情况的检查

    一.现象 iowait高达30%.使用iotop查知jbd2/sda6-8占用60%的io写入.mongodb每秒写入达400k. 必然复现 二.排查 1.先检查是不是mongodb引起的 将mong ...

  3. 【译】第十二篇 SQL Server代理多服务器管理

    本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...

  4. IE安全系列之——RES Protocol

    IE安全系列之--RES Protocol res Protocol用于从一个文件里面提取指定资源.语法为:res://sFile[/sType]/sID 各Token含义: sfile:百分号编码. ...

  5. Centos6.5下搭建nagios详解

    一.LAMP环境部署 1.安装php 1.安装yum源 rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-releas ...

  6. linux快速复制大量小文件方法 nc+tar【转】

    1,在需要对大量小文件进行移动或复制时,用cp.mv都会显得很没有效率,可以用tar先压缩再解压缩的方式.  2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输.  nc和tar ...

  7. C#基础学习之StreamReader和StreamWriter

    StreamReader和StreamWriter操作字符的 FileStream操作字节的 //使用StreamReader读取文件 using (StreamReader sr=new Strea ...

  8. 29 A Quick Guide to Go's Assembler 快速指南汇编程序:使用go语言的汇编器简介

    A Quick Guide to Go's Assembler 快速指南汇编程序:使用go语言的汇编器简介 A Quick Guide to Go's Assembler Constants Symb ...

  9. cbow&&skipgram详细

    前面:关于层次huffman树和负例采样也要知道的,这里就不详细写了 来源于:https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=224 ...

  10. java基础18 String字符串和Object类(以及“equals” 和 “==”的解析)

    一.String字符串 问:笔试题:new String("abc")创建了几个对象?答:两个对象,一个对象是 位于堆内存,一个对象位于字符串常量池 class Demo17 { ...