SuperAPI AI 工具集

fix-js-globals

通用与其它

查看项目

更新于 10-15 23:57

技能介绍

用途:修复 UI5 linter 能检测但无法自动修复的 JavaScript no-globals 错误,将全局访问改造为 sap.ui.define 依赖引入。先运行 npx @ui5/linter --details 获取替换建议与文档链接。

主要能力(按情形):全局命名空间赋值转为 AMD 模块;sap.ui.getCore() 调用改为 Core.ready()、Element.getElementById、EventBus.getInstance、Lib.getResourceBundleFor 等对应模块;sap.ui.core.Core 直接访问改为依赖引入;jQuery/$ 全局访问仅添加 sap/ui/thirdparty/jquery 依赖并把 $ 改为 jQuery,保留 jQuery.each、jQuery.extend、jQuery.proxy、jQuery.isEmptyObject 等标准 API,但 jQuery.sap.* 属于已弃用需替换;控制器内 jQuery("#prefix--id").control(0) 或 Element.closestTo 等改为 this.byId("id");条件探测式全局访问改为同步或异步 sap.ui.require;自定义命名空间转为模块;绑定类型字符串改为引入类型模块并用类引用;delete 表达式移除;sap.ui.controller() 改为 Controller.extend();jQuery.sap.declare/require 转为 sap.ui.define;sap.ushell.Container 等运行时全局改为模块依赖,测试中直接 stub 模块。

用法要点:新增依赖一律插入依赖数组开头,参数同步前置,以避免旧文件依赖/参数数量不匹配导致错位;参数名与模块默认导出名一致;死代码赋值直接删除而非加 import;jQuery.sap.extend(true,...) 用 sap/base/util/merge 的 merge,不存在 sap/base/util/deepExtend;替换后移除未使用 import;Case 9/10 转换必须在同一次处理中修复文件体内全部全局访问,无第二遍。

适用场景:UI5 应用旧代码现代化、linter no-globals 告警清理。限制:单参数 sap.ui.controller("name") 实例查找仅记录到 MODERNIZATION-ISSUES.md;多处 declare 或导出不明确需人工复核;QUnit、sinon、sap.ui.define、sap.ui.require、sap.ui.loader.config 为允许的全局。更多示例与 API 替换表见其 references 文件,此处暂未提供完整细节。