浅析最近很火的react-native技术
来源:互联网 发布:css和js区别 编辑:程序博客网 时间:2024/05/16 07:35
作为一个IOS 原生开发人员,当听到有技术能支持跨平台IOS和安卓,并且能用JS写原生应用的时候,我被震惊了,于是开始了重学react-native 之旅,我是强忍着使用oc 或者swift 的冲动将react-native慢慢的学了一遍。
React Native用iOS自带的JavaScriptCore作为JS的解析引擎,但并没有用到JavaScriptCore提供的一些可以让JS与OC互调的特性,而是自己实现了一套机制,这套机制可以通用于所有JS引擎上,在没有JavaScriptCore的情况下也可以用webview代替,实际上项目里就已经有了用webview作为解析引擎的实现,应该是用于兼容iOS7以下没有JavascriptCore的版本。
普通的JS-OC通信实际上很简单,OC向JS传信息有现成的接口,像webview提供的-stringByEvaluatingJavaScriptFromString方法可以直接在当前context上执行一段JS脚本,并且可以获取执行后的返回值,这个返回值就相当于JS向OC传递信息。React Native也是以此为基础,通过各种手段,实现了在OC定义一个模块方法,JS可以直接调用这个模块方法并还可以无缝衔接回调。
所有的核心在于将OC中的接口封装起来然后暴露给JS调用,整个项目的思路是清晰的,就是使用JS调用原生的控件,把原生的控件组件化,然后统一在JS中渲染,这样在原生部分实际上只负责显示数据,显示样式,提高了原来WEBAPP的效率,从而使用户有了比之前更加良好的体验度。
整个流程:
整个项目通过RCTBridge 来连接JS和OC ,在OC中通过RCT_EXPORT_METHOD()将自己的接口暴露给JS然后再JS中调用原生接口中的方法。
这个技术点是很好的,但是我估计不会有一个复杂APP全部都使用上react-native 做整个应用,充其量某个经常改动的部分使用这个技术,那么问题来了?
1、原生如何和JS进行交互?全部都封装成方法暴露出去么?
2、调用原生照相机、数据库,亦或者使用支付宝等第三方怎么办?
3、还是没有解决我们最想要的一套方案解决适配IOS和安卓的需求
在问题2上面我想到了将原生的方法封装起来然后暴露给JS调用,实际上也能实现了,这些功能我估计facebook也回逐渐完善的,但是问题1 上面 ,如果将所有的方法封装在一起暴露给外面,我想这事不太好实现的,也比较麻烦,这些等等的问题给我感觉“造轮子”的难度不是一般的大。
综合以上,我觉得如果在一些不那么复杂的应用中,或者只需要提供展示效果的页面中使用react-native 技术是非常实用的,但是如果其中有很复杂的功能,还是需要好好想想,毕竟现在react-native 这个轮子还不那么好用!!
- 浅析最近很火的react-native技术
- React Native 常用的技术
- React Native 常用的技术
- React Native 常用的技术
- React Native 源码浅析
- React Native-目前最火的前端技术
- React Native-目前最火的前端技术
- React Native-目前最火的前端技术
- react native 技术栈
- react-native技术调研:react-native是什么?
- React Native技术周报一
- React Native技术知识总结
- React Native 移动技术在企业架构的应用
- 要不要使用react-native技术--个人的一点看法
- 【视频】基于React Native的跨三端技术实践
- 【React Native】React Native的bind方法
- React Native Android Gradle 编译流程浅析
- 马上要跨年了,把最近学的react-native总结一下
- MyEclipse启动异常记录
- C#中的结构体与类的区别
- sencha cmd 在ExtJS6.0的使用
- elipse离线安装velocity插件
- 已经阻止此发布者在你的计算机上运行软件,您必须取消阻止该发布都才能运行此软件
- 浅析最近很火的react-native技术
- Myeclipse8.5启动tomcat控制台显示java.lang.OutOfMemoryError: Java heap space的解决
- Java并发编程:Callable、Future和FutureTask
- Android 学习笔记 10 Hnadler
- Linux信号机制学习笔记-----Linux信号机制的疑问?????
- Apache—DBUtils简介
- -l参数和-L参数
- 64位系统连接数据库:在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配的问题
- 在framework或子工程中使用xib