我与 React Native 的这一年

一直以来都想写点关于 React Native 的文章,奈何自己实在太懒,一直拖到现在,我从去年三月份开始用 React Native,到现在刚好一年,在这一年里,借助于 React Native 高效的开发效率,大大小小也开发了近十款 App,是时候做个小结了。

在使用 React Native 之前,我用 Ionic 开发过几款 App,那个时候 React Native 还没有开源,市面上可选的方案并不多,要么原生要么是基于 Cordova 的 Hybrid App 方案。原生开发对于我们来说并不可行,对于 iOS 和 Android 平台需要两组不同的开发人员维护两套完全不一样的代码,然而实现的功能却是一样的。而 Hybrid App 自然成为了最合理的方案,那个时候最火的 Hybrid App 框架就是基于 Angular 的 Ionic,借助于 Ionic 完善的解决方案,再加上基本的 Web 开发技术,几乎不需要任何原生开发技术就可以开发出非常美观而实用的 App。

众所周知,Hybrid App 是跑在 WebView 上的,这一点跟 Web App 是一样的,但是 Hybrid App 通过暴露原生方法给 JS,提供了普通 Web App 所不具备的原生访问能力。然成也 WebView 败也 WebView,Hybrid App 本身就是一个 WebView,这也决定了它的性能是受 WebView 限制的,而且还会因为不同的平台和系统版本而出现不兼容的情况,尤其是 Android 上不同版本的 WebView 对 CSS 的支持程度不一样,导致相同的 CSS 样式在不同的系统版本的表现不一致。虽然不兼容的问题可以通过 Crosswalk 的方案解决,也就是用 Crosswalk 来替代系统自带的 WebView,这样就不存在兼容性问题了,在低版本的 Android 上性能也有一定提升。然而代价也是巨大的,打包 Crosswalk 意味着你的 App 体积要硬生生增加 20 多兆,就算是 Crosswalk Lite,也还是要增加 10 多兆,然而就算你对 App 体积不介意,可 Crosswalk 说到底也还是个浏览器内核而已,意味着性能依然是瓶颈。

我用 Ionic 开发过几个 App,在 iOS 上体验确实还说的过去,然而到了 Android,完全是另一个世界,在非高端机型上体验极差,打开速度慢,运行速度更是不能忍,更不用说对于不同的机型的兼容性问题。除开性能不说,Ionic 的开发体验也是不那么愉快。

因为是基于 Angular 开发,利用 Angular 封装常用控件,隐藏控件的实现细节,使用者只需编写控制器逻辑就可以写出一个看起来还不错的界面,可以省很多事,然而 Angular 存在的问题也一并带过来。Angular 的学习曲线之陡峭简直叹为观止,各种复杂的概念更是让人望而却步。我不知道多少次去查官方文档 以及 Stackoverflow 过 ServiceProvider 以及 Factory 的区别,到底什么情况该用 Factory 什么情况用 Service,我依然不知道。然后是 directive,别问我 link compile 是干嘛的,我就想问 @attr=attr 的区别是什么?以至于我虽然做过好几个大型的 Angular 项目,我却几乎没有自己写过 directive。更不用说 Angular 槽点满满的模块系统,模块与模块间的 Service 尽然还不能重名,简直醉。使用 Angular 最大的一个坑就是一旦你用上了 Angular,你所有的东西都要 Angular 化,比如我用个 moment,要先写一个服务包一层,很多人好像用了 Ionic 之后就忘了正常的 JS 是怎么写的,经常问一些 JS 常识问题,思维被 Angular 限制了。

而且 Angular 本身并不是为了移动开发而设计的,并没有为移动平台而优化,所以 Angular 在手机上的性能并不好(这里我不去说他的打包体积,因为本来脚本本来就在本地,所以没什么影响)。所以当我知道 Ionic2 会基于 Angular2 开发的时候,我还是很期待的,一直都在关注 Ioinc2 以及 Angular2 的开发进度。然而当我见证了 Angular2 的 40 多个 alpha 版本 以及 几个 beta 版本,每次都以为这就是最后一个测试版,正式版就要出来的时候,它就给你的小数点后的数字涨一下,pia pia pia 打脸,我就果断取关了。顺便吐槽一下 Angular2,这种在 RC 阶段都可以随便修改 API 重写 Router 的行为,很 Google。再测试了下还处于 alpha 版本 Ionic2,那性能连一代都不如,于是我彻底放弃了 Ionic。貌似 Ionic2 在前一段时间终于出了正式版,but who cares。

虽然 Ionic 本身确实是一个很不错的框架,让无数以前只会写网页的前端进入到了移动开发领域,用现有的 Web 开发技术就可以开发出看起来还不错的 App,然而它错就错在它抱错了大腿,选择了 Angular,选择了 WebView,性能和体验是绕不过去的坎,不过现在大热的 PWA,可能是它不错的归宿吧。

然后我开始尝试 React Native,从此完全进入了一个全新的世界。

未完待续╮(╯▽╰)╭

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容