当初跨平台开发不是新鲜事了,各个跨平台框架都曾经百花齐放,各有千秋。我自己是一名前端开发程序员,对各个跨平台框架都有所涉猎,明天大略说一下各个框架的劣势及劣势,供大家在开发过程中提供参考。
首先要说的是React Native(RN),要学习RN你要先学会react,react是率先提出虚构DOM概念的,在虚构DOM中计算比照DOM树大大晋升了前端性能,后续vue等框架开始模拟,正因为虚构DOM的概念太过弱小和超前,导致它不受平台限度,从而衍生了RN,它的背地也是大厂反对facebook。说它凉了都是流言,大家释怀学习即可。它的原理是通过react的形式可开发APP,它能够把咱们用JS写的组件,编译成原生组件,不是什么H5利用或是webapp。所以用户体验还是很不错的,小公司谋求效率能够抉择,然而RN毕竟是一个APP UI的解决方案,须要集成简单SDK的话还须要会原生开发。目前它的生态曾经十分残缺欠缺,你不用放心你的APP太过简单它不能实现的问题,因为它能够和原生无缝连接配合,随时呼叫原生声援。那么它的性能如何呢?有的人对于性能问题纠结不放,瞎话说;它和近程必定还是有差距的,毕竟两头多个JS层,基于jscore运行的,然而个别APP用户根本无法觉察其中的差距,没有垃圾框架只有垃圾程序员,咱们齐全能够用技术补救一些性能差距,所以不用在意那些微不足道的性能差距,强烈建议学习和应用。
第二个要说的是国内很火的uniapp,号称有370W开发者,在国内很火,它背地的公司是国内的dcloud,技术栈是基于vue的。react在国内上很火,然而在国内;不好意思vue曾经是大哥了。能够说dcloud把vue玩的很透,根本能够说是国内vue用的最6的公司,uniapp的长处是可能一次编写编译APP和小程序端全笼罩,对于国内程序真的是福音,它的劣势在于成本低(学习成本低、开发成本低),uniapp联合了weex的概念推出了nvue,它的原理在于能把web组件编译成近程组件,跟RN有些类似的想法。然而uniapp开源水平不够,当初抉择它的都是一些小公司或是外包公司,uniapp提供了很多与原生/小程序交互的“桥”,目标在于让你无脑开发即可,咱们能够轻松开发例如微信领取、蓝牙、分享、定位、推送等,而且uniapp上架商店是齐全合规没有危险的,有人说它是基于webview的,性能是个问题,我自己体验了一下和亲自用过uniapp开发,认为uniapp是做过很多优化的,比咱们本人套个壳子用的webview用户体验要好很多(小公司不举荐套壳开发),高频页面能够用nvue开发,成果更好,如果咱们后期开发为了疾速上线,齐全能够抉择uniapp,十分合乎国内的国情,为国内程序员提供了很大的福利,vue技术栈的同学能够学习把握。
第三个要说的是flutter,flutter是google推出的,开发基于dart语言,属于强类型的解释性语言,之前是为了跟js抗衡呈现的,后果可想而知,js尽管设计的有缺点,然而也有其劣势不是那么容易战胜的。然而dart在flutter打了个翻身仗,flutter自称能达到60帧,渲染也有本人的引擎,性能齐全能够跟原生媲美,我也用过一段时间,举荐原生APP开发的学习,如果你是前端开发人员其实没必要涉猎,因为跟前端关系并不大了,如果非要学习能够理解一二,当然flutter开发web还是有点不成熟的,我也置信flutter不能取代web畛域。flutter跟RN一样是UI的解决方案,它的开发对于前端程序员来说可能不太适应,感觉就像是在套娃,好的是它有热重载,开发效率会提成一大截,编译成安卓ios都是原生代码,两头没有中间层,是彻底脱离JS的,相当于没有中间商赚差价,因而性能什么的都是问题了,对于谋求相对品质和性能的同学能够学习,然而我集体了解flutter不会走的太远,因为它脱离了不太完满然而很广泛的JS和JS程序员。。
当然跨平台的框架很多,它们三个只是代表,它们的原理无非是webview派,代表的uniapp、Cordova。第二种是编译成原生组件,通过JS作为桥的:RN、weex、uniapp(nvue),还有就是编译成原生代码,没有中间商的flutter等,依据本人的理论状况抉择即可,但我要说的是,咱们要能用好框架才是最重要的,好的程序员用H5 套个壳子也能做出媲美原生的APP,而有的程序员用原生也不能补救技术的差距。因而抉择本人和团队善于的才最重要。