React 是Facebook推出的一套框架。React是一种思想,是Facebook对于Web Components的理解与实现。其中ReactJS是Web端,React Native是iOS端,而安卓端仍在完善。值得注意的是React Native写的应用是Native App,而不是Hybrid App。也就是说不同于webview形式,用JS、HTML写代码和布局经过React Native 桥接转换成原生ObjectC,用户体验上和原生一样。
昨天去36氪参加了一次来自Facebook工程师和豆瓣前CTO的技术分享,我分享一下会上所见所得。
一、ReactJs
叶钉钉,GrowingIO 的联合创始人,介绍了他们的技术框架发展,以及为何使用了ReactJS。因为我对前端开发了解不深,简单的意思就是随着业务的的复杂化,前端开发工程师面临越来越多的问题,频繁的操作DOM,以及全局变量等等问题。后期的维护和升级越发困难,但是使用ReactJs,能够模块化。提高开发效率,便于拓展,建议做前端开发的工程师可以了解一下。
二、ReactNative
ReactNative封装的组件部分截图。
看上去组件很多,常用的原生控件都有对应的组件。但是据Say 创始人,清风老师的说法,不好用,不过由于是开源,自己重新封装控件也是可以的,他们很多组件还是自己重新修改或者封装的。
ps : say 使用ReactNative 做的一款 视频类社交软件 挺好玩的app
清风老师团队使用ReactNative的总结:
- 如果做比较复杂的应用不可能躲开objc的
同理安卓也是需要使用原生代码作为桥接 - 由于使用JS、CSS大大降低了iOS的入门门槛
- 想一次开发完同时运行在iOS和Android是不可能的
但是代码比如Model等存在复用的可能性 - React Native 自带组件并不好用
- 三方库太少,而且整体质量不高
- 必须要深入看React Native 的源码
- Code Push很好用 可以实现不重新打包提审的情况下更新app 修复部分bug。(“鸡冻人心”!!)
- 一定要用es6!!
一些优点:
1、ReactNative 动画支持比较好。
如果能把Facebook的pop动画库引进的话,我想会非常棒的。
2、前端工程师快速开发APP成为可能
React Native是基于JavaScript,使用类似HTML + CSS的排版,但是使用原生控件渲染的框架。使以前写网页的前端工程师可以使用它用JavaScript来开发原生APP,而不用去学复杂的objc,或者说只学一点入门的就可以。但是就目前来说团队里面还是需要一个会objc的iOS开发工程师,作为桥接整合,解决一些React Native解决不了的问题。比如相机视频等等等。
然而从长远看,APP的功能会越来越复杂,最终还是需要用原生去重新实现。除非你的APP只有label。>_< !
3、动态更新
苹果的审核一般都是一周甚至半个月,一旦被拒,严重影响开发进程。React Native的语言是基于JavaScript,这使得代码可以从服务器端动态更新成为可能。配合使用微软的Code push可以部分解决这个问题,动态更新项目中的代码(Say 中就用到这个技术)。随着以后的进一步发展,也许有一天每天更新不是梦。当然,代码的安全性将进一步受到挑战,如何有效保护核心代码的安全也会变成一个难题。
三、漫步Facebook技术十年工作协作流程
第一位工程师覃超,分享了Facebook的工作环境和工作协作模式,对创业公司的发展建议等。第二个工程师介绍的是Facebook的每日智能推送给用户最有用的消息,主要是算法模型、服务器如何配置等等,相对比较复杂,就不介绍了。