跨平台技术分类
hybrid混合开发(H5+原生)这类框架原理是将APP一部分需要动态改变的内容通过H5来实现,通过原生的网页加载控件WebView(Android)或WKWebView(IOS)来家在。这样H5的部分就可以随时修改不用发班,满足东台话改动的需求。同时,H5代码只需开发一次,就可在Android和iOS两个平台运行,减少开发成本。这类h5+原生的开发模式成为混合开发模式,开发的应用称为Hybrid APP。 混合开发技术点如之前所述,原生开发可以访问平台所有功能,而混合开发中,H5代码是运行在WebView中,而WebView实质上就是一个浏览器内核,其JavaScript依然运行在一个权限受限的沙箱中,所以对于大多数系统能力都没有访问权限,如无法访问文件系统、不能使用蓝牙等。所以,对于H5不能实现的功能,都需要原生去做。而混合框架一般都会在原生代码中预先实现一些访问系统能力的API, 然后暴露给WebView以供JavaScript调用,这样一来,WebView就成为了JavaScript与原生API之间通信的桥梁,主要负责JavaScript与原生之间传递调用消息,而消息的传递必须遵守一个标准的协议,它规定了消息的格式与含义,我们把依赖于WebView的用于在JavaScript与原生之间通信并实现了某种消息传输协议的工具称之为WebView JavaScript Bridge, 简称 JsBridge,它也是混合开发框架的核心。 React NativeReact Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和Android两个平台。 DOM树与控件树文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口,一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的标准接口。简单来说,DOM就是文档树,与用户界面控件树对应,在前端开发中通常指HTML对应的渲染树,但广义的DOM也可以指Android中的XML布局文件对应的控件树,而术语DOM操作就是指直接来操作渲染树(或控件树), 因此,可以看到其实DOM树和控件树是等价的概念,只不过前者常用于Web开发中,而后者常用于原生开发中。
至此,React Native 便实现了跨平台。 相对于混合应用,由于React Native是原生控件渲染,所以性能会比混合应用中H5好很多,同时React Native使用了Web开发技术栈,也只需维护一份代码,同样是跨平台框架。 FLutterFlutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。 总体来说,相比于React Native框架,Flutter的优势最主要体验在性能、开发效率和体验两大方面。 React Native所使用的JavaScriptCore,原本用在浏览器中,用于解释执行网页中的JavaScript代码。为了兼容Web标准留下来的历史包袱,无法专门针对移动端进行性能优化。Flutter却不一样,它一开始就抛弃了历史包袱,使用全新的Dart语言编写,同时支持AOT和JIT两种编译方式,而没有采用HTML/CSS/JavaScript组合方式开发,在执行效率上明显高于JavaScriptCore。 除了编程语言的虚拟机,Flutter的优势还体现于UI框架的实现上。它重写了UI框架,从UI控件到渲染,全部重写实现了,依赖Skia图形库和系统图形绘制相关的接口,保证了不同平台上能有相同的体验。 Flutter 在业务层面的发展阻力Flutter 多端一致性上表现良好,能做到所见即所得,无需针对某一平台做额外适配工作;性能流畅度提升,相较于 H5 版本首屏时间有较大提升。
三种技术的对比![]() 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |