zoukankan      html  css  js  c++  java
  • 认识flutter

    原生开发  

      优势:

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

      主要缺点:

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

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

      原理:将App中动态变动的内容通过h5来实现,通过原生网页加载控件webView。h5代码只需一次开发就能同时在Android和iOS两个平台上运行,减少开发成本,这种h5+原生开发模式成为混合开发,采用此方式开发的APP成为混合应用或Hybrid APP,如果一个应用大多功能是h5实现的,我们称之为 web App.  

      混合开发技术点

          混合开发中,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 映射为原生控件树。

      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语法。

    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中文网社区,掘金

  • 相关阅读:
    【JavaP6大纲】MySQL篇:如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?
    【JavaP6大纲】MySQL篇:现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
    快速搭建PHP开发环境(PhpStorm+EasyPHP)
    iBatis开发者手册翻译(目录)
    iBatis开发者手册翻译(章节一、引言)
    asp.net 数据操作三步曲(一) :)
    一事归一事
    闲言碎语话心得你给我多少钱
    研发过程之代码评审
    让她自己来
  • 原文地址:https://www.cnblogs.com/xhrr/p/11309743.html
Copyright © 2011-2022 走看看