最近学习了下react-native,也使用它做了半个应用,这里简单地记录下一些心得。
不易上手
react-native对外宣称“Learn once, write anywhere”,这个口号与我们平常见到的各种游戏引擎标榜自己跨平台完全平一样。这里的Learn once是指我们需要系统地学习react-native,那么react-native的学习曲线是平滑还是陡峭呢?就本人的亲身体会来说,学习起来还是比较困难的:
react-native是由前端框架react发展而来的,它的主要目标就是用前端来开发移动端应用,不可避免的带有着前端开发人员的思维逻辑。对于前端人员来说,学习react-native就像是随手换了下工具,工具的外形可能跟以前稍有不同,但它的使用方式还是以前那一套,因此能够很快地达到得心应手的程度。但对于移动端转型而来的开发者来说,就像由windows换到mac系统一样,到处都充斥着不适应。
资料较少
react-native也是最近两三年发展起来了,坑填的差不多了,但依然可能碰到一些没填上的坑。中文资料较少,https://reactnative.cn 上的文档太简单,比如Navigation,短短的一页居然介绍了React Navigation与NavigationIOS两种导航方式。这篇doc中对我最有用的绝对是《开发环境搭建》这一篇了,其余的都只能做为参考了解下而已。
MVC中的V
网上很多人认为因为react-native及week的出现,移动端被前端取代是迟早的事,包括我自己也这样认为,并感到一定程度的忧虑。不过在我使用了react-native一段时间后,这种想法就不在那么强烈了。react-native的愿景是用前端来写移动端应用,但现在看来也只是迈出了第一步而已,离达成还有很长的一段时间。
是的,使用react-native的确可以比较快速的开发出一些用户交互较为频繁的应用,这是将前端的UI布局灵活的特点充分发挥出来而已。而涉及到与硬件交互,逻辑比较复杂的功能开发,这些都是移动端的优势地盘,前端想攻略下来还需要花费更长的时间。
react-native将原生模块封装成开发者可以使用的前端模块,开发者可以使用前端代码对UI界面进行布局并处理用户的交互。这些工作以前是由原生侧MVC模式中的V来做的,也就是说react-native取代了V,但对于余下的两个模拟依然没有顺利地接手。
平台差异
因react-native对于原生模块的复用,导致了控件的平台差异性:NavigationIOS只适用于iOS平台、控件的某些属性只针对单一平台。
UI布局方便
原生开发布局iOS要关注一个控件相对于其它控件的上下左右约束条件,并精确定位其尺度。而使用react-native布局界面,将屏幕分割成不同大小的模块,然后将对应的View填进就可以了。
上面列举了一些我这些天使用react-native的初步印象,后面会更新使用的具体细节问题。希望在应用开发完毕时,也能够完全的掌握react-native。
网友评论