React Native(RN)发布于2015年,也是使用JavaScript语言进行跨平台APP的开发。与H5开发不一样的是,它使用JS桥接技术在运行时编译成各个平台的Native代码,其使用的技术Facebook的Flux技术。web
其特色是:浏览器
使用JavaScript语言,因为JS被普遍地使用,因此RN也很容易被接受。微信
RN依赖JS的运行时环境,也就是JS桥接技术。其使用Facebook的Flux架构。架构
RN仅提供了UI渲染和设备访问的API,不少功能必须依赖第三方库来实现对本地组件的使用。app
生态目前比较完善,使用的公司也比较多,特别是对JS比较熟悉的同窗容易上手。框架
支持热部署,开发过程当中能够节约不少时间。性能
可是它也并非完美的:学习
它的渲染方式仍是调用各个平台的原生控件,有时须要针对不一样的平台作不一样的优化。优化
其性能相对于H5有很大的提升,可是并无完美解决,白屏,丢帧问题依然存在。网站
传统的原生APP开发模式,有IOS和AOS两大系统,须要各自语言开发各自APP。
目前也有不少跨平台应用使用React Native。它也是跟Flutter对比的主要对象。
优势:其优势是目前的生态相对比较成熟
缺点:开发和发布成本高
常被人提起的H5技术,其实就是网页+JavaScript。好比目前的一些流行的JS框架Vue,React,AngularJS等都是为了构建网页。针对移动端构建出来的网页能够实如今跨平台的功能,可是其缺点也很明显:
渲染效率低下,用户体验差。不少H5在iOS平台表现尚可,可是在Android上特别是一些低端机上的表现确实让人不敢恭维。
网页调用设备硬件相关API比较困难,并且支持的功能较少,实现此类需求是H5的短板。
移动端的网站,常被称为H5应用,说白了就是特定运行在移动端浏览器上的网站应用。通常泛指 SPA(Single Page
Application)模式开发出的网站,与MPA(Multi-page Application,再后面作介绍)对应。
优势 :开发和发布成本最低
缺点 :性能和体验不能讲是最差的,但也受到浏览器处理能力的限制,屡次下载一样会占用用户必定的流量
** 面在webview中显示,这种模式下,Android、iOS的API通常有一致性,Hybrid App全部有跨平台效果。**
优势: 开发和发布都比较方便,效率介于Native App、Web App之间
缺点: 学习范围较广,须要原生配合
** 应用技术:** PhoneGap,AppCan,Wex5
Facebook发现Hybrid App存在不少缺陷和不足,因而发起开源的一套新的APP开发方案RN App。。使用JSX语言写原生界面,
js经过JSBridge调用原生API渲染UI交互通讯。
优势: 效率体验接近Native App,发布和开发成本低于Native App
缺点: 学习有必定成本,且文档较少,免不了踩坑
举个栗子:Facebook、youtube、discord、QQ、百度等等
2016年4月正式开源,并在v2.0版本官方支持Vue.js,与RN平起平坐。
优势: 开发效率和体验上跟RN不相上下,而且跨平台性更强
缺点: 刚刚起步,社区没有RN活跃
举个栗子:淘宝、天猫、饿了么等
Flutter 咸鱼正在使用 , 并且他们也推荐你们尝试新技术 来自谷歌,不过貌似国内岗位少,有人说写这个35岁后能够出国。(我等将信将疑)
Flutter是Google推出的开源移动应用开发框架。开发者能够经过开发一套代码同时运行在iOS和Android平台。
它使用Dart语言进行开发,而且最终编译成各个平台的Native代码,这样既保证了开发效率,也保证了各个平台的运行效率。其至关于从头至尾重写了一套UI框架,不依赖具体平台的组件。其全部的组件都是"Widget"。渲染引擎则依靠高效渲染库Skia实现。
Flutter也看到了目前的跨平台解决方案并不完美,因此它借鉴了React Native的一些思想,作出了很大的优化。它将代码编译成原生代码,而且直接在各个平台中使用其高效渲染引擎Skia进行渲染,没有桥接,不调用平台相关控件。
这种设计思想完美解决了不一样平台的性能问题。
归功于其设计思想,咱们能够真正实现一套代码,运行不一样的平台。在其推出以后,关注的开发者数量和相关的教程的增加速度远超当时的React Native。
其特色包括:
目前它存在的一些问题是:
运用于跨平台开发的语言还有不少,如PWA,Uni App等。我的看来,Flutter最具备发展潜力的其中一个,虽然Flutter目前并非很是流行,可是笔者相信它是跨平台解决方案的将来。若是谷歌的新系统Fuchsia OS能像当今的Android这样如日中天,甚至替代掉Android的话,Flutter的发展也会迎来它的顶峰。
若是你想作一个企业名片之类的东西,让更多人知道自家产品,那也许一个网站就够了;但若是产品核心功能只有native app才能提供,或者你想要确保用户有更好的体验、更强的黏性,那可能就须要作native app。
最后若是对技术比较感兴趣,欢迎关注个人微信公众号:终端研发部,id:codeGooger,一块儿进阶技术