SmartFeed 多端模板渲染架构体系

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. SmartFeed多端模板渲染架构体系 王永⻘ 百度资深研发工程师
2.
3. 自我介绍 • 网名三水清 • 2013年加入百度APP团队 • 前端架构优化、工程化、Nodejs • github.com/ksky521 • js8.in
4. • 需求背景 • 架构设计与实现 • 落地和展望
5. 需求和背景
6. 背景:从PM需求说起 NA H5
7. 现在的研发流程 需求 设计 PM UE 模板 + 数据 RD + 交互 上线 评估 PM
8. 理想的流程 需求 搭建 PM 审核 UE 上线 RD 评估 PM 不需要研发介入可快速上线的跨端动态组件化解决方案
9. 架构设计和实现
10. 四个问题 • 如何设计一套自由搭建的组件系统? • 拿组件拼好的模板,怎么描述?怎么跨端? • 数据如何跟模板映射? • 交互怎么实现?
11. 四个问题 • 如何设计一套自由搭建的组件系统? • 拿组件拼好的模板,怎么描述?怎么跨端? • 数据如何跟模板映射? • 交互怎么实现?
12. 四个问题 • 如何设计一套自由搭建的组件系统? • 拿组件拼好的模板,怎么描述?怎么跨端? • 数据如何跟模板映射? • 交互怎么实现?
13. 原子设计 ATOMS MOLECULES ORGANISMS TEMPLATE PAGES
14. 原子设计 ATOMS 圆⻆ MOLECULES ORGANISMS TEMPLATE 文本 间距 文本 wuji-uikit wuji-san 区块 卡片 PAGES
15. 原子库:@baidu/wuji-uikit,提供 9 大类,36个mixins 统一编码 颜色 字体 文本 间距 线条 边⻆ 投影 蒙层 图标 JSON
16. 原子库:@baidu/wuji-uikit 颜色:日间、夜间、暗黑支持 图标
17. 从组件到区块/卡片 头部区 必选内容 正文区 辅助信息区 可选内容 拓展挂件区
18. 四个问题 • 如何设计一套自由搭建的组件系统? • 拿组件拼好的模板,怎么描述?怎么跨端? • 数据如何跟模板映射? • 交互怎么实现?
19. DSL 标准化的界面描述语言,结构化的数据描述 children:结构关系 Props:属性配置 div Title icon text ThreeImages image image image Source text text
20. DSL的生成 模板配置平台、Sketch 设计稿 DSL div Title icon text ThreeImages image image image Source text text
21. DSL的应用 生成 H5 模板
22. DSL的应用:DSL生成H5组件 DSL dsl2san Template
23. DSL的应用:DSL生成H5组件 ① 引入组件 dsl2san ② 生成模板 ③ 配置绑定
24. DSL的应用 生成 NA 模板
25. Crius:NA 动态化布局引擎 CSS Box model 95% Flexbox model • 控件只有基础类型: • View:<div> • Text:<p> <span> • Image:<img/> • 样式为CSS子集,需要提前计算好 • 数据结构(模板)为 JSON
26. DSL2Crius dsl2san san-crius DOM trans Crius DSL San San 百度开源高性能组件框架 Puppeteer HTML+CSS adapter Crius Template
27. Adapter:解决双端和机型差异,提升视觉还原度,节省 UE 走查流程 Text 扩展阅读《一种简单优雅的TextView行间距适配方案》 padding-top padding-bottom
28. UI = F(DSL) H5 卡片 平台可视化编辑 NA 卡片 Sketch 插件 DSL Talos 卡片 将模板抽象为结构化数据DSL,由DSL驱动不同实现的组件进行拼装,最终通过解析结构化数据将⻚面渲染出来
29. 四个问题 • 如何设计一套自由搭建的组件系统? • 拿组件拼好的模板,怎么描述?怎么跨端? • 数据如何跟模板映射? • 交互怎么实现?
30. 模板数据映射 JSON Schema 做描述,JSON Pointer 做映射 组件 Props JSON Mirror 组件 Schema + DSL 数据库 UI Schema Data Schema 推送更新 实时调取 Preprocessor UI Props 扩展阅读:JSON Schema / JSON Pointer
31. 模板数据映射流程 线下配置 Server Runtime 组件 原子库 组件库 Schema.json 视图配置平台 配置 DSL UI Schema 数据 + mirror Preprocessor 数据配置平台 数据接入 Data Schema API Data 模板
32. 四个问题 • 如何设计一套自由搭建的组件系统? • 拿组件拼好的模板,怎么描述?怎么跨端? • 数据如何跟模板映射? • 交互怎么实现?
33. 交互 收敛可交互行为 组件内置 事件代理 + xpath 事件列表 平台配置 Runtime 事件代理 卡片事件表 生成xpath 事件执行
34. 全景图 视图配置 平台 组件管理 区块管理 卡片编辑 用户请求 数据管理和上线平台 Adapter server 卡片管理 dsl2san 数据请求 数据源接入 html 无 敌 弹 簧 转 换 器 Template 卡片历史管理 卡片版本管理 编辑上线 数据映射 + 权限管理 模板 事件绑定 类型管理 真机预览 效果评估 数据配送 Data描述 Crius Template 平台支撑 数据库 操作记录 模板数据接口 trans-server Runtime 组件模板 渲 染 UI 界面
35. 落地产出和未来展望
36. 落地与产出 疫情卡 NA 图文落地⻚小程序卡片 H5 NA卡有驾挂件 NA卡爱奇艺挂件 互动视频 NA 高考卡 NA 专题H5⻚面
37. 未来方向 实现大前端的「大一统」 San-native 小程序 H5 业务形态和多端方案 Node SSR 构建工具 DSL → 通用组件库 生命周期对⻬ 一套DSL:组件模板语言统一 San.js 一套底层框架 无极 一套设计规范
38.
39.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 23:53
浙ICP备14020137号-1 $Map of visitor$