认识flutter

原生开发  

  优点:react

    • 可访问平台所有功能(GPS、摄像头);
    • 速度快、性能高、能够实现复杂动画及绘制,总体用户体验好;

  主要缺点:程序员

    • 平台特定,开发成本高;不一样平台必须维护不一样代码,人力成本随之变大;
    • 内容固定,动态化弱,大多数状况下,有新功能更新时只能发版;

hybrid技术(h5+原生混合开发)

  原理:将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 Native 是React 在原生移动应用平台的衍生产物,那二者主要的区别在于虚拟DOM映射的对象是什么?React中虚拟DOM最终会映射为浏览器DOM树,而RN中虚拟DOM会经过 JavaScriptCore 映射为原生控件树。api

  JavaScriptCore 是一个JavaScript解释器,它在React Native中主要有两个做用:浏览器

  1. 为JavaScript提供运行环境。
  2. 是JavaScript与原生应用之间通讯的桥梁,做用和JsBridge同样,事实上,在iOS中,不少JsBridge的实现都是基于 JavaScriptCore 。

weex

  Weex是阿里巴巴于2016年发布的跨平台移动端开发框架,思想原理和react native相似,最大不一样在语法层面,weex支持Vue和rax语法,Rax 的 DSL(Domain Specific Language) 语法是基于 React JSX 语法而创造。与 React 不一样,在 Rax 中 JSX 是必选的,它不支持经过其它方式建立组件,因此学习 JSX 是使用 Rax 的必要基础。而React Native只支持JSX语法。weex

fultter

  flutter是Google发布的一个用于建立跨平台、高性能移动应用框架,实现自绘引擎。主打跨平台、高保真、高性能。开发者经过dart语言开发APP。框架

   高性能:Dart在 JIT(即时编译)模式下,速度与 JavaScript基本持平。可是 Dart支持 AOT,当以 AOT模式运行时,JavaScript便远远追不上了。编程语言

Dart语言(flutter之因此选择Dart理由以下)

  JIT和AOT

    目前程序主要两种运行方式:静态编译与动态理解。静态编译的程序在执行前所有被翻译为机器码,一般将这种类型称之为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中文网社区,掘金

 

 

 

 

相关文章
相关标签/搜索