flutter介绍

跨平台(android、ios、桌面端应用)

H5+原生(Cordova、微信小程序、apicloud、Ionic)

H5代码是运行在WebView中,而WebView实质上就是一个浏览器内核,其JavaScript依然运行在一个权限受限的沙箱中,所以对于大多数系统能力都没有访问权限,如无法访问文件系统、不能使用蓝牙等。所以,对于H5不能实现的功能,都需要原生去做。而混合框架一般都会在原生代码中预先实现一些访问系统能力的API, 然后暴露给WebView以供JavaScript调用,这样一来,WebView就成为了JavaScript与原生API之间通信的桥梁,主要负责JavaScript与原生之间传递调用消息,而消息的传递必须遵守一个标准的协议,它规定了消息的格式与含义,我们把依赖于WebView的用于在JavaScript与原生之间通信并实现了某种消息传输协议的工具称之为WebView JavaScript Bridge, 简称 JsBridge,它也是混合开发框架的核心。

JavaScript开发+原生渲染 (React Native、Weex、快应用)

本篇主要介绍一下 JavaScript开发+原生渲染的跨平台框架原理。

React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和Android两个平台。RN使用Javascript语言,类似于HTML的JSX,以及CSS来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。

由于RN和React原理相通,并且Flutter也是受React启发,很多思想也都是相通的,万丈高楼平地起,我们有必要深入了解一下React原理。React是一个响应式的Web框架,我们先了解一下两个重要的概念:DOM树与响应式编程。

自绘UI+原生(QT for mobile、Flutter)

自绘UI+原生。这种技术的思路是,通过在不同平台实现一个统一接口的渲染引擎来绘制UI,而不依赖系统原生控件,所以可以做到不同平台UI的一致性。注意,自绘引擎解决的是UI的跨平台问题,如果涉及其它系统能力调用,依然要涉及原生开发。这种平台技术的优点如下:

性能高;由于自绘引擎是直接调用系统API来绘制UI,所以性能和原生控件接近。

灵活、组件库易维护、UI外观保真度和一致性高;由于UI渲染不依赖原生控件,也就不需要根据不同平台的控件单独维护一套组件库,所以代码容易维护。由于组件库是同一套代码、同一个渲染引擎,所以在不同平台,组件显示外观可以做到高保真和高一致性;另外,由于不依赖原生控件,也就不会受原生布局系统的限制。

flutter 使用 dart作为基础语言

dart

AOT:Ahead Of Time,指在运行前编译,比如普通的静态编译 。(二进制文件,系统直接执行)。补充: release发布时使用
JIT:Just In Time,指在运行时编译,边运行边编译。补充: js,开发时使用

总结

flutter介绍_第1张图片
flutter vs apicloud

技术类型 跨平台开发 调试 性能 用户体验 兼容性 生态
apicloud 支持 原生调试慢,需要同步到apicloud调试工具 根据不同手机webkit内核版本不同,性能表现不一致 aaa bbbccccccc cccccccc
flutter 支持 毫秒级热重载,比webpack的热更新还快,webpack需要编译时间 流畅度 fps稳定在60 官方实现了一套andorid和ios ui组件库,体验和原生一致

参考: https://book.flutterchina.club/chapter1/mobile_development_intro.html

flutter技术点

  1. 动态化内容
  • 动态化主要指是否支持动态下发代码和是否支持热更新。值得注意的是Flutter的Release包默认是使用Dart AOT模式编译的,所以不支持动态化,但Dart还有JIT或snapshot运行方式,这些模式都是支持动态化的,
  • 通过webview,页面更新
  1. 国际化
  2. 主题

你可能感兴趣的:(flutter)