GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个

这篇具有很好参考价值的文章主要介绍了GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GaiaX跨端模板引擎,是在阿里优酷、淘票票、大麦内广泛使用的Native动态化方案,其核心优势是性能、稳定和易用。本系列文章《GaiaX开源解读》,带大家看看过去三年GaiaX的发展过程。

引言

在“GaiaX开源解读系列之第一篇:《GaiaX开源解读 | 基于优酷业务特色的跨平台技术》”中,为各位读者详细介绍了GaiaX起源背景、业务中碰到的瓶颈问题、解决问题的思路以及GaiaX技术形态的发展过程,在本篇中将进一步深入GaiaX的各个细节,深度解读GaiaX团队同学是如何进行方案落地的,看完本篇内容相信你一定会有所收获。

核心概念

GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个

GaiaX是由优酷应用技术中心团队研发的一款跨端高性能渲染引擎,其本质是个视图还原框架,其核心理念是将模板还原成双端的视图组件,我们先通过一个视图还原渲染的流程图,看看GaiaX的上下游是如何工作的:
组件设计稿:组件设计稿是由设计同学给出,用于展示视图组件的效果图,开发同学需要用这个文件进行视图组件的开发。

GaiaStudio:
开发同学通过使用GaiaStudio,以拖拽、编写的方式来创建节点的层级、设置节点的样式、为节点绑定数据,最终得到模板文件。
模板文件:
模板文件也被称作GaiaX的DSL,其中包含三个子DSL,分别是index.json、index.css、index.databinding,用来描述节点的层级关系、节点样式、节点数据绑定逻辑。
GaiaX:
在双端上通过使用SDK来解析模板的内容,经过节点树的构建和视图树的构建、视图树的数据绑定等步骤后,得到Native视图,最终交给双端渲染。
端渲染:
经过双端SDK对模板的加工和处理后,在Android和iOS上可以分别得到一个View和一个UIVIew,这两个NativeView便是最终用于渲染的视图,只需要将其插入的原生视图中即可展示出渲染效果。

在了解了GaiaX的上下游与涉及到的环节后,下面就介绍一下GaiaX中的两个核心概念 - 模板、节点树与视图树:
GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个

模板:
其描述了用于视图还原的各种信息,模板作为自定义的DSL,其由三个子DSL构成,分别是FlexBox、Css、Databinding,它们会被存储在index.json文件、index.css文件、index.databinding文件中:

index.json文件用于存储视图的关联关系。在该文件中,以json的格式,描述了每个视图的层级关系、并列关系、嵌套关系等。

index.css文件用于存储视图的样式。在该文件中,以通用的Css规范格式,描述了每个视图节点的布局信息和样式信息。

index.databinding文件用于存储视图的数据绑定逻辑。在该文件中,以json的格式,描述了每个视图的数据绑定关系和动态更新逻辑。这其中用到了自定义的表达式 ,它支持常规的取值、对比、条件等计算。
GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个

节点树与视图树:
如果用比喻的手法来描述节点树与视图树,那么可以将其比作人体的骨架与血肉。节点树的主体结构由模板的index.json文件解析构建而来&#文章来源地址https://www.toymoban.com/news/detail-403867.html

