SAP UI5应用入口App.controller.js是如何被UI5框架加载的?

举报
Jerry Wang 发表于 2022/01/23 16:05:17 2022/01/23
【摘要】 首先在UI5应用的manifes.json里,定义了UI5应用的入口视图为App:调试器里的pending数组的两个元素:实际上对应了我在App.controller.js里定义的两个依赖:而aModules数组里的两个对象,就是BaseController和JSONModel模块加载后的实例:有经验的开发人员从这些函数列表bindProperty, bindTree, dataLoaded...

首先在UI5应用的manifes.json里,定义了UI5应用的入口视图为App:

clipboard1,1

调试器里的pending数组的两个元素:

clipboard2,2

实际上对应了我在App.controller.js里定义的两个依赖:

clipboard3,3

而aModules数组里的两个对象,就是BaseController和JSONModel模块加载后的实例:

clipboard4,4

有经验的开发人员从这些函数列表bindProperty, bindTree, dataLoaded,getJSON等就能得知这个实例是JSONModel的实现。

clipboard5,5

这个注释写的比较清楚,如果factory函数返回不为false的值,则该值需要被赋到module的exported字段去。
from https://github.com/amdjs/amdjs-api/blob/master/AMD.md
// “If the factory function returns a value (an object, function, or any value that coerces to true),
// then that value should be assigned as the exported value for the module.”

UI5模块的加载器:ui5loader.js

clipboard6,6

那么我们应用代码的controller里到底return什么值呢?即BaseController调用extend方法后的返回值。

clipboard7,7

这个返回值在BaseController的基础上,包含了我们应用程序自定义的onInit方法。

clipboard8,8

至此,App.controller.js这个模块就加载完成了。
执行ready之前:

clipboard9,9

ready函数的职责就是把模块实例的state设置成Ready,settled设置成true:

clipboard10,10

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。