• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程技巧 > react-native在项目中使用半年后的感受

react-native在项目中使用半年后的感受

作者:cocoLG的专栏 字体:[增加 减小] 来源:互联网 时间:2017-08-23

cocoLG的专栏通过本文主要向大家介绍了框架,react-native,软件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

我们做的是一款IM软件,嵌入在一个手机游戏平台的工程内部。之所以要采用react-native(后文简称RN)框架重构它,是因为现在游戏大厅上的所有游戏都是热更新的,为了也能让这个IM软件实现实时更新,减少IPA升级的次数,RN当然是不错的选择。
经过一个同事将近一年的预研以后,今年我们全面开启项目重构。奔着热更新和Write once, run everywhere,从此走上RN填坑之旅。

从ES6,css-layout,redux开始

我一直在从事iOS开发,用OC语言,接触到ES6还是挺新鲜的。语言风格和C系语言完全不是一个风格。参考阮一峰老师的教程http://es6.ruanyifeng.com/#docs/intro
RN采用标签式的界面布局,叫css-layout,和CSS基本一样。虽然是第一次使用这种方式布局界面,用熟之后觉得还是很方便的,代码量少,很直接。
聊天部分我们使用了redux架构,是JavaScript的一个状态机。参考http://www.redux.org.cn/index.html

RN的优势

  • 调试方便
    ipa安装好之后,就不需要频繁编译了,只需要reload一下,把js代码从云服务器下载下来就可以呈现改变代码后的效果。
    而且RN支持hotReload,在调试界面的时候非常方便,修改代码之后保存,界面就自动跟着变化,这一点在调试的时候实在很爽,不过有时候有点慢,需要reload。
    chrome在线调试也挺不错,可以打断点,看日志。虽然没有xcode或者Android Studio那么浑然一体,但是作为脚本语言的调试工具,也是很厉害了。
  • css-layout布局
    这对于前端程序员来说,降低了不少学习成本,也大大减少了代码量。但是对于iOS或者安卓开发者来说,刚开始接触的时候,得接受一些思想上的转变。
  • 跨平台
    大多数代码,只需要写一套,安卓和iOS就都可以运行了,游戏逻辑和数据。界面上一部分有一些平台区分,毕竟是从react包装上来的。刚开始学iOS的时候,就想象着,要是有一种跨平台的开发形式就很6了,没想到过了几年就有了。跨平台理论上是可以减少开发成本的,减少开发人员数量,但是实际效果并不然,后面说。
  • 热更新
    这可能也是大多数公司选择使用RN的主要原因。频繁的app升级会让用户很烦,而且苹果的审核真是很麻烦。现在很多大型app都使用了RN,毕竟繁多的业务迭代,每次都通过APP审核,也算是噩梦啊。
  • 有个好爹。有着Facebook的支撑,相信会发展的很好。
  • 社区强大。看看github上的star数量,和开发成员数量,还是值得信赖的。

RN的不完善

容我吐槽一下,不完善的地方实在太多了,和原生开发体验来比,堪称天壤之别。RN现在的最新版本是0.46,我们工程中用的是0.42,毕竟还没上1.0呢。
去掉主观情感,下面列举一下部分不完善的点:

  • 开发体验一般。
    虽然js语法很灵活,但毕竟是脚本语言,调试起来还是不方便,不好查错。我们用的表现较好的vscode编辑器,就这都感觉各种跳转很不方便,动不动就得全局搜索,可能是xcode用习惯了吧。脚本语言的编写也会慢慢习惯吧。
  • 文档很粗略
    官网上的文档,就只是简单介绍用法和各个控件的属性,对细节的描述很少。当你遇到难解决的问题或者踩到坑了,上面基本找不到答案。
  • 两个平台还没有完全统一
    很多控件都是iOS专属,或者安卓专属。还有同一些控件,在不同平台上表现差异很大。
  • 控件不完善
    这个其实挺多的,最基本的ListView,功能缺失,坑很多。Text不支持富文本,动画,手势,ScrollView等等等等。不能一一列举。作为聊天软件,富文本功能必须实现啊,用于emoji表情和文字的混合显示。被迫自己搞了一套实现方案,现在还有点小bug。具体实现方案参考http://blog.csdn.net/gang544043963/article/details/70245850
  • 升级RN版本需要大动干戈。
  • 要做出优质app需要花费大量人力和时间去打磨
    跨平台,其实并没有减少开发成本,原来我们安卓和iOS各三个人,每次迭代都是有序进行。然而换了RN之后,6个人全上,做的累的啊,迭代慢,bug多。

总结

FaceBook也是想为开发者带去一套跨平台、动态更新的 Javascript 框架,口号是:Learn once, write anywhere:Build mobile apps with React。我觉得这是一个伟大的梦想。
2015年刚发布的时候,充满了期待和争议。发展到现在,RN也是逐渐在完善。前一段时间苹果发警告邮件的事情引起了大家的恐慌,不过以我看,RN还是安全的。从苹果的审核政策来看,允许运行于JavascriptCore的动态加载代码,并且没有去使用人家的私有方法。而且,现在使用RN的大公司挺多,尽管苹果高傲,但是要禁止RN的话,还是得掂量一下这些大企业的意见吧。
RN目前确实还不够成熟稳定,所以,想入坑的开发人员和决策者在入坑前得多权衡。

RN适合什么人或公司

  • 迫切需要热更新功能
  • 愿意投入人力和财力给RN

其他普通的应用,没那么迫切需要热更新的,就好好使用原生开发,毕竟原生的成熟度和稳定性要比RN好很多。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • CI等MVC框架中为什么不能有index控制器的原因
  • react-native在项目中使用半年后的感受
  • 为什么使用框架 使用框架的优缺点

相关文章

  • 2017-05-12微信小程序学习之初探小程序
  • 2017-05-12Markdown语法备忘
  • 2017-05-1224种编程语言的Hello World程序
  • 2017-08-22PG伪类型anyelement触发pg_pathman的一个bug
  • 2017-05-12HTTP状态代码集合 方便查询
  • 2017-05-12数据类型和Json格式分析小结
  • 2017-05-12Git 教程之服务器搭建详解
  • 2017-05-12Http 状态代码 指示(ajax,bs结构用的到)
  • 2017-05-12算法系列15天速成 第五天 五大经典查找【中】
  • 2017-05-12支付宝 接口开发帮助(asp,php,asp.net,jsp)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 获取目录下所有文件名的代码
    • wap开发中如何有效的利用缓存减少消息的传送量
    • vs快捷键 用好Ctrl+Enter与Ctrl+Shift+Enter组合键让你的编辑代码速度快了很多
    • 分享18个最佳代码编辑器/IDE开发工具
    • 算法系列15天速成 第八天 线性表【下】
    • windows 中 \r\n 区别于 类unix中的\n 疑问说明
    • 程序员的八种境界,你在哪一境?
    • 高性能WEB开发 web性能测试工具推荐
    • 关于IE11修改User-agent不再支持document.all等
    • Mercurial入门学习介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有