Flutter 是当下移动端领域非常热门的跨端框架,各个大厂都在积极探索这项技术,并在主营业务上实现落地。
而在 Flutter 诞生之前,业界已经有大量移动端跨端技术了。
今天就主要介绍几个业界主流的解决方案:Flutter、React Native 、Weex、Finclip
Flutter是谷歌的移动UI框架,可以快速在IOS和Android上构建高质量的原生用户界面。
Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
Flutter的优点非常明显,主要体现下:
1、优秀的动画设计;
2、可选静态的语言,语言特性优秀;
3、性能强大,流畅,性能与构建思路几乎最接近原生开发的框架;
4、极大降低开发成本。原本安卓iOS都需要人,现在只招一个flutter人员就够了。
Flutter缺点
1、假装跨平台,躲不开原生代码
2、Widget的类型难以选择,糟糕的UI控件API;
3、Dart 语言的生态小,精通成本比较高。
4、代码可读性较差(嵌套地狱),对代码质量和管理要求较高;
5、原生集成第三方SDK后,兼容性适配是个令人头痛的问题;
省流版:flutter是个性能强大的框架,但是坑也有点多就是。
React Native是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的UI框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。
RN使用JAVAscript语言,类似于html的JSX,以及css来开发移动应用,因此熟悉Web前端开发的技术人员只需很少的学习就可以进入移动应用开发领域。
React Native 将原生开发的最佳部分与 React 相结合, 致力于成为构建用户界面的顶尖 JavaScript 框架。
主要的产品特性:
酌量添加,多少随意。随时都可以把 React Native 无缝集成到你已有的 Android 或 iOS 项目,当然也可以完全从头焕然一新地重写。
流水的多平台,铁打的 React。绝大多数情况下,使用 React Native 的团队可以在多个平台间共享一份基础代码,以及通用的技术 —— React。
Weex框架能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS、安卓、YunOS及Web等多端部署。
Weex 致力于使开发者能基于当代先进的 Web 开发技术,使用同一套代码来构建 Android、iOS 和 Web 应用。具体来讲,在集成了 WeexSDK 之后,你可以使用 JavaScript 和现代流行的前端框架来开发移动应用。
特点:
1. 支持 Native 扩展
2. 页面的开发目前支持Rax和Vue
3. 一次编写,三端(Android、iOS、前端)运行
4. 可以在chrome中调试JS代码,weex支持在chrome中预览页面dom节点
5. UI 的绘制通过 native 的组件,JavaScript 逻辑在 JS 引擎里运行,两者通过 JavaScriptCore 通信。
FinClip 是凡泰极客研发的一套小程序容器技术,兼容互联网主流小程序技术,自研小程序开发工具 FIDE,任何人都可以通过 FIDE,以“极低的技术投入”将小程序转为独立的 App,并且获得一款可以“安装在手机中的 App”。
与Flutter、Reactive-Native等跨端语言不同的是,FinClip严格意义上讲是一项容器技术。
与上述的跨端技术不仅不冲突,还可以完美融合。不管是通过Flutter、Taro、 kbone等开发出来的小程序均可在FinClip当中运行。
这种小程序容器技术,也带来了许多好处:
1、 因为 JS 在 Service 层执行,所以 JS 里面操作的 DOM 将不会对 View 层产生影响,所以小程序不能操作 DOM 结构的,这也使得小程序的性能比传统的 H5 更好。
2、方便多个小程序页面之间的数据共享和交互。在小程序的生命周期中具有相同的上下文可以为具备原生应用程序开发背景的开发人员提供熟悉的编码体验;
3、Service 和 View 的分离和并行实现可以防止 JS 执行影响或减慢页面渲染,这有助于提高渲染性能;