Hybrid App 和 React Native 开发那点事

简介:Hybrid App(混合模式移动应用)开发是指介于Web-app、Native-App这两者之间的一种开发模式,兼具「Native App 良好用户交互体验的优势」和「Web App 跨平台开发的优势」。很多人都知道,React Native 是 Facebook 开源的框架,可以直接用 Javascript 开发原生的APP,本文则会围绕开发中的具体实践问题进行讨论。

此前,我们在多篇文章中提到过 React Native,本次移动精英开发俱乐部又专门围绕 Hybrid App 和 React Native 进行更加深入的讨论,希望能够给我们的开发者同学,提供一些建议。文章系朱雅丽整理, IT 运维管理平台 OneAPM 负责审校。以下为讨论内容:

主持人-东辉:大家好,今天我们的主题是 Hybrid App 和 React Native,欢迎大家踊跃进行发言。

陈伟鹏-雅特iOS:我想知道用了 React Native 的同学,对这种技术的态度和评价?

郭镫鸿:貌似携程、平安科技还有天猫都在使用 React Native,说明还是有市场的。

主持人-东辉:React Native 在 Android 上的表现貌似不太好,坑比较多吧?

龙虾:React Native 的首次加载很慢,有缓存就好一些,其他的还可以,落地的难度就是不知道该客户端开发做,还是前端做。

郭镫鸿:React Native 有效解决了H5的性功能障碍问题,这点很不错。就像 React Native 的理念:leaReact Native once,write anywhere .

James:个人理解,React Native 的推出应该是为了统一移动端的开发模式。

罗飞:大家可以分享一下自己公司用 Hybrid 或 React Native 的现状,都是怎么用的?

利炳根:现状就是:大部分都可以用 React Native 做完,只有少部分需要原生支持。当然,也和我们的项目有关。因为我们现在做得功能都比较简单,我们主要工作都在处理一个问题:一个平台上显示好好的东西,同样的代码,在另一个平台上,就不行了。然后还有就是对不同的屏幕的适配,目前还没遇到特别难的东西,今天看看有没有人用来做大型成熟项目?学习一下经验。

Rory He:React Native 需要技术的学习成本其实更高一些。

frankphper:前端是不是因为 React Native 才变成「钱」端?

Kiss小锦:前几天看到阿里做了开源,效果参考淘宝、聚划算品牌团。https://github.com/alibaba/LuaViewSDK

其实,移动 APP 开发领域,要极致体验发布就不灵活(Native),要灵活发布就没有极致体验(H5)。有没有一种技术方案可以兼顾极致的体验和灵活的发布? LuaView 可以完美解决上述两个问题,不过需要学习 lua 语言。

主持人-东辉:大家也可以说实践、使用场景以及收益等问题。

Kiss小锦:使用场景一般是电商做大促活动需要灵活上线。

利炳根http://reactnative.cn/docs/0.21/getting-started.html 大家可以看看这里的文档,再买本入门书,一般的项目开发就差不多了。

杜鹏飞千锋安卓:直接用 WebView 和普通网页不更简单么?

郭镫鸿:如果那样的话,性能和功能都有问题。

Shawn:我认为目前 Hybrid 开发形式有三种:

1.原生开发一部分+H5开发一部分,通过 WebView 桥接;

  1. 纯 H5 开发,需要本地功能时通过第三方打包工具实现 如 HBuilder+ ;

  2. 用 H5 或 JS 开发,但最终编译成 Native 应用,如 ReactNative、APICloud、Cocos2d-js、Unity3D-js 等。还有种形式是 Webview+Runtime ,一般用在H5游戏加速,像腾讯 X5 浏览器、UC 等都内置了 Runtime;

jia_dongxu:可以用 cordova+ionic angular。v2 优化不少移动端,angular 也要出2了,据说优化移动,不知道 ionic2 和 angular2 正式版性能会不会提高很多?

真哥:不过,ionic 在安卓手机上性能不好。

郭镫鸿:ionic 有点卡,iOS 相对好些。

Shawn:移动端性能是个问题,传统的PC 端方案还是不要用在手机上了。

柴明昆:貌似Angular 2.0对Native Apps 的支持和渲染是基于 React Native 的,我们也是某个模块改动需求频繁,最近正在研究评估使用 React-Native。