到了这里,关于GaiaX开源解读 | 跨端动态化模板引擎详解,看完你也能写一个的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】动态内存管理基础知识——动态通讯录,如何实现通讯录容量的动态化

    动态内存管理的函数有:malloc,calloc,ralloc,free,本文讲解动态内存函数和使用,如何进行动态内存管理,实现通讯录联系人容量的动态化,对常见动态内存错误进行总结。                           ✨  猪巴戒 :个人主页✨                 所属专栏 :《C语言进阶》

    2024年02月04日
    浏览(68)
  • iServer通过服务实例动态化管理MongoDB万级瓦片集应用实践

    作者:Carlo 数据特点 栅格数据:数据量大、增长快、接收来源广、类型多、时间跨度大 矢量数据:随着栅格数据增长而增长的,包含点线面类型 项目难点 有 万级 数据(MongoDB瓦片)需要发布成GIS服务(wms、wmts) 单个iServer承载的GIS服务较多时, 出现 启动过慢 等问题,原因

    2024年02月12日
    浏览(31)
  • 从静态到动态化,Python数据可视化中的Matplotlib和Seaborn

    本文分享自华为云社区《Python数据可视化大揭秘:Matplotlib和Seaborn高效应用指南》,作者: 柠檬味拥抱。 首先,确保你已经安装了Matplotlib和Seaborn库。如果没有安装,可以使用以下命令进行安装: Matplotlib是一个灵活的绘图库,支持多种图表类型。以下是一个简单的折线图的

    2024年03月25日
    浏览(88)
  • 基于uni-app+vue3跨端「h5+小程序+App」仿制chatGPT模板实例

    uni-chatgpt 一款uniapp+vite4+uview-plus多端ChatGPT模板实例。 全新首发的一款多端仿制chatgpt智能对话实战项目,基于 uniApp+Vue3+Pinia+uViewUI+MarkdownIt 等技术开发搭建项目。支持编译到 h5+小程序+APP端 ,支持markdown语法解析及代码高亮。 全屏沉浸式顶部导航条+底部tabbar 支持解析h5+小程序

    2024年02月12日
    浏览(74)
  • uniapp-chatgpt跨端仿ChatGPT实例|uniapp+vue3+pinia多端聊天模板

    基于 uniapp+vite4+pinia 跨多端实现chatgpt会话模板 Uniapp-ChatGPT 。 uni-chatgpt 使用 uni-app+vite4+vue3+pinia+uview-plus 等技术构建多端仿制ChatGPT手机端APP会话应用模板。支持 编译到h5+小程序+APP端 ,支持 渲染markdown语法及代码高亮 、解决 软键盘撑起布局 问题。 编译 [ H5+小程序+App端 ] 效果

    2024年02月11日
    浏览(59)
  • 腾讯开源跨端框架Hippy 3.0在腾讯视频的升级实践

    👉导读 Hippy 是腾讯开源的跨端框架,在腾讯内部业务场景中有广泛应用。腾讯视频搜索业务基于 Hippy 2.0 框架开发,在使用过程中发现了一些不便利的地方:动画渲染双端不一致问题;对图片和样式的处理双端不一致现象;没有可用的横滑组件/双列流组件等等。Hippy 3.0 框架

    2024年01月21日
    浏览(37)
  • 华为云 OpenTiny 跨端、跨框架企业级开源组件库项目落地实践直播即将开启!

    大家好,我是 Kagol,公众号:前端开源星球。 “你们这个产品怎么只能在电脑上适配呀?我想在手机上看都不行,太麻烦了!!” “你们这个产品看起来太简单了,我想要@@功能,你们这都不能实现吗?” “你们这个产品到底安全不安全呀,不会填一点信息然后全给我泄露

    2023年04月21日
    浏览(61)
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~ uniapp官网提供了  HBuild

    2024年02月09日
    浏览(87)
  • 参与开源之夏 x OpenTiny 跨端跨框架 UI 组件库贡献,可以赢取奖金?!这份《OpenTiny 开源贡献指南》请收好?!

    大家好,我是 Kagol。 近期有几位朋友在 OpenTiny 技术交流群里询问我们在开源之夏(OSPP)的项目,希望能提前做一些准备工作。 这里给大家简单介绍下开源之夏。 开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积

    2023年04月16日
    浏览(45)
  • (小程序)基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    版本信息: 点击编辑器的文件 新建 项目(快捷键Ctrl+N) 2.选择uni-app项目,输入项目名/路径,选择项目模板,勾选vue3版本,点击创建,即可成功创建。 3.点击编辑器的运行 运行到浏览器 选择浏览器 当然也可以运行到手机或模拟器、运行到小程序工具。 到这里一个简单的

    2024年02月16日
    浏览(102)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包