优点:react
主要缺点:程序员
原理:将App中动态变更的内容经过h5来实现,经过原生网页加载控件webView。h5代码只需一次开发就能同时在Android和iOS两个平台上运行,减小开发成本,这种h5+原生开发模式成为混合开发,采用此方式开发的APP成为混合应用或Hybrid APP,若是一个应用大多功能是h5实现的,咱们称之为 web App. web
混合开发中,h5代码运行在webView中,而webview实质就是一个浏览器内核,其JavaScript依然运行在权限受限的沙箱中,因此大多数系统能力没有访问权限,如没法访问文件系统,不能使用蓝牙等。因此h5不能实现的功能都须要原生去作。混合框架通常会在原生代码中预先实现一些访问系统能力的API ,暴露给webview以供JavaScript使用,这样一来webview就成了JavaScript与原生api通讯桥梁,主要负责JavaScript与原生传递消息。(咱们把依赖于WebView的用于在JavaScript与原生之间通讯并实现了某种消息传输协议的工具称之为WebView JavaScript Bridge, 简称 JsBridge,它也是混合开发框架的核心。)编程
React Native 是React 在原生移动应用平台的衍生产物,那二者主要的区别在于虚拟DOM映射的对象是什么?React中虚拟DOM最终会映射为浏览器DOM树,而RN中虚拟DOM会经过 JavaScriptCore 映射为原生控件树。api
JavaScriptCore 是一个JavaScript解释器,它在React Native中主要有两个做用:浏览器
Weex是阿里巴巴于2016年发布的跨平台移动端开发框架,思想原理和react native相似,最大不一样在语法层面,weex支持Vue和rax语法,Rax 的 DSL(Domain Specific Language) 语法是基于 React JSX 语法而创造。与 React 不一样,在 Rax 中 JSX 是必选的,它不支持经过其它方式建立组件,因此学习 JSX 是使用 Rax 的必要基础。而React Native只支持JSX语法。weex
flutter是Google发布的一个用于建立跨平台、高性能移动应用框架,实现自绘引擎。主打跨平台、高保真、高性能。开发者经过dart语言开发APP。框架
高性能:Dart在 JIT(即时编译)模式下,速度与 JavaScript基本持平。可是 Dart支持 AOT,当以 AOT模式运行时,JavaScript便远远追不上了。编程语言
目前程序主要两种运行方式:静态编译与动态理解。静态编译的程序在执行前所有被翻译为机器码,一般将这种类型称之为AOT即“提早编译” ;而结实执行的则是一句一句边翻译边运行,一般讲这种类型称为JIT。 AOT程序的典型表明是用C/C++开发的应用,JIT的表明JavaScript、Python等,全部脚本语言都支持JIT模式,注意点是AOT和JIT 指的是程序运行方式,和编程语言并不是关联。工具
1. 开发效率高
Dart运行时和编译器支持Flutter的两个关键特性的组合:
基于JIT的快速开发周期:Flutter在开发阶段采用,采用JIT模式,这样就避免了每次改动都要进行编译,极大的节省了开发时间;
基于AOT的发布包: Flutter在发布时能够经过AOT生成高效的ARM代码以保证应用性能。而JavaScript则不具备这个能力。
2. 高性能
Flutter旨在提供流畅、高保真的的UI体验。为了实现这一点,Flutter中须要可以在每一个动画帧中运行大量的代码。这意味着须要一种既能提供高性能的语言,而不会出现会丢帧的周期性暂停,而Dart支持AOT,在这一点上能够作的比JavaScript更好。
3. 快速内存分配....
如何学习:StackOverflow全球最大程序员问答社区,flutter中文网社区,掘金