SAP Webide系列(7)- 优化FreeStyle新建项目预设模板

server/2025/2/27 14:21:33/

目录

一、背景

二、优化目标

三、定位调整点

四、调整步骤

五、效果展示

六、附言


一、背景

        在每次通过Webide进行FreeStyle方式自开发SAP UI5应用的时候,新建项目,得到的模板文件都是只有很少的内容(没有路由配置、没有设置默认全屏等等)。导致每次都需要进行这些重复的配置工作,故而想到优化创建的模板达到一劳永逸的目的。

二、优化目标

1、index.html文件新增指向服务器的核心资源库路径(注释形式增加,便于切换);设置appWidthLimited属性(使index方式访问应用时能全屏展示应用);

2、调整manifest.json文件,追加config->fullWidth属性(使Launchpad中访问应用时保持全屏展示应用);

3、增加路由配置(免除新开发应用时的路由配置操作)。

三、定位调整点

        通过此系列第2篇文章一样的方法,根据network(网络)请求的文件来判断原始模板位置。

此处就直接列出模板的对应文件位置:

1、index.htmlmanifest.json模板的路径为:WebIDE\plugins\com.sap.webide.orionplugin_1.53.9\webide\resources\sap\watt\saptoolsets\fiori\project\plugin\ui5template\basicSAPUI5ApplicationProject\BasicSAPUI5ApplicationProjectTemplateWithManifest.zip

2、剩余文件模板的路径为:

WebIDE\plugins\com.sap.webide.orionplugin_1.53.9\webide\resources\sap\watt\saptoolsets\ui5\project\plugin\ui5template\basicSAPUI5ApplicationProject\BasicSAPUI5ApplicationProjectTemplateWithManifest.zip

四、调整步骤

1、index.html.tmpl模板调整点(上文3.1章节所述压缩包中)

下列仅为调整点的代码:

<!--src="/sap/public/bc/ui5_ui5/resources/sap-ui-cachebuster/sap-ui-core.js"-->
<!--data-sap-ui-appCacheBuster="./"-->
<!--src="/sap/public/bc/ui5_ui5/resources/sap-ui-core.js"-->data-sap-ui-theme="sap_fiori_3"appWidthLimited: false<body class="sapUiBody sapUiSizeCompact" id="content">

2、manifest.json.tmpl模板调整点(上文3.1章节所述压缩包中)

下列仅为调整点代码:

