在当下,跨端已经是前端绕不开的一个话题,随着 IoT 设备的普及越来越多的“端”涌现到我们的日常开发中。自 Hybrid 、React Native(Weex)后,Flutter 凭借其精简的渲染管线以及自绘渲染的特性,一跃成为这两年跨端的新宠。
但其用 Dart + Widget 的开发模式以及与前端割裂的生态造成了研发成本过高。基于这个背景,我们探索一种基于 W3C 标准的 Flutter 应用方案,向上对接前端生态,向下通过自绘保证多端一致性。
以上是本次VueConf2021中,由阿里巴巴淘系技术部染陌带来的分享。不过在他的分享的前半部分,几乎都在讲述跨端的历史,以及Flutter之所以出现并流行的原因。像是一个用于阿里内部的报告:p ,不过他的分享后,更有VueConf2021
全场最佳绿哥
的灵魂拷问:
Weex已经黄了,你这个能坚持维护多久?
开个玩笑,有些小伙伴还不了解Flutter,我分享一下我对于Flutter的理解
Flutter究竟好在哪?
- 跨端一致性
- 跨端一致性
- 跨端一致性
这里真不是跟大家开玩笑,Flutter当然还有一些其他的优点,但在我看来,那些优点和跨端一致性相比都不足一提。或者说,跨端一致性是Flutter能在跨端框架圈能立住脚的核心原因之一,正因为这个非常sexy
的特性,开发者们愿意去适应和接受Flutter框架的“固执
”...
Flutter的固执?
我并不了解Flutter为何固执
的设计成今天这个样子,它并不难学,但是对于一个已经习惯了Web前端开发习惯和生态的开发者而言,要去适应另一套风格和习惯自然是有不小的成本。
另外,Web前端工程师
的生存环境越来越艰难!内卷成灾:p
即使掌握了Flutter
,却往往不能一直写Flutter
,要时常在Dart/JS
,
Flutter/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规范
后...
所以我可不可以理解为,Kraken把那些乱七八糟的web规范
整回来了~
也就是说,Kraken = 用Flutter实现了一个Webkit
,这个理解,我特意向Flutter中国的朋友请教了一下...
一篇观后感的水文,没什么干货...
评论区畅所欲言吧~大家怎么看?