James:ionic2 nightly 已经有了,ionic2 完全采用angularjs2 ,用的 typescript es6,在性能会很大改善 。angularjs2 对移动端也进行了优化,React Native 目前应该都是大厂或者小范围在使用。

真哥:对dom的操作太频繁,特别是双向数据绑定,不太现实。如果你需要快速迭代,可以考虑React Native,如果特别注重体验和性能,建议用原生。

利炳根:前段时间,有外包公司专门推 React Native,号称基本的东西都已经封装了一遍,如果真的能做到他们宣称的那个程度,开发一般的 APP 超级快。很多一般的 APP,核心的竞争力是业务上的,对 APP 本身倒是不在乎,怎么快怎么来。当然,大家未必乐意做这类开发。

之前有公司,做了一年快速迭代,找到了真的有用户愿意用的业务,才开始优化的,一开始优化,优化完发现没人用,就是个悲剧。

窦静轩:关键是需要自定义,还是需要 Native 开发,所以不会出现谁替代谁。想跑起来一个React Native 的项目没那么容易,还需要基本的 Node 知识 。

我麻不拿到温网冠军就不改名字:这样会不会导致大部分公司愿意用 React Native,从而减少开发成本?

利炳根:当然,这是公司的悲剧,开发人员倒是无所谓的,公司倒了可以去下一家,反正自己技术练到了。我们两天前来的新同事,已经负责 React Native 的动画开发了,总得来说,上手还是很容易的。

Shawn:也就是说大公司追求用户体验,如果不计成本和开发效率的话,还是会用原生来做。

真哥:React Native 也属于一种开发模式了,其实优缺点很明显,React Native 只能调用原生接口,但是不能对原生做扩展,要做扩展只能写 Native,React Native 比 ionic1 好一点,不过现在学习 ionic2 或者 angular2 需要去看看 typescript。

jia_dongxu:React Native 的缺点,Android 体验太差了,非常卡。

利炳根:卡的问题,需要把开发模式关了,会好非常多,然后,页面还是可以适当优化一下的。

窦静轩:如果说有一批人,把市面上流行的组件的都封装了, 并且开源了,那样推广的速度也会很快。

我麻不拿到温网冠军就不改名字:就是说如果需要自定义控件的时候,React Native 做不到?

真哥:是的,React Native 不能做接口开发。

窦静轩:React Native 提供自定义组件的方法,需要 Native 自己开发。

利炳根:把原生封一层给 React Native 用,安卓不是很了解,iOS 这块是非常简单的。当然也可能是因为我做的功能比较简单。

柴明昆:React Native 在使用 View 的时候,这些 View 是要经过本地定制的,并且将相关方法暴露给 JS ,这样 JS 端才能正常使用。

张春明:React Native 是否采用?我一般这么想:能否达到快速迭代,可以适应产品的各种变态修改(控件修改),有问题容易追踪定位,现阶段更倾向于混合开发,然后各取所需。

Shawn:所以说目前还没有一套完美的方案,也就是说需要原生来做的,我们就用原生好了,H5 优势的地方就用 H5,这才叫混合开发嘛!

郭镫鸿:React Native 在性能和功能上是没有问题的,主要学习曲线比较陡峭,会用的人少。

窦静轩:Hybrid 受限于 WebView 啊,WebView 如果有 Bug 你没辙啊。

龙志辉:天猫的部分业务不是已经用 React Native 改造了吗?

郭镫鸿:天猫对 React Native 进行了封装。

柴明昆:如果没记错的话,QQ 空间的发现模块,就是用的 React Native。

真哥:用什么技术既不影响性能,又达到了功能和提高用户体验?

窦静轩:我觉得用啥在于开发者决策,如果你为了一个广告活动页,去弄 React Native 和Hybrid ,真心不如一个 WebView H5 原生去搞。我是15年趟了一年 Hybrid 的坑,16开始趟React Native 的坑了。

龙志辉:本地加毛玻璃吧!其实编程的思路是一样的,React Native 或者 Hybrid 主要目的很多时候是为了突破客户端审核限制和达到代码复用的目的,避免一个相同的业务写三份代码(Android,iOS,Web)。

郭镫鸿:我发现12306用的动态库也绕开了苹果的审核。

真哥:其实我觉得 React Native 更像一种思想 ,并不只是代表一个框架,学习框架主要是学习作者的思想, 就比如 angular 。

