求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
React Native并非原生
 
作者 Marcel Weiher  来源:Metablog 火龙果软件  发布于 2015-04-23
 
摘要:主张“Learn once, write everywhere”的React Native让开发者用JavaScript开发移动原生应用,但事实却非如此。React Native其中很大一部分利用了原生架构,却也包含了一些非原生架构。

当我们就Apple的“MVC非MVC”讨论术语泛滥问题时,Facebook于上个月正式开源的React Native似乎亦是如此。主张“Learn once, write everywhere”,让开发者用JavaScript开发移动原生应用,此景虽好,但事实并非如此。React Native其中很大一部分利用了原生架构,却也包含了一些非原生架构:
  • 用视图作为drawing result,而不是drawing source
  • 平行的组件层级结构(component hierarchy)
  • 使用ListView,而不是UITableView
  • 不使用UIButton创建按钮
  • 不使用响应链,但是找到了相似的替代品
  • 最后,使用JavaScript语言来编写。
以上列出的种种多多少少体现了React Native的一些优势,但React Native本质上并非原生。另外,React与不久前刚发布的Components框架的基本原理跟苹果关于MVC模式的误解实在是不谋而合:

图中所示:控制器(Controller)持续通过视图(View)显示数据并不能体现MVC的具体含义,除非将其理解为“Massive View Controller”。

在Components和React Native中,用View(UIView/NSView)将“实现UI的可变状态”替换为“模型(单一)功能”,发挥drawRect::的作用。以后面临的问题不再是创建新的完整框架,而是通过视图显示数据。解决方法是,将画板上的Custom View拖到UI上,执行drawRect::。绘制视图(以及/或者将组件设置为视图状态突变)比drawRect::更凸显状态性,而非削弱。

再强调一下,这个解决方案还不错,只是没有循规蹈矩罢了。据我所知,目前热捧React Native的主要是一些Web开发者,他们如今无需学习Objective-C/Swift或Java,就能开发“原生”应用了。不过,React Native究竟是否体验与宣传如一还尚未定论。

最后,“react”貌似是指“单向响应数据流”——更让人摸不着头脑的行内话,我想以后会常常遇到。
 
分享到
 
 
 
 



利用Gitlab和Jenkins做CI
CPU深度学习推理部署优化
九种跨域方式实现原理
 
 讲座 设计模式C语言
 讲师:薛卫国
 时间:2019-4-20
 
 
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
希望我们的资料可以帮助你学习,也欢迎投稿&提建议给我
频道编辑:winner
邮       件:winner@uml.net.cn

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号