Descriptor for Applications
官網代碼
manifest.json
所有特定于應用程式的配置設定現在將進一步放在名為manifest.json的單獨描述符檔案中,這清楚地將應用程式編碼與配置設定分開,使我們的應用程式更加靈活,例如,所有sapfiori應用程式都實作為組件,并附帶一個描述符檔案,以便托管在sap fiori launchpad中,
SAP Fiori launchpad充當應用程式容器并實體化應用程式,而無需為bootstrap提供本地HTML檔案,相反,描述符檔案將被決議,組件將被加載到當前的HTML頁面中,這允許在同一背景關系中顯示多個應用程式,每個應用程式都可以定義本地設定,例如語言屬性、支持的設備等,我們還可以使用描述符檔案加載額外的資源,并實體化i18n資源包之類的模型,
注意
自動實體化模型僅適用于SAPUI5 1.30版,如果您使用的是舊版本,那么可以在Component.js檔案的init方法中手動實體化資源包和應用程式的其他模型,就像我們在步驟:組件配置中所做的那樣,
webapp/manifest.json
{
"_version": "1.12.0",
"sap.app": {
"id": "sap.ui.demo.walkthrough",
"type": "application",
"i18n": "i18n/i18n.properties",
"title": "{{appTitle}}",
"description": "{{appDescription}}",
"applicationVersion": {
"version": "1.0.0"
}
},
"sap.ui": {
"technology": "UI5",
"deviceTypes": {
"desktop": true,
"tablet": true,
"phone": true
}
},
"sap.ui5": {
"rootView": {
"viewName": "sap.ui.demo.walkthrough.view.App",
"type": "XML",
"async": true,
"id": "app"
},
"dependencies": {
"minUI5Version": "1.60",
"libs": {
"sap.m": {}
}
},
"models": {
"i18n": {
"type": "sap.ui.model.resource.ResourceModel",
"settings": {
"bundleName": "sap.ui.demo.walkthrough.i18n.i18n",
"supportedLocales": [""],
"fallbackLocale": ""
}
}
}
}
}
在本教程中,我們只介紹描述符檔案最重要的設定和引數,在SAP Web IDE中,可能會出現驗證錯誤,因為缺少某些設定———在此背景關系中可以忽略這些設定,
manifest.json檔案的內容是一個json格式的配置物件,包含所有全域應用程式設定和引數,manifest檔案稱為應用程式、組件和庫的描述符,在用于應用程式時也稱為“描述符”或“應用程式描述符”,它存盤在webapp檔案夾中,由SAPUI5讀取以實體化組件,manifest.json檔案中的名稱空間定義了三個重要部分:
-
sap.app
sap.app命名空間包含以下特定于應用程式的屬性:- id(強制):應用程式組件的命名空間
ID不能超過70個字符,它必須是唯一的,并且必須與組件ID/命名空間相對應, - type:定義我們想要配置什么,這里是:application
- i18n:定義資源包檔案的路徑
- title:從應用程式資源包中參考的句柄(handlebars)語法中的應用程式標題
- description:從應用的資源包中參考的句柄語法的簡短描述文本
- applicationVersion:應用程式的版本,以便以后能夠輕松地更新應用程式
- id(強制):應用程式組件的命名空間
-
sap.ui
sap.ui命名空間提供了以下ui特定的屬性:- technology:這個值指定了UI技術;在我們的例子中,我們使用SAPUI5
- deviceTypes:告訴應用程式支持什么設備型別:桌面,平板,手機(所有默認為true)
-
sap.ui5
sap.ui5命名空間添加了與SAPUI5相關的配置引數,由SAPUI5自動處理,最重要的引數是:- rootView:如果指定此引數,組件將自動實體化視圖,并將其用作該組件的根
- dependencies: 這里我們宣告應用程式中使用的UI庫
- models: 在描述符的這一部分,我們可以定義models,當應用程式啟動時,SAPUI5會自動實體化這些模型,現在我們可以定義本地資源包,我們將模型的名稱“i18n”定義為鍵,并通過命名空間指定包(bundle)檔案,與前面的步驟一樣,翻譯文本的檔案存盤在i18n檔案夾中,名稱為i18n.properties,我們只需用app的命名空間作為檔案路徑的前綴,app組件的init方法中的手動實體化將在稍后的步驟中洗掉,將supportedLocales和fallbackLocale屬性被設定為空字串,如在本教程中只有一個我們的演示應用程式使用i18n.properties為簡單起見,我們希望防止瀏覽器嘗試i18n_*.properties根據您的瀏覽器設定和區域設定加載其他檔案,
出于兼容性原因,根物件和每個部分均在內部屬性_version下宣告了描述符版本號1.12.0,在描述符的未來版本中可能會添加或更改功能,版本號有助于通過讀取描述符的工具識別應用程式設定,
資源包的屬性包含在描述符中的兩個花括號中,這不是SAPUI5資料系結語法,而是在句柄語法中的描述符中對資源包的變數參考,參考的文本在本教程中構建的應用程式中是不可見的,但可以被應用程式容器如SAP Fiori launchpad讀取,
webapp\index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SAPUI5 Walkthrough</title>
<script
id="sap-ui-bootstrap"
src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-theme="sap_belize"
data-sap-ui-resourceroots='{
"sap.ui.demo.walkthrough": "./"
}'
data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"
data-sap-ui-compatVersion="edge"
data-sap-ui-async="true">
</script>
</head>
<body class="sapUiBody" id="content">
<div data-sap-ui-component data-name="sap.ui.demo.walkthrough" data-id="container" data-settings='{"id" : "walkthrough"}'></div>
</body>
</html>
現在我們在index.html的body中宣告我們的組件,在index.html的bootstrapping 腳本中,我們啟用了ComponentSupport模塊并洗掉了sap.m庫,然后,我們通過div標簽在body中宣告我們的組件,這將在onInit事件執行時實體化組件,
從現在開始,我們將不再需要index.js,因為描述符會處理一切,
webapp/i18n/i18n.properties
# App Descriptor
appTitle=Hello World
appDescription=A simple walkthrough app that explains the most important concepts of SAPUI5
# Hello Panel
showHelloButtonText=Say Hello
helloMsg=Hello {0}
在資源包中,我們簡單地為應用添加文本,并添加注釋來從語意上分離bundle文本,
webapp/Component.js
sap.ui.define([
"sap/ui/core/UIComponent",
"sap/ui/model/json/JSONModel"
], function (UIComponent, JSONModel) {
"use strict";
return UIComponent.extend("sap.ui.demo.walkthrough.Component", {
metadata : {
manifest: "json"
},
init : function () {
// call the init function of the parent
UIComponent.prototype.init.apply(this, arguments);
// set data model
var oData = {
recipient : {
name : "World"
}
};
var oModel = new JSONModel(oData);
this.setModel(oModel);
}
});
});
在組件的metadata(元資料)部分,我們現在用屬性鍵manifest和值json替換rootView屬性,這定義了一個對描述符的參考,該描述符將在組件實體化時自動加載和決議,現在我們可以完全洗掉包含資源包模型實體化的代碼行,SAPUI5在描述符中的配置條目的幫助下自動完成,我們還可以洗掉對sap/ui/model/resource/ResourceModel和相應的正式引數ResourceModel的依賴,因為我們不會在匿名回呼函式中使用它,
在SAPUI5的早期版本中,應用程式的其他配置設定,如服務配置、根視圖和路由配置,必須添加到Component.js檔案的元資料部分,從SAPUI5版本1.30開始,我們建議您在manifest.json描述符檔案中定義這些設定,基于更老的SAPUI5版本創建的應用程式和示例仍然使用Component.js檔案來實作這個目的——所以它仍然被支持,但不推薦,
約定:
1、描述符檔案名為manifest.json,位于webapp檔案夾中,
2、為應用的標題和描述使用可翻譯的字串


轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/286420.html
標籤:其他
