web浏览器_"零"学习成本:使用 Web 标准开发动态化 Flutter 应用
阿里妹导读:Kraken 是由淘系技术部前端架构团队开发的一个基于 Flutter 的动态化框架,本文将带大家了解和认识 Kraken,分享 Kraken 的一些设计思想以及 Flutter 和 Web 技术对接的实践。文末福利:免费下载《Flutter 技术解析与实战》。什么是 Kraken?Kraken 项目诞生于 2018 年底,当时团队参与"未来店"的项目,需要提供一套电子货架屏...
·

阿里妹导读:Kraken 是由淘系技术部前端架构团队开发的一个基于 Flutter 的动态化框架,本文将带大家了解和认识 Kraken,分享 Kraken 的一些设计思想以及 Flutter 和 Web 技术对接的实践。
文末福利:免费下载《Flutter 技术解析与实战》。
什么是 Kraken?Kraken 项目诞生于 2018 年底,当时团队参与"未来店"的项目,需要提供一套电子货架屏的解决方案,用于展示商品信息、实时价格甚至是促销信息。Kraken 的目标是建立一套面向 IoT 的动态渲染解决方案,从最初的 GCanvas API 到使用 TS 实现完整的 Flutter Framework 再到目前的方案,技术方案上我们经历了多次的的彻底重构,才实现了目前这一套相对满意的方案——基于 Rax 和 Flutter 的动态化框架。在今年的前端社区 Flutter 一直是个非常热门的话题,在集团内部也已经有好几个团队吃上了螃蟹。作为一个热门的跨端渲染框架,与现有主流方案(Weex/React Native)相比,它最大的差异是基于自绘特性很好的解决了多端一致性的问题。同时 Flutter 还具有一个精简的渲染管线,提供了高效的局部更新、布局及渲染算法,在长列表等场景下性能也丝毫不弱于 Android/iOS 原生渲染。Tips:这是一篇 Kraken 的介绍文章,帮助你了解和认识 Kraken,所以这里不会太多的讲述实现原理和方案。可使用以下命令安装 Kraken Cli:
$ npm i @kraken-project/cli -g基于 Flutter 的动态化框架阿里尤其是淘宝,作为一家以电商主导的公司,业务上对 App 内容动态化的需求由来已久。无论是业务的快速迭代,还是修复线上问题,只有两个基本思路:
-
缩短客户端发版的周期
-
通过云端下发的方式实现业务逻辑的动态更新
kraken https://g.alicdn.com/kraken/kraken-demos/todomvc/build/kraken/index.js使用浏览器打开 Web 版本:https://g.alicdn.com/kraken/kraken-demos/todomvc/build/web/index.html


kraken https://g.alicdn.com/kraken/kraken-demos/animation/build/kraken/index.js使用浏览器打开 Web 版本:https://g.alicdn.com/kraken/kraken-demos/animation/build/web/index.html


超越 Web 的体验作为一个实现了 W3C 标准的渲染引擎,被拿来与浏览器相比较是合乎常理的。不可否认的是目前主流浏览器,在渲染性能上并不差,但是由于历史包袱,它的交互体验被人所诟病。交互体验的问题主要体现在不受控交互、异步光栅化、厚重的布局逻辑等方面。1 交互受控受控的交互体验其实是体验的关键,在浏览器中有很多备受前端开发者困扰的问题,如:
-
父层元素带有的默认行为滚动引起的滚动穿透问题
-
无线 Web 页面下 click 事件默认 300ms 延迟的问题
kraken https://g.alicdn.com/kraken/kraken-demos/dragable-list/build/kraken/index.js使用浏览器打开 Web 版本(注意需要切换到手机模拟器模式以启用触摸事件):https://g.alicdn.com/kraken/kraken-demos/dragable-list/build/web/index.html


kraken https://g.alicdn.com/kraken/kraken-demos/long-list/build/kraken/index.js使用浏览器打开 Web 版本:https://g.alicdn.com/kraken/kraken-demos/long-list/build/web/index.htmlLongList@KrakenLongList@Web3 比浏览器更快的布局逻辑为了达到更快的渲染链路,我们摒弃了样式继承等一些不高效的渲染特性,使得在 Kraken 中不需要频繁的重排重绘以及层层回溯查找样式,所以理论上 Kraken 能够做到比浏览器更快的渲染速度。4 更多原生能力的支持除了标准的 Web 组件、API,Kraken 根据实际业务场景定制了一些高级能力,比如 Camera 标签、AnimationPlayer(Flare) 动画标签等等。未来我们也会持续定制和扩展这些高级能力,满足日益丰富的交互场景。Flare 动画的示例Demo:
kraken https://gw.alicdn.com/bao/uploaded/TB1ym1pzHH1gK0jSZFwXXc7aXXa.js

kraken https://g.alicdn.com/kraken/kraken-demos/granule/build/kraken/index.js使用浏览器打开 Web 版本:https://g.alicdn.com/kraken/kraken-demos/granule/build/web/index.htmlGranule@Kraken

kraken https://g.alicdn.com/kraken/kraken-demos/hello-rax/build/kraken/index.js使用浏览器打开 Web 版本:https://g.alicdn.com/kraken/kraken-demos/granule/build/web/index.html
3 富文本示例富文本示例Demo:
kraken https://g.alicdn.com/kraken/kraken-demos/richtext/build/kraken/index.js使用浏览器打开 Web 版本:https://g.alicdn.com/kraken/kraken-demos/richtext/build/web/index.html
RichText@Kraken
RichText@Web更多功能多引擎目前最新的 0.3.0 版本中,我们同时支持了 V8 + JavaScriptCore 双 JS 引擎的适配,由于 JSA 抽象层的存在,接入新的 JS 引擎也是非常容易的事情。易调试JSC 模式下,可以直接使用 macOS 自带的 safari 调试能力对运行时代码进行断点调试;V8 下,我们提供了 Chrome DevTools 调试的能力;让你的业务开发体验更上一层楼。多平台适配凭借 Flutter 自身优秀的跨平台能力,Kraken 适配了 Android、iOS、macOS、Linux... ,真正做到一次开发,多端运行。下一步稳定的渲染引擎是我们的第一步,为了将基础打扎实,我们已经提供了近千个浏览器渲染能力的测试用例,并在持续增长中。接下来,我们会在智能硬件的场景下持续投入,包括与 IoT 团队合作探索线上线下互动的大屏业务场景等等。Kraken 会提供一系列标准化的 API,满足智能硬件场景的能力需求。当然,借着 Flutter 在移动端设备上的东风,我们也在探索 Kraken C 端落地的场景。
福利来了 
电子书免费下载
《Flutter 技术解析与实战》

闲鱼是国内最早使用 Flutter 的团队,在多次研讨验证及大规模上线的过程中积累了很多技术沉淀。本书从一线问题出发,清晰地阐述了 Flutter 的重要理念,给大家提供了应对各种问题的实用方法,同时还给出了详尽的可以融会贯通、举一反三的思路,力求让读者可以获得全面系统的技术知识。
识别下方二维码

推荐阅读
打破重重阻碍,Flutter 和 Web 生态如何对接?
揭秘!如何用Flutter设计一个100%准确的埋点框架?
入职阿里5年,他如何破解“技术债”?
关注「阿里技术」把握前沿技术脉搏
戳我,下载《Flutter 技术解析与实践》
更多推荐

所有评论(0)