"sap.ui5": {
{{#if basicSAPUI5ApplicationProject.hasView}}"rootView": {"viewName":"{{basicSAPUI5ApplicationProject.parameters.namespace.value}}.view.App","type":"{{basicSAPUI5ApplicationProject.parameters.ViewTypesCollection.value.value}}"},"routing": {"config": {"routerClass": "sap.m.routing.Router","viewType": "XML","async": true,"viewPath": "{{basicSAPUI5ApplicationProject.parameters.namespace.value}}.view","controlAggregation": "pages","controlId": "app","clearControlAggregation": false},"routes": [{"name": "Main","pattern": "","target": ["Main"]}],"targets": {"Main": {"viewType": "XML","transition": "slide","clearControlAggregation": false,"viewName": "{{basicSAPUI5ApplicationProject.parameters.name.value}}"}}},
{{/if}}"config": {"fullWidth": true},

3、Component.js.tmpl模板调整点(上文3.2章节所述压缩包中)

下列仅为调整点代码:

init: function() {// call the base component's init functionUIComponent.prototype.init.apply(this, arguments);// enable routingthis.getRouter().initialize();// set the device modelthis.setModel(models.createDeviceModel(), "device");
},/*** Get the page compactness that should be set for the current state.* @public* @returns {String} Compact CSS*/
getContentDensityClass: function() {if (this._sContentDensityClass === undefined) {// check whether FLP has already set the content density class; do nothing in this caseif (jQuery(document.body).hasClass("sapUiSizeCozy") || jQuery(document.body).hasClass("sapUiSizeCompact")) {this._sContentDensityClass = "";} else if (!Device.support.touch) { // apply "compact" mode if touch is not supportedthis._sContentDensityClass = "sapUiSizeCompact";} else {// "cozy" in case of touch support; default for most sap.m controls, but needed for desktop-first controls like sap.ui.table.Tablethis._sContentDensityClass = "sapUiSizeCozy";}}return this._sContentDensityClass;
}

4、新增App.view.xml.tmpl模板文件(上文3.2章节所述压缩包中)

在view文件夹中新增文件App.view.xml.tmpl

<mvc:View controllerName="{{basicSAPUI5ApplicationProject.parameters.namespace.value}}.controller.App" xmlns:mvc="sap.ui.core.mvc" displayBlock="true"xmlns="sap.m"><App id="app"/>
</mvc:View>

5、新增App.controller.js.tmpl模板文件(上文3.2章节所述压缩包中)

在controller文件夹中新增文件App.controller.js.tmpl

sap.ui.define(["sap/ui/core/mvc/Controller"
], function(Controller) {"use strict";return Controller.extend("{{basicSAPUI5ApplicationProject.parameters.namespace.value}}.controller.App", {onInit: function() {this.getView().addStyleClass(this.getOwnerComponent().getContentDensityClass()); //Set Compactness}		});
});

6、调整BasicSAPUI5ApplicationProjectTemplate.js逻辑以使项目生成的命名空间更准确(上文3.2章节所述压缩包一样的路径下)

下面截图仅演示效果,实际开发请始终保持项目名和命名空间录入为小写,以保证最终命名空间为SAP规范中的命名空间全小写

针对上面截图阐述的现象,对FreeStyle模板的命名空间逻辑调整点如下图所示

下列仅为调整点代码

//model.basicSAPUI5ApplicationProject.parameters.namespace.value = model.basicSAPUI5ApplicationProject.parameters.namespace.value + model.projectName;
//将上面一行代码注释掉,换成下面这行即可达到以“.”分隔开项目名和命名空间
model.basicSAPUI5ApplicationProject.parameters.namespace.value += "."+ model.projectName;//可选,添加此代码会将命名空间强制转化为小写
model.basicSAPUI5ApplicationProject.parameters.namespace.value = model.basicSAPUI5ApplicationProject.parameters.namespace.value.toLowerCase();

五、效果展示

        完成上述修改后,重启Webide(并确保Webide缓存已清除),通过选择FreeStyle模板生成项目的结果展示如下:

六、附言

        虽然SAP已战略性将Webide本地版抛脑后,强推本地开发采用VSCode+Fiori Tools插件,并且也针对Fiori Tools里生成项目的预设模板进行了更新迭代。但我们仍可将Webide本地版开发工具作为一个选择,毕竟选择权应该交由用户,故而写此篇文章对Webide生成项目的预设模板也进行优化。同理,也可根据此方法对其他预设模板进行优化。

👍点赞,您的支持是我创作的动力!

⭐️收藏,您的青睐是我前行的方向!

✏️评论,您的意见是我成长的财富!


http://www.ppmy.cn/server/171054.html

相关文章

三七互娱游戏策划岗内推

【游戏策划】【美术设计】【市场推广】【游戏运营类】【技术开发】 1、协助完成战斗体验设计&#xff0c;包括动作、特效、镜头等&#xff1b; 2、负责战斗资源的需求文档撰写&#xff0c;对最终的战斗表现和打击感负责&#xff1b; 3、协助完成职业的设计与制作&#xff0c…

Windows AD组策略完整实战文档 | 企业级安全配置指南

&#x1f4c5; 更新日期&#xff1a;2025年2月26日‌ ‌&#x1f516; 适用版本&#xff1a;Windows Server 2025 | Windows 11 23H2‌ Windows AD组策略完整实战文档 | 企业级安全配置指南 &#x1f310; ‌一、AD组策略核心概念‌ 1.1 核心价值 markdown Copy Code &#x1…

ZT15 小红的区间查询

描述 小红拿到了一个仅由正整数组成的数组&#xff0c;她有以下两种操作&#xff1a; 1. 输入1 i x&#xff0c;代表将第i个正整数修改为x。 2. 输入2 i x&#xff0c;代表查询前i个正整数有多少个数等于x。 输入描述&#xff1a; 第一行输入两个正整数n和q&#xff0c;代表数…

MFC文件和注册表的操作

MFC文件和注册表的操作 日志、操作配置文件、ini、注册表、音视频的文件存储 Linux下一切皆文件 C/C操作文件 const char* 与 char* const const char* 常量指针&#xff0c;表示指向的内容为常量。指针可以指向其他变量&#xff0c;但是内容不能再变了 char szName[6]&qu…

火语言RPA--Excel添加Sheet页

【组件功能】&#xff1a;新增Excel工作区 配置预览 配置说明 Sheet页名称 支持T或# Excel工作簿名称。 示例 添加Excel工作簿 描述 添加一个新的Excel文档Sheet 新工作簿。 配置 第一步&#xff1a;打开或新建一个Excel文档&#xff0c;拖入 Excel添加Sheet页组件&am…

策略模式环境类的实现方式对比

文章目录 1、策略模式2、聚合策略类实现方式一3、聚合策略类实现方式二4、对比5、补充&#xff1a;ApplicationContextAware接口 1、策略模式 近期工作中&#xff0c;需要处理4.x和5.x两个版本的数据&#xff0c;所以自然想到的是策略模式&#xff0c;写一个抽象类&#xff0c…

PySpark实现Snowflake数据导出到Amazon Redshift

编写AWS EMR上的高性能PySpark代码&#xff0c;实现用SQL从Snowflake上下载数据到S3里的parquet文件&#xff0c;并导入Redshift表。 步骤一&#xff1a;配置EMR集群 首先确保您已经在AWS EMR上正确地设置了包含适当权限的角色和安全组的集群。该角色应允许访问Snowflake数据…

Python 基本语法的详细解释

目录 &#xff08;1&#xff09;注释 &#xff08;2&#xff09;缩进 &#xff08;3&#xff09;变量和数据类型 变量定义 数据类型 &#xff08;4&#xff09;输入和输出 输出&#xff1a;print() 函数 输入&#xff1a;input() 函数 &#xff08;1&#xff09;注释 注…