SAP UI5 应用的 Component.js 文件是如何在运行时被加载的?

简介: SAP UI5 应用的 Component.js 文件是如何在运行时被加载的?

提问

请问一下,Component.js这个文件,程式是如何调用的?我看在index.js中,只是指定了路径,并没有指定文件名称。

然后我试着更改了一下文件名称为component.js(首字母小写),然后通过调试发现无法加载这个文件。

难道这个文件名称是SAP UI5中hardcode的吗?

回答:本地访问 url,打开 Chrome 开发者工具,切换到 Network 标签页,在输入框里输入 component.js 后,发现了我们自己编写的 Component.js 文件被加载:

把鼠标放到 initiator 这一列上,就能看到发起这个文件请求的调用栈:

单击下图高亮区域,即 Component-dbg.js 文件的第 3361 行:

在这一行设置断点,然后刷新浏览器,断点触发:

按 F11 单步调试进去:

这里发现确实是像提问的朋友那样说的,Component 这个文件名是 SAP UI5 硬编码的,首字母改成小写 c 都不行。下面的代码,首先把应用程序里我们自定义的命名空间 sap.ui5.walkthrough.Component 做字符串连接,然后把连接后的字符串里所有的 . 替换成 /

最后使用 SAP UI5 标准的工具库去加载这个 Component.js 文件:

SAP UI5 模块是可以在浏览器中加载和执行的  JavaScript 文件。 没有确定的规则去定义什么代码应该属于一个模块——捆绑在模块中的内容取决于开发人员,但通常一个模块内的内容应当具有共同的主题。下面是一个模块的例子:

sap.ui.define("SomeClass", ['sap/mylib/Helper', 'sap/m/Bar'], function(Helper, Bar) {
    // create a new class
    var SomeClass = function () {};
    // add methods to its prototype
    SomeClass.prototype.foo = function () {
        // use a function from the dependency 'Helper' in the same package (e.g. 'sap/mylib/Helper' )
        var mSettings = Helper.foo();
        // create and return an sap.m.Bar (using its local name 'Bar')
        return new Bar(mSettings);
    };
    // return the class as module value
    return SomeClass;
  });
// later requiring the previously defined module
sap.ui.require(['SomeClass'], function(SomeClass) {
    var oInstance = new SomeClass();
});

上图 sap.ui.define 函数的第二个输入参数是模块的依赖。将每个依赖项添加到 sap.ui.define 调用可能会导致在执行模块之前必须加载许多模块。

相关文章
|
4天前
|
JavaScript 前端开发
js变量的作用域、作用域链、数据类型和转换应用案例
【4月更文挑战第27天】JavaScript 中变量有全局和局部作用域,全局变量在所有地方可访问,局部变量只限其定义的代码块。作用域链允许变量在当前块未定义时向上搜索父级作用域。语言支持多种数据类型,如字符串、数字、布尔值,可通过 `typeof` 检查类型。转换数据类型用 `parseInt` 或 `parseFloat`,将字符串转为数值。
11 1
|
21天前
|
JavaScript 前端开发 算法
JavaScript 中的 if 判断:深入理解、实战应用与进阶技巧
【4月更文挑战第7天】探索 JavaScript 中的 if 判断语句,它是构建逻辑清晰程序的基础。了解其概念、语法、应用示例及编程技巧,包括条件控制、else if 结构、三目运算符。注意条件表达式简洁性,避免 falsy 值陷阱,利用逻辑运算符优化,并减少 if 嵌套。实践这些技巧将提升编程能力和代码质量。
22 0
|
23天前
|
JavaScript 前端开发 算法
JavaScript 中算术操作符:全面解读、实战应用与最佳实践
【4月更文挑战第5天】本文探讨JavaScript中的算术操作符,包括加、减、乘、除、求余、自增、自减及复合赋值等,强调理解与熟练运用它们对提升编程效率和代码准确性的重要性。文中通过示例介绍了各种操作符的用法,同时提醒注意数据类型转换、浮点数精度、除以零错误以及利用短路求值优化逻辑等问题。通过学习,读者能更好地掌握算术操作符在不同场景的应用,提升编程技能。
22 1
|
1天前
|
前端开发 JavaScript 网络协议
【JavaScript技术专栏】WebSockets在JavaScript中的应用
【4月更文挑战第30天】WebSocket是为解决HTTP协议在实时通信上的局限而诞生的技术,提供全双工、持久连接的通信方式,适合在线聊天、实时游戏等场景。JavaScript中的WebSocket API使浏览器与服务器能建立持久连接,通过事件处理连接、发送/接收数据及错误。相较于AJAX轮询和长轮询,WebSockets更高效、实时,是现代Web实时通信的优选。
|
2天前
|
JSON 前端开发 JavaScript
使用JavaScript制作一个简单的天气应用
使用JavaScript制作一个简单的天气应用
|
4天前
|
JavaScript 前端开发
js的let、const、var的区别以及应用案例
【4月更文挑战第27天】ES6 中,`let` 和 `const` 是新增的变量声明关键字,与 `var` 存在显著差异。`let` 允许重新赋值,而 `const` 不可,且两者都具有块级作用域。`var` 拥有函数级作用域,并可在函数内任意位置访问。`let` 和 `const` 声明时必须初始化,而 `var` 不需。根据需求选择使用:局部作用域用 `let`/`const`,全局或函数范围用 `var`,不可变值用 `const`。
12 2
|
9天前
|
资源调度 JavaScript 搜索推荐
服务端渲染:使用Nuxt.js构建Vue SSR应用
【4月更文挑战第22天】本文介绍了如何使用Nuxt.js创建Vue SSR应用。首先确保安装Node.js和npm/yarn,然后全局安装Create Nuxt App,创建项目并选择配置。Nuxt.js提供清晰的项目结构,如`pages/`存放Vue页面。编写简单SSR页面后,启动开发服务器预览。完成开发,使用Nuxt.js命令部署到静态文件托管服务,实现首屏加载优化和SEO提升。Nuxt.js简化了SSR开发,助力高效构建高性能Vue应用。
|
16天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
20天前
|
存储 前端开发 JavaScript
深入浅出:使用JavaScript实现一个功能丰富的待办事项应用
深入浅出:使用JavaScript实现一个功能丰富的待办事项应用
|
22天前
|
JavaScript 前端开发
JavaScript 中运算符优先级:理解规则、实战应用与进阶技巧
【4月更文挑战第6天】了解 JavaScript 运算符优先级是编写清晰无误代码的关键。优先级规则决定了运算的顺序,从高到低包括一元、乘性、加性、关系、相等性等运算符。掌握优先级能避免逻辑错误,例如在表达式 `a * b + c` 中,乘法先于加法执行。实际应用中,使用括号可以明确运算顺序,提高代码可读性。注意避免混淆优先级,如赋值与比较操作。利用优先级简化逻辑判断,遵循编码规范,提升编程技能。通过不断学习和实践,加深对运算符优先级的理解,优化代码质量。
16 0