SAP BAS开发Fiori项目中的各种文件详解(manifest.json, package.json, ui5.yaml, i18n等)

1. 背景

在SAP BAS中新建好一个Fiori项目后,系统会自动生成一系列的文件,例如package.json, ui5.yaml, manifest.json, i18n等。对于不熟悉web应用程序开发的同学,这些文件理解起来会很困惑。

在这篇文章中,我会详细介绍这些文件的功能和用途。

2. 文件结构

一个典型的Fiori项目创建好后,一般会生成如下的文件结构。

但Fiori项目的文件结构可能会因项目的类型、模板、配置和需求而有所不同。根据项目的具体需求,也可手动添加额外的文件和文件夹,如用于存储应用程序的所有控制器文件的controller文件夹,或用于存储应用程序的所有视图文件的view文件夹等。


虽然大多数Fiori项目都会有一些共同的文件和文件夹(如webapp、manifest.json、Component.js等),但具体的文件结构可能会因项目而异。

3. 文件功能介绍

接下来我会按照从上到下的顺序,逐一介绍这些文件夹和文件的功能及用途。

3.1 .vscode

.vscode文件夹是一个重要的配置文件夹,这些配置文件可以帮助你定制 Visual Studio Code (VS Code) 编辑器的行为。 

  • 编辑器配置:.vscode 中的 settings.json 文件,你可以在这个文件中定义项目特定的 VS Code 设置。例如,你可以设置代码格式化规则、文件编码、主题颜色等。
  • 调试配置:.vscode 中的  launch.json 的文件,这个文件定义了如何启动和调试你的项目。例如,你可以设置启动参数、环境变量、断点行为等 (定义的run configuration的参数会存储在此文件中)。
  • 任务配置:如果你的项目包含一些自动化任务(例如,构建、测试、部署等),你可以在 .vscode 中的 tasks.json 文件中定义这些任务。

.vscode 目录通常会被添加到版本控制系统中,这样团队中的其他成员就可以共享相同的编辑器配置。然而,如果你有一些用户特定的设置,你可能需要在你的用户设置中(而不是项目设置中)定义它们,以避免影响其他用户。


3.2 node_modules

node_modules是Node.js项目的一个重要组成部分,这个目录包含了项目所需的所有Node.js模块和库。当你在项目中运行npm install命令时,所有在package.json文件中列出的依赖都会被安装到node_modules目录中

通常我们不会将node_modules目录添加到版本控制系统中,因为它可能会非常大(通常会将node_modules目录添加到.gitignore文件中)。我们只需在package.json文件中列出依赖,然后在每次检出项目或部署到新环境时运行npm install命令来重新生成node_modules目录。


3.3 webapp

webapp文件夹Fiori应用程序的核心,包含了构建和运行应用程序所需的所有资源。以下是webapp文件夹中可能包含的一些文件和子文件夹。

3.3.1 annotations

annotations 文件夹用于存放所有的注解文件,包括 annotations.xml 文件。这些注解文件用于定义和描述 OData 服务的元数据,以便在 Fiori 应用程序中使用。

3.3.2 i18n

i18n:这个文件夹包含了应用程序的所有国际化文件,用于支持多语言。

3.3.3 localService

localService:这个文件夹通常用于存储模拟数据和模拟服务。在开发过程中,如果后端服务还未准备好,或者你想在没有网络连接的情况下进行开发,你可以使用模拟数据和模拟服务。这个文件夹通常包含一个metadata.xml文件,定义了OData服务的元数据,以及一个或多个.json文件,包含了模拟数据。

3.3.4 test

test:这个文件夹包含了应用程序的所有测试文件。

3.3.5 model / view / controller / css

可以根据项目的需求创建经典的MVC分层文件。

  • model:这个文件夹包含了应用程序的所有数据模型文件,这些文件用于处理和管理应用程序的数据。
  • view:这个文件夹包含了应用程序的所有视图文件,通常是XML格式。
  • controller:这个文件夹包含了应用程序的所有控制器文件,这些文件包含了视图的事件处理逻辑。
  • css:这个文件夹包含了应用程序的所有样式表文件。

3.3.6 Component.js

Component.js:这个文件是SAPUI5/Fiori应用程序的主要入口点,它负责初始化应用程序,配置应用程序,处理应用程序的生命周期事件和其他事件。例如,Component.js文件可以包含一些生命周期方法,如init,exit等,这些方法在应用程序的特定生命周期阶段被调用。Component.js文件也可以包含一些事件处理函数,如处理路由事件,处理模型事件等。

3.3.7 manifest.json

manifest.json:这是应用程序的配置文件,包含了应用程序的元数据,如应用程序ID,版本,数据源等。

  • 应用配置: manifest.json 文件包含了应用的基本信息,如应用ID,版本,标题,描述等。这些信息用于在SAP Fiori Launchpad中展示应用。
  • 模型和数据源声明: manifest.json 文件中可以声明应用所需的数据模型和数据源,包括OData服务,i18n国际化文件等。
  • 路由和导航配置: manifest.json 文件中定义了应用的路由信息,包括每个视图的路由路径,以及路由之间的导航关系。
  • UI5组件加载: manifest.json 文件中可以声明应用所需的UI5库和组件,系统会根据这些声明自动加载所需的资源。
  • 扩展和自定义配置: manifest.json 文件中可以定义应用的扩展点,以便进行应用的扩展和自定义。

3.3.8 index.html

index.html:它是启动和加载SAPUI5/Fiori应用程序的关键,它定义了应用程序的基本结构和样式,并包含了加载和启动应用程序所需的代码。


3.4 .gitignore

.gitignore文件是一个特殊的文件,它告诉Git版本控制系统哪些文件或文件夹不应该被跟踪或记录在版本历史中。

3.5 package.json

package.json文件是Node.js项目的“说明书”,它定义了项目的基本信息,列出了项目的依赖,定义了项目的脚本命令,以及包含了一些项目的配置信息。

  • 定义项目的元数据:package.json文件包含了项目的基本信息,如项目名称,版本,描述,作者等。
  • 列出项目的依赖:package.json文件中的dependencies和devDependencies字段列出了项目所需的所有依赖包及其版本。当你或其他开发者运行npm install时,npm会查看这些列表并安装所有列出的依赖。
  • 定义脚本命令:package.json文件中的scripts字段可以定义一些脚本命令,这些命令可以用于构建,测试,运行项目等。
  • 配置项目:package.json文件还可以包含一些配置信息,如Babel,ESLint等工具的配置。


3.6 package-lock.json

package-lock.json文件锁定了项目依赖的确切版本,这意味着每次你或其他开发者在同一项目上运行npm install时,将会安装完全相同版本的依赖,从而确保了项目的一致性。

3.7 pom.xml

Fiori项目的pom.xml文件是Maven项目对象模型(Project Object Model)的配置文件。Maven是一个流行的Java项目管理和构建工具,pom.xml文件用于定义和配置Maven项目的各种设置。pom.xml文件是Maven项目的“说明书”。


3.8 ui5.yaml

在SAP Business Application Studio (BAS)中,Fiori项目的ui5.yaml,ui5-mock.yaml,ui5-local.yaml,ui5-ci.yaml等文件是UI5工具套件(UI5 Tooling)的配置文件,用于定义和配置项目的构建,运行和测试设置。

  • ui5.yaml:这是UI5工具套件的主要配置文件,定义了项目的基本设置,如项目类型,依赖,构建任务等。
  • ui5-mock.yaml:这个文件通常用于配置模拟服务器的设置,如模拟数据的路径,模拟服务的端口等。
  • ui5-local.yaml:这个文件通常用于配置本地开发环境的设置,如本地服务器的端口,代理设置等。
  • ui5-ci.yaml:这个文件通常用于配置持续集成(CI)环境的设置,如构建任务,测试任务等。

这些文件都是YAML格式的,可以使用简洁的语法来定义复杂的配置。通过这些文件,你可以灵活地配置和控制你的Fiori项目的构建,运行和测试过程。

3.9 readme.md

readme.md文件是一个文档文件,用于说明项目的目的,功能,安装和使用方法等信息

4. 小结

本文详细介绍了一个Fiori项目中的文件结构,以及各个文件的功能和用途。希望这篇博客对你有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:将 ILM 管理的数据流迁移到数据流生命周期

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新版本为 8.12。 在本教程中,我们将了解如何将现有数据流&#xff0…

Replidec:使用朴素贝叶斯分类器从宏基因组数据中识别病毒生命周期

Replidec - Use naive Bayes classifier to identify virus lifecycle from metagenomics data | bioRxivReplidec - Use naive Bayes classifier to identify virus lifecycle from metagenomics data | bioRxiv 安装 docker pull denglab/replidec 使用 for i in *_vOT…

【算法】小强爱数学(迭代公式+数论取模)

文章目录 1. 问题2. 输入3. 输出4. 示例5. 分析6. 思路7. 数论,取模相关公式8. 数论,同余定理9. 代码 1. 问题 小强发现当已知 x y B xyB xyB以及 x y A xyA xyA时,能很轻易的算出 x n x_ {n} xn​ y n y_ {n} yn​ 的值.但小强想请你在已知A和B的…

Linux线程补充之——同步

一、Linux线程同步 ​ 同步是相对于竞争的概念; ​ 同步就是在保证安全的前提下啊,按照一定的顺序访问临界资源; ​ 所有的资源一定是先访问的临界资源,申请失败然后才进行排队的;互斥锁保证的是来访问的进程只允许…

《边缘计算:连接未来的智慧之桥》

随着物联网、5G等技术的快速发展,边缘计算作为一种新兴的计算模式,正逐渐引起人们的广泛关注。边缘计算通过将数据处理和存储功能放置在距离数据产生源头更近的位置,实现了更快速、更可靠的数据处理和交换,为各行各业带来了前所未…

【项目设计】基于MVC的负载均衡式的在线OJ

项目代码(可直接下载运行) 一、项目的相关背景 学习编程的小伙伴,大家对力扣、牛客或其他在线编程的网站一定都不陌生,这些编程网站除了提供了在线编程,还有其他的一些功能。我们这个项目只是做出能够在线编程的功能。…

详解JavaScript中this指向

this 原理 this 是一个指针型变量,它指向当前函数的运行环境。 1.内存的数据结构 var obj { foo: 5 };2.函数 var obj { foo: function () {} };引擎会将函数单独保存在内存中,然后再将函数的地址赋值给foo属性的value属性。 由于函数是一个单独的…

代码随想录day28(1)二叉树:二叉搜索树中的插入操作(leetcode701)

题目要求:给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。 思路:对于二叉搜索树来说&…

常见技术难点及方案

1. 分布式锁 1.1 难点 1.1.1 锁延期 同一时间内不允许多个客户端同时获得锁; 1.1.2 防止死锁 需要确保在任何故障场景下,都不会出现死锁; 1.2.3 可重入 特殊的锁机制,它允许同一个线程多次获取同一个锁而不会被阻塞。 1.2…

Web前端Html的表单

表单的关键字: form标签表示一个表单区域 action“后端地址” method“提交数据方式:get/post” input 单行输入框 type“text” 文本 name“定义名称 名字自定义” 向后端提交的键 readonly“readonly” 只读,不可修改,但是可以提交 disab…

C语言学习-day22-函数递归1

程序调用自身的编程技巧被称为递归。举个例子: int main() { printf("hehe\n"); main(); return 0; } 比如这种,自己调用自己后每次都打印一个hehe。 递归的核心思考方式在于:大事化小。 做个练习:接收一个整型值&a…

鸿蒙Harmony应用开发—ArkTS-类型定义

说明: 本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 Resource 资源引用类型,用于设置组件属性的值。 可以通过$r或者$rawfile创建Resource类型对象,不可以修改Res…

【S056】Clause46--XGMII接口摘要

文章目录 XGMII数据与lane的对应关系是什么?XGMII上的数据流格式是什么?如何保证0xFB每次都在Lane0?方法一:方法二: Link Fault信号 XGMII数据与lane的对应关系是什么? XGMII上的数据流格式是什么&#xff…

GDC期间LayaAir启动全球化战略

3 月 18 日至 3 月 22 日,一年一度的游戏开发者大会(GDC)在美国旧金山举行。在此期间,Layabox宣布LayaAir引擎启动全球扩张战略,这标志着引擎将步入快速发展的新阶段。此举旨在利用公司先进的3D引擎技术,将…

Linux之git

一、什么叫做版本控制 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发项目的技…

Affiliate Stores: 建立营销联盟商店的详细教程- US Domain Center主机

第一步:了解营销联盟商店 营销联盟商店是一种电子商务模式,您可以在其中通过推广其他企业的产品或服务来赚取佣金。您在自己的网站上展示其他企业的产品,并在买家购买时获得佣金。通过 WooCommerce 平台,您可以轻松创建一个营销联…

学习总结!

java目前学习到了数组部分 广搜,在开始的时候把#处理一下会好做很多,遇到上下两层都是# 的,就把上下两层的这个位置都弄成墙就行。还有遇到 一层是#,一层是墙的。也直接把俩都弄城墙就行,省的要判断他撞死,…

部署mysql,前端,后端

部署mysql docker pull mysql 从镜像源中拉取镜像。 创建mysql容器 docker run -d \--name mysql_container \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \--restartalways \-v /opt/mysql:/var/lib/mysql \mysql -d后台运行,--name指定容器…

【JavaScript】JavaScript 程序流程控制 ⑤ ( 嵌套 for 循环 | 嵌套 for 循环概念 | 嵌套 for 循环语法结构 )

文章目录 一、嵌套 for 循环1、嵌套 for 循环概念2、嵌套 for 循环语法结构 二、嵌套 for 循环案例1、打印三角形2、打印乘法表 一、嵌套 for 循环 1、嵌套 for 循环概念 嵌套 for 循环 是一个 嵌套的 循环结构 , 其中一个 for 循环 位于另一个 for 循环的内部 , 分别是 外层 f…

计算机网络实验——学习记录二(HTTP协议)

1. Linux主机上连接互联网的网络接口是:ens33。 2. 在显示过滤器(Filter)中输入“ http.host www.zzu.edu.cn”,筛选出HTTP协议报文首部行中包含“ Host:www.zzu.edu.cn”的报文(目的地址是Web服务器的报…