赞
踩
最近前端届多端框架频出,相信很多有代码多端运行需求的开发者都会产生一些疑惑:这些框架都有什么优缺点?到底应该用哪个?
笔者想在本文尽量站在一个客观公正的角度去评价各个框架的选型和优劣。那么,当我们在讨论多端框架时,我们在谈论什么:
笔者以为,现在流行的多端框架可以大致分为三类:
这类框架最大的特点就是从底层的渲染引擎、布局引擎,到中层的 DSL,再到上层的框架全部由自己开发,代表框架是 Qt 和 Flutter。这类框架优点非常明显:性能(的上限)高;各平台渲染结果一致。缺点也非常明显:需要完全重新学习 DSL(QML/Dart),以及难以适配中国特色的端:小程序。
这类框架是最原始也是最纯正的的多端开发框架,由于底层到上层每个环节都掌握在自己手里,也能最大可能地去保证开发和跨端体验一致。但它们的框架研发成本巨大,渲染引擎、布局引擎、DSL、上层框架每个部分都需要大量人力开发维护。
这类框架把 Web 技术(JavaScript,CSS)带到移动开发中,自研布局引擎处理 CSS,使用 JavaScript 写业务逻辑,使用流行的前端框架作为 DSL,各端分别使用各自的原生组件渲染。代表框架是 React Native 和 Weex,这样做的
优点有:
开发迅速
复用前端生态
易于学习上手,不管前端后端移动端,多多少少都会一点 JS、CSS
缺点有:
交互复杂时难以写出高性能的代码,这类框架的设计就必然导致 JS
和 Native
之间需要通信,类似于手势操作这样频繁地触发通信就很可能使得 UI 无法在 16ms 内及时绘制。React Native 有一些声明式的组件可以避免这个问题,但声明式的写法很难满足复杂交互的需求。
由于没有渲染引擎,使用各端的原生组件渲染,相同代码渲染的一致性没有第一种高。
这类框架就是我们这篇文章的主角们:Taro
、WePY
、uni-app
、 mpvue
、 chameleon
,它们的原理也都大同小异:先以 JavaScript 作为基础选定一个 DSL 框架,以这个 DSL 框架为标准在各端分别编译为不同的代码,各端分别有一个运行时框架或兼容组件库保证代码正确运行。
这类框架最大优点和创造的最大原因就是小程序,因为第一第二种框架其实除了可以跨系统平台之外,也都能编译运行在浏览器中。(Qt 有 Qt for WebAssembly, Flutter 有 H
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。