SAPUI5基础知识3 - 引导过程(Bootstrap)

1. 背景

在上一篇博客中,我们已经建立出了第一个SAPUI5项目,接下来,我们将为这个项目添加引导过程。

在动手练习之前,让我们先解释一下什么引导过程。

1.1 什么是引导过程?

在计算机科学中,引导过程也称之为“自举”(Bootstrapping),通常指的是启动操作系统的过程,也就是我们通常所说的"引导"或"启动"。

当你开启计算机时,引导程序(Bootstrap program)是第一个运行的程序。它负责初始化所有的硬件,然后加载操作系统内核并将控制权交给它。自举程序通常存储在只读存储器(ROM)或者电气可擦除可编程只读存储器(EEPROM)中,这样它就可以在电源开启时立即运行。

Bootstrapping这个词源于短语 “pull oneself up by one’s bootstraps”,意思是通过自我努力改善自己的状况。

1.2 SAPUI5的引导过程

在SAPUI5框架中,引导过程是指SAPUI5框架的初始化过程,它加载并初始化SAPUI5框架,创建应用程序实例,并运行应用程序。这个过程通常在HTML文件中的部分进行。

引导过程包括以下步骤:

  • 加载SAPUI5库:通过<script>标签加载SAPUI5库的核心文件(如sap-ui-core.js)
  • 初始化SAPUI5:在<script>标签中设置data-sap-ui-libs属性,指定需要加载的SAPUI5库
  • 初始化应用程序:在<script>标签中设置data-sap-ui-oninit属性,指定应用程序初始化时需要执行的函数
  • 运行应用程序:在HTML文件的<body>部分创建应用程序的视图和控制器。

2. 练习 - 手动添加引导过程

2.1 增强SAPUI5项目

打开上一篇博客中SAPUI5项目的terminal,并执行ui5 use OpenUI5 命令,这个命令会通过通过添加UI5发行版的名称,来初始化ui5.yaml的框架段(framework segment)。当在浏览器中运行应用程序时,将使用该参数。
在这里插入图片描述
可以看到,执行完ui5 use OpenUI5 命令后,会更新ui5.yaml文件,添加添加UI5发行版的名称,也即指定了SAPUI5框架的版本。SAPUI5应用程序运行时,会使用此版本的SAPUI5框架。

framework:name: OpenUI5version: "1.124.0"

接下来,执行ui5 add sap.ui.core sap.m themelib_sap_horizon命令,这个命令会通过通过添加依赖列表来增强ui5.yaml的框架段。
在这里插入图片描述

可以看到,执行完此命令后,会为ui5.yaml文件中添加SAPUI5框架的依赖库。目前,我们添加了3个库:sap.m , sap.ui.core 以及 themelib_sap_horizon。

framework:name: OpenUI5version: "1.124.0"libraries:- name: sap.m- name: sap.ui.core- name: themelib_sap_horizon

2.2 向index.html文件中添加引导过程

在这个步骤中,我们的目的是从UI5 Tooling提供的web服务器加载SAPUI5框架,并通过以下的配置选项初始化SAPUI5的核心模块:

  • <script>标签的id属性必须精确地为sap-ui-bootstrap,以确保SAPUI5运行时的正确启动。
  • <script>标签的src属性告诉浏览器在哪里找到SAPUI5核心库, 它初始化SAPUI5运行时并加载额外的资源,如在data-sap-ui-libs属性中指定的库。
  • SAPUI5控件支持不同的主题。我们选择sap_horizon作为我们的默认主题。
  • 我们指定了所需的UI库sap.m,它包含了我们在练习中需要的UI控件。
  • 为了利用SAPUI5的最新功能,我们将兼容性版本定义为edge
  • 配置引导过程为异步运行data-sap-ui-async="true",这意味着,SAPUI5资源可以在后台同时加载。
  • 通过data-sap-ui-onInit属性以声明方式定义了最初要加载的模块。通过这种方式,我们避免了在HTML文件中直接执行JavaScript代码,这使应用更安全。
  • 通过data-sap-ui-resourceroots属性告诉SAPUI5核心,zsapui5.test命名空间中的资源位于与index.html相同的文件夹中。
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>My SAPUI5 Test</title><scriptid="sap-ui-bootstrap"src="https://sdk.openui5.org/resources/sap-ui-core.js"data-sap-ui-theme="sap_horizon"data-sap-ui-libs="sap.m"data-sap-ui-compatVersion="edge"data-sap-ui-async="true"data-sap-ui-onInit="module:zsapui5/test/index"data-sap-ui-resourceroots='{"zsapui5.test": "./"}'></script>
</head>
<body><div>Hello World!</div>
</body>
</html>

