为何修改Controller.js后不修改Component-Preload.js就不生效?
问题解答
为什么控制器修改需要同步Component-preload.js才生效?
- SAP Fiori应用的
Component-preload.js是预加载打包文件,默认会将控制器、组件核心代码等资源合并其中,目的是减少应用启动时的HTTP请求数量,提升加载速度。 - 应用启动时,UI5框架会优先读取
Component-preload.js中的控制器代码,只有当预加载文件中找不到对应控制器时,才会去加载单独的Detail.controller.js文件。 - 视图文件默认不会被打包进预加载文件,而是通过异步方式按需加载,所以修改视图文件后,框架会直接读取最新的视图文件内容,无需同步预加载文件。
是否只需更新Component-preload.js即可?
绝对不建议手动修改Component-preload.js:
- 该文件是构建工具自动生成的(比如SAP UI5 Tooling、Grunt等构建脚本),手动修改的内容会在下次执行构建操作时被完全覆盖。
- 正确流程:修改原始的
Detail.controller.js文件,然后执行构建命令重新生成Component-preload.js;如果是开发阶段,也可以临时关闭预加载功能(在index.html中添加data-sap-ui-preload="async"参数,或者调整UI5的加载配置),这样修改控制器后无需重新构建就能直接看到效果。
内容的提问来源于stack exchange,提问作者Ruzna Rizvi
相关产品推荐
相关产品推荐