窦静轩:对,是思想,组件式开发。

我麻不拿到温网冠军就不改名字:我觉得 React Native 做某些模块还行,但是如果说完全来代替原生,我觉得是不是太快夸张了?

真哥:其实都是 MVVM,替代不了,只是说能够在相对短的时间没做出接近同等效果对性能影响又不大,「分久必合,合久必分」,现在完全被推翻了,如果统一的话,也许就不会有这么多新的想法了。

龙志辉-iOS:每年 iOS 和 Android 系统更新都会开放一大票新的API,用第三方的始终会慢半拍,性能和用户体验在客户端是放在首位的。

Shawn:你看 Cocos2d 支持 JS 吧,Unity3d 官方推荐用 JS 吧,虽说目前 JS 面向对象不太彻底,你看 ECMAScript6 也发不了,JS 用起来就更爽了,关键是 React Native 默认支持 ES6。

汤涛:我觉得 React Native 或者 Hybrid 方案,适用于强运营类的产品,比如电商类,工具类这种暂时没必要,大家选择技术方案时可以参考。

龙志辉-iOS:不知道微信的应用号会使用什么技术?React Native?

James:微信的应用号用 JS,而且微信有 WebView。

龙志辉-iOS:那还是 Hybrid 啊,如果微信也把 JS 框架开源了,就是第二个 React Native 了。

Shawn:腾讯不会弃标准于不顾的,微信应用号绝对是 H5 崛起的时候。

龙志辉-iOS:其实我觉得 React Native 有点像 Cocos2d-x,把各个平台的组件封装一套,用C++一次编写,就可以移植到各个平台了。

罗飞:非常感谢大家的讨论,由于时间的原因,今天的讨论到此为止。后续我们还可以再进行更多的交流,再次感谢大家。

国内 ITOM 管理平台 OneAPM 致力于帮助企业用户提供全栈式的性能管理以及 IT 运维管理服务,通过一个探针就能够完成日志分析、安全防护、APM 基础组件监控、集成报警以及大数据分析等功能。想阅读更多优秀文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1.小程序的优缺点优点:不需下载、卸载使用方便缺点:嵌套在微信中,属于微信的子应用2.使用的技术实际上是Hybrid技术的应用HybridApp(混合模式移动应用),使用网页语言和程序语言共同开发小程序兼具了NativeApp所有优势,也兼具了WebApp使用Html5跨平台开发低成本注:微信小程序与传
端口类型-HybridHybrid端口是交换机上既可以连接用户主机,又可以连接其他交换机的端口。Hybrid端口既可以连接接入链路又可以连接干道链路。Hybrid端口允许多个VLAN的帧通过,并可以在出端口方向将某些VLAN帧的Tag剥掉。华为设备默认的端口类型是Hybrid。 Hybrid端口收发数据帧的规则
不同vlan同段IP通信LSW1vlan1vlan2vlan3interfaceEthernet0/0/1porthybriduntaggedvlan2to3interfaceEthernet0/0/2porthybridpvidvlan2porthybriduntaggedvlan2to3interfaceEthernet0/0/3porthybridpvidvlan3porthybriduntaggedvlan2to3
VLAN中access、Trunk和Hybrid三种端口区别:acesss:1、发送不带标签的报文2、一般与PC\server相连时使用3、只可以属于一个VLANTrunk:1、发送带标签的报文2、一般用于交换机级联端口传递多组VLAN信息使用3、可以属于多个VLANHybrid:1、混合端口可以同时属于多个vlan2、混合端口
这系列文章内容包括:STP、RSTP、MSTP、VLAN、LACP、SuperVLAN。以学习实验配置为主要目标;实验引用华为官方na在线视频中实验。6.3VLAN原理和配置实验截图:配置第一个交换机:修改端口类型acc、配置端口所属vlan、配置trunk端口。实验心得:有一个问题,当你配置e0/0/3为trunk以及al
实验一:交换机端口类型配置1.拓扑图如下图所示:2.实验要求:实现二层网络中工程部和市场部不能互访,但是都能与网络中心的服务器通信3.请写出你的配置思路、配置命令实验思路:将交换机SW1、SW2、SW3之间配置为trunk链路,其他接口配置为Hybrid链路;实验配置名如下:SW1sysnameSW
   这个英文材料对我一个英语一般的学生表示亚历山大啊,不过还是勉强看完了,说说自己的看法吧。   谷歌作为一家商业公司,利润是其基本的追求目标,这一点是毋庸置疑的。但是谷歌并没有被这个基本目标挡住了视野,无数公司失败的经验告诉我们,如果缺少创新,公司的一切发展
