选择 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 的理由的更多相关文章
- Airbub 弃用React Native
弃用 React Native ? 最近的技术圈尤为热闹,Google 发布了首个 Flutter 预览版.Vue.js 在 GitHub 上的 star 数量超过了 React.js,而如今全球著名 ...
- 为什么学习React Native三点原因
React Native不到两岁,兼容Android平台刚刚1年.我学习React Native其实也就不到1年,不算长,也不算短. Paul Graham在文章中写过:大多数人真正注意到你的时候,不 ...
- React Native开发技术周报2
(1).资讯 1.React Native 0.22_rc版本发布 添加了热自动重载功能 (2).技术文章 1.用 React Native 设计的第一个 iOS 应用 我们想为用户设计一款移动端的应 ...
- React-Native(二):React Native开发工具vs code配置
从网上翻阅了一些开发react-native的开发工具时,发现其实可选的工具还是比较多的Sublime Text,WebStrom,Atom+Nuclide,vs code 等.因为我用.net生态环 ...
- Hybrid APP基础篇(二)->Native、Hybrid、React Native、Web App方案的分析比较
说明 Native.Hybrid.React.Web App方案的分析比较 目录 前言 参考来源 前置技术要求 楔子 几种APP开发模式 概述 Native App Web App Hybrid Ap ...
- React Native 开发工具篇
正文 概述:开发RN的工具有很多,选择性也比较多,比如Facebook专门为React开发的IDE:Nuclide,还有做前端比较熟悉的WebStorm.Sublime Text 3.VS Code等 ...
- 跨平台框架与React Native基础
跨平台框架 什么是跨平台框架? 这里的多个平台一般是指 iOS 和 Android . 为什么需要跨平台框架? 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平 ...
- [译] Facebook:我们是如何构建第一个跨平台的 React Native APP
英文原文(需FQ):https://code.facebook.com/posts/1189117404435352/ 早些时候,我们介绍过iOS版的React Native. React Nativ ...
- Weex和React Native框架对比与选择
工作原理 大致基本类同,JS-Native桥和前端渲染框架,只是使用框架技术不一样: Weex 阿里内部早期研发的一个通过 JSON 数据描述 native 渲染的项目WeApp以及Vue.js这款优 ...
随机推荐
- 装好Linux后没有声音的看过来
现代的Linux发行版对声卡的支持都应该没有问题.系统装好,声卡就应该正常工作. (尤其是ArchLinux,我觉得对硬件支持最跟得上时代步伐.) 可是我用mplayer播放mp3文件却没有声音,但也 ...
- c++刷题(18/100)树
题目1:二叉搜索树的第k个节点 给定一颗二叉搜索树,请找出其中的第k小的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4. 思路:因为是二叉搜索树 ...
- python练习-Socket实现远程cmd命令
需求:基于tcp的套接字实现远程执行命令的操作 代码示例: # 编辑者:闫龙 #Client端部分 import socket #导入骚凯特模块 CmdObj = socket.socket(sock ...
- 使用 TypeScript 改造构建工具及测试用例
最近的一段时间一直在搞TypeScript,一个巨硬出品.赋予JavaScript语言静态类型和编译的语言. 第一个完全使用TypeScript重构的纯Node.js项目已经上线并稳定运行了. 第二个 ...
- 翻译:CommonJS的wiki
CommonJS的wiki资料原文 Modules/AsynchronousDefinition 异步定义的模块(国内一般叫AMD模块定义) STATUS: PROPOSAL 现状:提案 Implem ...
- C#匿名函数与Lambda表达式
Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数.在C#中的Linq中的大部分就是由扩展方法 ...
- Python Webdriver 重新使用已经打开的浏览器实例
因为Webdriver每次实例化都会新开一个全新的浏览器会话,在有些情况下需要复用之前打开未关闭的会话.比如爬虫,希望结束脚本时,让浏览器处于空闲状态.当脚本重新运行时,它将继续使用这个会话工作.还就 ...
- 大数据系列之分布式计算批处理引擎MapReduce实践
关于MR的工作原理不做过多叙述,本文将对MapReduce的实例WordCount(单词计数程序)做实践,从而理解MapReduce的工作机制. WordCount: 1.应用场景,在大量文件中存储了 ...
- 【前端vue开发】vue开发watch检测的使用
<span style="color:#006600;"><div id="app"> <input type="tex ...
- java基础50 配置文件类(Properties)
1. 配置文件类Properties的概念 主要生产配置文件与读取配置文件的信息 2.Properties要注意的细节 1.如果配置文件一旦使用了中文,那么在使用store方法生产的配置文件额时候字符 ...