SAPUI5 初始化路由

有一个小伙伴在群里嚷嚷,为什么我的路由初始化没成功,this.getRouter(),initialize();显示方法不存在。这引起了我的好奇心,SAPUI5是怎么去设置获取路由的呢?官方文档的路由配置分成两个文件,一个是manifest.json ,一个component.js。OK,不多说,直接上手debug看看SAP美妙的源代码。

看到component.js文件里面初始化方法init里面有两行代码。小伙伴反馈的是第二句代码报错,错误是Cannot read property 'initialize' of undefined。这里很明显是this.getRouter()执行完之后返回的结果没有initialize导致的,进去看一下,this.getRouter()到底返回了个什么东西。一看,好家伙,返回的this._oRouter,再细看,还是已经赋值了的。

那估计只能是在componnent.js里面的第一段代码里面赋值进去的了。

回到代码一的位置,断点,F9进去看,果然。

在这个方法里看到了_getManifestEntry(),八九不离十,sap应该是在这个方法里对Manifest.json里面的值做了解析,再进去看看怎么做的解析。

再细看发现SAP已经又赋值好了,这下子好了,估计在执行onInit方法之前,实力化component的时候就已经赋值好了。同样,断点到UIComponent.extend 处F9,一行行代码看,终于找到了

发现路由配置就是直接读取的manifest文件下面的sap.ui5下一层的routing。这样子就拿到了route的class 、配置的路由、target等等信息。这下子就明白了SAPUI5 的文档上面为什么说启动路由要在manifest文件里面按固定格式加上json了。那剩下来的一句this.getRouter().initialize(),已经知道getRouter()实际上会有manifest文件里面的信息。继续往下看。看到是要去实例化一个hashchanger,看到这里,我估摸着等到在控制器里的时候,就会根据这些route里面的信息替换URL实现跳转功能,当然这只是猜想,现在去做验证。在控制器里面navTo到底怎么从hashchanger拿路由数据并实现跳转的。

 这是我的demo的写的路由跳转,断点进去看在这里已经感觉没猜错了,确实是这么玩的

再往后面看已经是ES6的代码了,我的水平还是比较垃圾,已经看不下去了,到底怎么去实现的浏览器的URL替换跳转就搞不清楚了。整体来说,看这个代码实际意义可能不大,只是为了加深对SAP Route的理解或者在某些时候排错这样子可能更有意义些。

当然啦,这是我的第一篇SAPUI5的技术博客,希望以后遇到问题也能继续分享下去。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值