注意:在data-sap-ui-onInit属性中声明的module,不能以 . 分割,要以 / 分割。当前项目引用的命名空间为zsapui5.test, 在此要写成zsapui5/test, /index是指定的文件名。

2.3 创建index.js文件

创建一个新的index.js脚本文件,该脚本包含应用程序的逻辑。这样做是出于安全的考虑,避免在HTML文件中直接执行代码。

这个脚本将从index.html中调用。在上个步骤中,我们在index.html中以声明方式将此文件定义了作为一个模块 data-sap-ui-onInit="module:zsapui5/test/index"

在这里插入图片描述

这段js代码将会在“引导过程”完成后调用,显示一个alert(警报)消息。

2.4 运行应用程序

至此,我们可以通过npm start命令,或通过点击NPM Script视图中的Run按钮来启动我们的应用程序。

方式1: 通过npm start命令运行应用程序
在这里插入图片描述
方式2:通过NPM Script菜单运行应用程序

在这里插入图片描述
在这里插入图片描述
应用程序启动后,会打开一个新的窗口,可以看到我们的hello world!应用。

相较于上一个练习,我们的应用程序中,有了一个弹出窗口。
在这里插入图片描述

启动应用程序后,服务器将一直运行,直到手动停止它或在BAS中关闭dev space。通过快捷键ctrl + c可以关停web server网络服务器。

若不小心关闭的应用程序的网页,可以通过运行ports: preview命令,然后点击端口号来再次打开本地网络服务器,然后选择index.html来进行查看。

在这里插入图片描述
在这里插入图片描述
点击index.html再次打开应用程序对应的网页。
在这里插入图片描述

3. 小结

本文介绍了SAPUI5引导过程的概念,并通过示例程序,展示了为SAPUI5应用程序添加引导过程的步骤。希望本文对你有帮助!

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

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

相关文章

Presto 从提交SQL到获取结果 源码详解(3)

物理执行计划 回到SqlQueryExecution.startExecution() &#xff0c;执行计划划分以后&#xff0c; // 初始化连接&#xff0c;获取Connect 元数据&#xff0c;添加会话&#xff0c;初始ConnectId metadata.beginQuery(getSession(), plan.getConnectors()); // 构建物理执行…

你真的会用收藏夹吗?可道云teamOS收藏夹,竟能缩短多层级文件夹的路径,实现快速访问

在日常工作中&#xff0c;我们时常会面临一个让人头疼的问题&#xff1a;如何在海量的文件和资料中快速找到我们需要的那一份&#xff1f; 尤其是在团队协作中&#xff0c;每个人都在不断地上传、更新文件……导致文件目录层级复杂&#xff0c;搜索也变得繁琐。 这时候&#x…

编程学习 (C规划) 6 {24_4_18} 七 ( 简单扫雷游戏)

首先我们要清楚扫雷大概是如何实现的&#xff1a; 1.布置雷 2.扫雷&#xff08;排查雷&#xff09; &#xff08;1&#xff09;如果这个位置是雷就炸了&#xff0c;游戏结束 &#xff08;2&#xff09;如果不是雷&#xff0c;就告诉周围有几个雷 3.把所有不是雷的位置都找…

一周学会Django5 Python Web开发 - Django5内置Admin系统二次开发

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计56条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

【C++】Vector的简易模拟与探索

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

模型 FABE(特性 优势 好处 证据)法则

说明&#xff1a;系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。特性、优势、好处、证据&#xff0c;一气呵成。 1 FABE法则的应用 1.1 FABE法则营销商用跑步机 一家高端健身器材公司的销售代表正在向一家新开的健身房推销他们的商用跑步机。以下…

Microsoft Dynamics 365 Business Central 讲解VAT RATE CHANGE TOOL(增值税税率更改工具)

学习目标&#xff1a; 如果使用VAT RATE CHANGE TOOL&#xff08;增值税税率更改工具&#xff09; 过程演示&#xff1a; 1.创建新的VAT产品过账组 2.创建新的总账科目以过账采购、销售和逆向征收增值税。 3.给新的VAT产品过账设置过账设置 4.创建一个新的一般产品过账组 5…

CUDA学习(2)

什么是CUDA CUDA&#xff08;Compute Unified Device Architecture&#xff09;&#xff0c;统一计算设备架构&#xff0c;英伟达推出的基于其GPU的通用高性能计算平台和编程模型。 借助CUDA&#xff0c;开发者可以充分利用英伟达GPU的强大计算能力加速各种计算任务。 软件生…

手写HTML字符串解析成对应的 AST语法树

