源代码仓库:
https://github.com/SAP/openui5
源代码位置:src\sap.ui.fl\src\sap\ui\fl\LayerUtils.js
LayerUtils.js详细解析
文件定位与整体判断
LayerUtils.js是sap.ui.fl中一个体量不大、却非常有架构分量的工具模块。单看源码,它只是一个导出普通对象的sap.ui.define文件,方法数量也不算多;可一旦把它放进OpenUI5当前项目的flexibility体系里观察,就能发现它承担的是一类非常核心的职责:把分层模型从抽象概念变成运行时可执行规则。
在sap.ui.fl这条产品线里,界面变化并不是单一来源的。应用供应方会做产品级变更,实施伙伴会做行业增强,客户企业会做租户级定制,普通终端用户还会保存自己的个性化偏好。所有这些改动可能同时叠加在同一个页面上。系统如果没有一套统一、稳定、可比较的层级规则,就很容易发生三类问题:
- 该读取的改动没有被读取
- 不该覆盖的改动被错误覆盖
- 不同角色保存的内容落到了错误的存储语义里
LayerUtils.js正是在处理这类问题。它不是直接负责渲染控件,也不是直接持久化变更对象,而是站在框架治理层上,回答一个非常关键的问题: