云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

轻量服务器_网站集约化建设_高性能

小七 141 0

尽管SAPUI5框架提供了大量的控件,但很可能在某个时刻,您会意识到最终用户变得异想天开,并面临创建另一个控件继承者的任务。其实没什么大不了的,只要打开相应的指南就可以了。实现新控件并将其用作应用程序项目的一部分。但是,您迟早会需要在另一个项目中使用相同的控件,然后在一个或多个项目中使用相同的控件,然后在另一个项目中使用相同的控件,依此类推。如果控件足够简单(就像在本教程中一样),您可以使用旧的"复制粘贴",根据需要将js文件复制到所有项目中,但是这是最糟糕的事情–请记住,您是在面向对象的环境和编程语言中工作的。这时你就需要一个库——一组功能紧密的可重用代码(控件、类型等),你可以在多个项目中重用这些代码,还可以在网上发布给其他开发人员。经过几个小时的尝试和错误技巧的练习,我找到了一个解决方案:该库已经实现,部署到HCP和内部SAP ABAP存储库中,大数据存储技术,现在可能是分享结果的好时机。不幸的是,我不能保证下面描述的技术适用于任何安装,但是嘿,我们都是开发人员,更具挑战性的任务就是解决它更有趣。

当解决方案证明对我有效时(2016年12月初),内部SAP ABAP存储库的UI5版本是1.42.x,SAPUI5版本是1.38.9。SAP ABAP Repository的版本是7.40/0014.

实现库

这里可以找到对库实现必要步骤的简要回顾。显然,这不是一份官方文件,而且还远远不够全面。不过,这是一个很好的起点。我还建议查看Github OpenUI5源代码库中的其他SAPUI5库以获取示例。

要开始在Web IDE中实现库,首先必须创建一个项目。假设库的名称空间是"我的自定义控件WebIDE项目的名称应该是"MyCustomLib"。我们还假设库将包含一个取自OpenUI5教程的控件ProductRating。

尽管指南命令根据库名称空间创建文件夹层次结构,但可以将所有库文件放在项目根文件夹中。与普通的SAP UI5应用程序相比,您必须做一些不同的事情:

的"type"值sap应用程序"一部分清单.json文件必须包含字符串值"library"的"id"值sap应用程序"一部分清单.json文件包含库名称空间我的自定义控件"就我们而言除了包含不同控件实现的所有JS文件外,项目根文件夹还必须包含图书馆.js文件项目根文件夹还必须包含.library文件。如果控件使用某些特定的CSS样式,则必须在项目中创建"主题"文件夹,然后为所有支持的主题创建子文件夹。每个子文件夹应包含库.css用你特定的CSS规则归档。

的键值"sap应用程序"一部分清单.json将如下:

生成的Web IDE项目根文件夹应如下所示:以及图书馆.js文件应如下所示:

部署到SAP HCP

一旦您设置了库项目并收集了所有必要的文件,您现在就要开始开发将使用新库的应用程序。这里出现了第一个问题:你如何确切地告诉你的新应用程序使用这个库?事实上也没有关于这个问题的文件(我尝试了不同的搜索请求和不同的信息来源,但都没有结果,我在stackoverflow的问题一直没有得到回答,大数据是什么概念,直到我自己发布了答案——尽管不完全正确)。

我在SAP指南中找到的唯一一句话是,部署到SAP HCP(HANA can平台)的应用程序可以用于资源共享。进一步的研究表明这是正确的第一步。现在是将库项目部署到HCP的时候了。在Web IDE中选择库项目,然后选择菜单选项Deploy->Deploy to SAP HANA Cloud Platform。在接下来显示的对话框中,您将看到默认值,包括应用程序公共名称(复制以供进一步使用)和版本,如下图所示:

您很可能应该通过按"部署"按钮接受所有默认值。部署后,Web IDE将立即显示另一个对话框,建议使用HCP启动板注册应用程序,但是无法注册库,因此必须按"关闭"按钮:

请记住部署的应用程序名称是"mycustomlib"。现在您已经将您的库部署到HCP,是时候将您的应用程序链接到它了。

是的,您将所有必要的依赖项输入到JS控制器文件中,并将适当的名称空间输入到XML视图中,但是似乎Web IDE仍然不知道您存储库文件的某个可共享应用程序的存在。

到要解决这个问题,我们需要修改在项目根文件夹中找到的另一个配置文件–neo-应用程序.json–又称应用程序描述符文件。除此之外,它还包含从应用程序特定路径到节点"routes"下的HCP相关路径的映射-应用程序.json如下所示:

"routes"映射数组中的第一个条目包含以下Web IDE运行时指令:如果正在运行的应用程序请求具有url的资源从/webapp/resources开始,必须要求预定义的服务"sapui5"从其内部路径以/resources开始提供资源。