下图是笔者在SAPUI5开发教程中使用的一段代码:toUrl方法在运行时打印的值:。这个toUrl的返回值在index中。由html中的data-sap-ui-resourceroots指定:toUrl方法的计算将考虑任何已配置的ID映射或资源路径。它还支持相对段,如./和../内部路径,但不支持通过这些路径在输入参数的最开头。如果相对导航会跨越根名称空间(例如sap.ui.require.toUrl("../"))或者当资源名称以斜杠或相关段开头时,将引发错误。注意:toUrl不解析返回的URL;是绝对URL还是相对URL取决于配置的baseUrl和路径。处理资源的旧UI5API(例如jQuery.sap.registerModulePath、jQuery.sap.require和jQuery.sap.declare)使用点分隔的命名方案(称为模块名称),由全局对象驱动Javascript中的名称空间。新的URN方案更好地匹配了服务器中存储的相应资源(文件)的名称,并且点(.)不再是资源名称中的禁用字符。这最终允许使用相同的API来处理具有不同类型(扩展名)的资源,而不仅仅是JS文件。最后一点,URN方案更符合AMD加载程序(如requireJS)使用的命名约定。sap.ui.define定义一个JavaScript模块及其ID、依赖项和模块导出值或工厂。此方法的典型且唯一推荐的用法是在JavaScript资源(文件)中对sap.ui.define进行顶级调用。当一个模块第一次被它的模块ID请求时,会根据ID和当前的配置来确定对应的资源。将加载并执行资源,然后将执行顶级sap.ui.define调用。如果此调用中省略了模块ID,它将被所请求模块的ID替换。作为准备步骤,加载依赖项及其传递依赖项。然后,模块值(其导出)将被确定:如果静态值(对象,文字)作为vFactory给出,则该值将是模块值。如果给出一个函数,该函数将被调用(提供声明的依赖项的模块导出作为函数的参数)并且它的返回值将用作模块导出值。框架在内部将结果值与模块ID相关联,并将其提供给模块的原始请求者。每当再次请求该模块时,将返回相同的导出值(该模块仅执行一次)。