先看效果 展示如下&#xff1a; HTML模版 转成ast语法树后 在学习之前&#xff0c;我们需要了解这么一个问题&#xff0c;为什么要将HTML字符串解析成对应的 AST语法树。 为什么&#xff1f; 语法分析&#xff1a;HTML字符串是一种标记语言&#xff0c;其中包含了大量的标签…

chap5 CNN

卷积神经网络&#xff08;CNN&#xff09; 问题描述&#xff1a; 利用卷积神经网络&#xff0c;实现对MNIST数据集的分类问题 数据集&#xff1a; MNIST数据集包括60000张训练图片和10000张测试图片。图片样本的数量已经足够训练一个很复杂的模型&#xff08;例如 CNN的深层…

gcc 内建函数示例 __builtin_return_address

1,理论未动&#xff0c;示例先行 hello_gcc_callstack.c #include <stdio.h>void do_backtrace() {void *pc0 __builtin_return_address(0);void *pc1 __builtin_return_address(1);void *pc2 __builtin_return_address(2);void *pc3 __builtin_return_address(3);…

低边驱动与高边驱动

一.高边驱动和低边驱动 低边驱动(LSD): 在电路的接地端加了一个可控开关&#xff0c;低边驱动就是通过闭合地线来控制这个开关的开关。容易实现&#xff08;电路也比较简单&#xff0c;一般由MOS管加几个电阻、电容&#xff09;、适用电路简化和成本控制的情况。 高边驱动&am…

JVM哪些区域可能出现内存溢出,哪些地方需要GC?

GC顾名思义也就是垃圾回收&#xff0c;有人的地方就有江湖&#xff0c;那有数据的地方也理应有垃圾回收&#xff0c;所以思考一下&#xff0c;沿着之前提到过的JVM内存分区&#xff0c;堆&#xff0c;栈&#xff0c;程序计数器&#xff0c;方法区 堆、栈、方法区…

一键安装 HaloDB 之 Ansible for Halo

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ 前倾回顾 前面介绍了“光环”数据库的基本情况和安装办法。 哈喽&#xff0c;国产数据库&#xff01;Halo DB! 三步走&#xff0c;Halo DB 安装指引 以及 HaloDB 的 Oracle 和 MySQL 兼容模式: …

ChatGPT-4o 有何特别之处?

文章目录 多模态输入&#xff0c;多模态输出之前的模型和现在模型对比 大家已经知道&#xff0c;OpenAI 在 GPT-4 发布一年多后终于推出了一个新模型。它仍然是 GPT-4 的一个变体&#xff0c;但具有前所未见的多模态功能。 有趣的是&#xff0c;它包括实时视频处理等强大功能&…

Mac安装第三方软件的命令安装方式

场景&#xff1a; 打开终端命令行&#xff0c;sudo xattr -rd com.apple.quarantine&#xff0c;注意最后quarantine 后面加一个空格&#xff01;然后打开Finder&#xff08;访达&#xff09;&#xff0c;点击左侧的 应用程序&#xff0c;找到相关应用&#xff0c;拖进终端qua…

六一见!|Post Microsoft Build and AI Day 上海开发者日

编辑/排版&#xff1a;Alan Wang 大小朋友明天见&#xff01; 6月1日&#xff0c;Microsoft Azure & Microsoft Reactor 面向大小朋友特别推出六一特辑&#xff0c;「Post Microsoft Build and AI Day 上海开发者日」 探讨 Microsoft Build 2024 带来的最新发布&#xff0…

KT6368A双模蓝牙芯片上电到正常发送AT指令或指令复位需要多久

一、简介 KT6368A芯片上电到正常发送AT指令&#xff0c;或者开启蓝牙广播被搜索到&#xff0c;或者指令复位需要多久等等系列问题总结 详细描述 其实这些问题归结到一起&#xff0c;就还是一个问题&#xff0c;芯片上电需要多久的时间 在另外一份文档里面&#xff0c;是有描…

热门新游 2024 植物大战僵尸杂交版 Mac 版本下载安装详细教程

最近植物大战僵尸杂交版可谓是非常的火&#xff0c;好多主播都在播这款游戏&#xff0c;我一个 Mac 党也想玩&#xff0c;可奈何该游戏目前只有 PC 版本&#xff0c;经过一番折腾终于在我的 Mac 上安装上了该游戏&#xff0c;分享给大家 其实安装过程也很简单&#xff0c;只需…

C++ | Leetcode C++题解之第119题杨辉三角II

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> getRow(int rowIndex) {vector<int> row(rowIndex 1);row[0] 1;for (int i 1; i < rowIndex; i) {row[i] 1LL * row[i - 1] * (rowIndex - i 1) / i;}return row;} };