简介:VLAN10内通信,VLAN20内通信,VLAN30与VLAN10、VLAN20、VLAN30皆可通信Hybrid接口应用拓扑图:  一、配置PC机ip并测试相互能否ping通 PC名称IP子网掩码网关PC110.1.1.1255.255.255.010.1.1.254PC210.1.1.2255.255.255.010.1.1.254PC310.1.1.3
通常情况下,公司对内网的使用远远高于对外网的使用。公司的内部网络是由二层交换网络构建的,所以二层网络设计的好坏直接影响公司的正常业务。好的设计不仅使功能得到体现,还可以应对一些未知的隐患,如线路损坏、设备损坏等。下面我们主要对华为的二层设备进行了解,不过首先要了解的就
手机app代表了互联网时代的发展,促使我们的日常生活也变得越来越轻松,不管是哪个行业或者企业,在人们手机上存在最多的还是APP,手机APP逐渐的超越了网络,本身这些APP系统就是一个大型的APP系统,具体APP怎么开发呢?开发出来的手机APP,主要还是通过编程的方式设计出来的,有了变成那么就需要程
我想导出一种简单可靠的方法来自动提升正在运行的批处理,而无需使用其他线程中建议的额外的VBS文件或提升的快捷方式.通过javascript从批处理调用UAC对话框可确保简短的简单代码.在对话框中选择“是”,但错误对话框弹出时(在Cmd窗口外部)“Windows找不到’test.bat’”,下面的脚
无论如何,我可以在FORTRAN程序中使用BoostGraphLibrary(BGL)来使用图形数据结构.任何人都可以帮助我或给我一个提示.我想在我的MPI-FORTRAN代码中的几个处理器上进行并行图结构.是否可以使用BoostGraphLibrary(BGL)来达到此目的!亲切的问候,谢夫解决方法:你必须构造一个用C语
原文链接:http://www.cnblogs.com/iamzyf/p/3515889.html其实问题很简单:我的产品页面在 http://www.gdtsearch.com/products.spiderstudio.docapi.htm,这是一个静态页面;而我所有的技术博客都在博客园中.为了让访问者能够直接在产品页面中看到我最
Hybrid接口是华为特有的一种接口Hybrid接口是既可以连接普通终端的接入链路,又可以连接交换机间的干道链路。简单说就是Hybrid接口既能实现Access的功能又能实现Trunk接口的功能。实验模拟:实验拓扑:实验编址:测试连通性:查看交换机接口类型(默认情况下都是hybrid类型)displayportvlan
原生APP开发-NativeApp:需要用户下载安装使用,可访问手机的所有功能(GPS,摄像头,重力加速器),拓展性强,是专门为某种操作系统开发的(IOS,Android,黑莓等),但是开发和维护的成本都比较高 webApp:html5语言写出的app,不需要下载安装,基本上就是触屏版的网页,可以在多个设备上运行,有很大的局限性
拓扑图如下:(1)sw1的配置:<Huawei><Huawei>system-view//切换到系统视图Entersystemview,returnuserviewwithCtrl+Z.[Huawei]sysnamesw1//配置主机名Oct25201916:29:31-08:00sw1DS/4/DATASYNC_CFGCHANGE:OID1.3.6.1.4.1.2011.5.25.191
程序员常用等宽字体1SourceCodePro2CourierNew(传统)3Consolas4Monaco5中文雅黑混合版(YaHeiConsolasHybrid)
Japan'shybridmodelinventoryofhairEwhaRinkaLead:passed37thbirthdayofthepear,theeyesofeveryonestillhasaLolita-likegirltemperament,herinterpretationoftheinvolutionBOBlongghdhairstraightener hair,andevensetoffinas
1url不要用hash模式,如果涉及到外部如firebase方式直接发送给客户端动态链接,要求打开app内h5地址的时候,这个#会被截断,客户端无法解析2尽量在多页面,当客户端由不同入口进入的时候,前端尽可能做多业务拆分,避免以后所有模块在一起,一次修改要全部上线,3移动端输入框键盘要求输