VueConf2021话题,用Vue和JS开发Flutter应用?

10,703 阅读4分钟

VueConf2021全程官方视频


本篇主要围绕Vue构建高性能 Flutter 应用话题展开

在当下,跨端已经是前端绕不开的一个话题,随着 IoT 设备的普及越来越多的“端”涌现到我们的日常开发中。自 Hybrid 、React Native(Weex)后,Flutter 凭借其精简的渲染管线以及自绘渲染的特性,一跃成为这两年跨端的新宠。但其用 Dart + Widget 的开发模式以及与前端割裂的生态造成了研发成本过高。基于这个背景,我们探索一种基于 W3C 标准的 Flutter 应用方案,向上对接前端生态,向下通过自绘保证多端一致性。

image.png

以上是本次VueConf2021中,由阿里巴巴淘系技术部染陌带来的分享。不过在他的分享的前半部分,几乎都在讲述跨端的历史,以及Flutter之所以出现并流行的原因。像是一个用于阿里内部的报告:p ,不过他的分享后,更有VueConf2021全场最佳绿哥的灵魂拷问:

Weex已经黄了,你这个能坚持维护多久?

未标题-1222222.jpg

开个玩笑,有些小伙伴还不了解Flutter,我分享一下我对于Flutter的理解

Flutter究竟好在哪?

  1. 跨端一致性
  2. 跨端一致性
  3. 跨端一致性

这里真不是跟大家开玩笑,Flutter当然还有一些其他的优点,但在我看来,那些优点和跨端一致性相比都不足一提。或者说,跨端一致性是Flutter能在跨端框架圈能立住脚的核心原因之一,正因为这个非常sexy的特性,开发者们愿意去适应和接受Flutter框架的“固执”...

Flutter的固执?

我并不了解Flutter为何固执的设计成今天这个样子,它并不难学,但是对于一个已经习惯了Web前端开发习惯和生态的开发者而言,要去适应另一套风格和习惯自然是有不小的成本。

另外,Web前端工程师的生存环境越来越艰难!内卷成灾:p

即使掌握了Flutter,却往往不能一直写Flutter,要时常在Dart/JSFlutter/Vue之间来回横跳,这就相当难受了。

比如笔者就是如此,所以经常大脑缺氧,记忆错乱...

举几个例子大家感受下

  • 异步函数
//javascript
async function func(){
}

//dart
func() async{
}
  • 随机值
//javascript
Math.random();
Math.floor(Math.random()*5);

//dart
Random().nextDouble();
Random().nextInt(5);
  • 日志打印
//javascript
console.log();

//dart
print();
  • 数组
//javascript
var arr = [];
arr.push(1);
arr.push(1,2,3,4,5);

//dart
var arr = [];
arr.add(1);
arr.addAll([1,2,3,4,5]);

这种差异我仅列举冰山一角,你如果日常要在这两种习惯间反复横跳,会不会疯?

所以,既利用Flutter的跨端一致性,但又可以用沿用Web前端开发者们习惯来编写代码,完成开发多好呢?kraken就在这个背景下诞生

Kraken是个啥

Open Kraken(openkraken.com/)

阿里巴巴历时 3 年自研开发的 Web 渲染引擎 北海(英文名:Kraken)正式开源,致力打造易扩展,跨平台,高性能的渲染引擎,并已在优酷、大麦、天猫等业务场景中使用。

所以kraken到底能干嘛,大家可以去看官网,我的理解是

Weex = JS+Vue+原生渲染

Kraken = JS+Vue/React/Rax+Flutter自渲染

而Flutter脱胎于web标准,是chrome团队去掉一些乱七八糟的web规范后...

image.png

所以我可不可以理解为,Kraken把那些乱七八糟的web规范整回来了~

也就是说,Kraken = 用Flutter实现了一个Webkit,这个理解,我特意向Flutter中国的朋友请教了一下...

image.png


一篇观后感的水文,没什么干货...

评论区畅所欲言吧~大家怎么看?