日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

開發(fā)和管理自定義頁面

輕應(yīng)用支持使用系統(tǒng)提供的標(biāo)準(zhǔn)組件搭建頁面,并支持通過JSX編寫簡單的代碼,但有復(fù)雜交互的頁面還是難以通過搭建實現(xiàn)。因此平臺提供了自定義頁面功能,您可以在IDE中使用React開發(fā)頁面并打包上傳到系統(tǒng)中,自定義頁面將和系統(tǒng)標(biāo)準(zhǔn)頁面一樣展示在菜單中。本文介紹如何開發(fā)和管理自定義頁面。

背景信息

由于在React中沒有頁面的概念,只有組件的概念,因此會通過配置文件將React的組件映射到系統(tǒng)的頁面。BizWorks的前端使用的是React框架,因此自定義頁面暫時也只支持通過React編寫。

開發(fā)自定義頁面流程說明

使用流程說明如下:1

  1. 下載開發(fā)模板:平臺提供了一個自定義頁面的開發(fā)模板,用戶可以下載后在模板上修改并開發(fā)自己的頁面。

  2. 開發(fā)React組件:用戶在線下通過IDE開發(fā)自定義頁面。

  3. 導(dǎo)出組件:將開發(fā)的React組件導(dǎo)出,用于后續(xù)配置組件和頁面Id的映射關(guān)系。

  4. 配置React組件和頁面Id映射關(guān)系:在代碼中定義頁面Id和導(dǎo)出的組件映射關(guān)系。

  5. 本地調(diào)試:您可以在本地調(diào)試頁面,但暫不支持調(diào)用平臺提供的API方法。

  6. 工程打包:在線下將工程打成zip包。

  7. 上傳zip包文件到自定義頁面:系統(tǒng)中的一條自定義頁面數(shù)據(jù)對應(yīng)的是一個zip包,而一個zip包中又可以包含多個自定義頁面。

  8. 創(chuàng)建頁面:創(chuàng)建頁面,指定為全代碼類型,并關(guān)聯(lián)到特定的頁面Id。

  9. 創(chuàng)建菜單:創(chuàng)建菜單的步驟和為普通編排頁面創(chuàng)建菜單以及菜單配置相同。

  10. 部署輕應(yīng)用:完成上述配置后需要重新部署輕應(yīng)用。

相關(guān)對象間的關(guān)系如下圖。1

對象間關(guān)系的相關(guān)說明如下。

  • 一個輕應(yīng)用中可以包括多個自定義頁面的數(shù)據(jù),每條自定義頁面數(shù)據(jù)中可以上傳一個React工程打包后的zip文件。

  • 每個zip包中可以包括多個React組件。

  • 通過配置文件可以將一個React組件映射到多個自定義頁面。

  • 一個輕應(yīng)用中可以在頁面編排頁中創(chuàng)建多個頁面。

  • 每個全代碼類型的頁面可以一一映射到代碼中定義的頁面。

開發(fā)自定義頁面操作步驟

步驟一:下載開發(fā)模板

關(guān)于如何下載開發(fā)模板,請參見下載示例代碼

步驟二:開發(fā)React組件

請按正常流程開發(fā)頁面,如下圖所示。1

更多信息,請參見開發(fā)說明JS API

步驟三:導(dǎo)出組件

1
  • 加載頁面時系統(tǒng)會運(yùn)行mount方法。

  • 卸載頁面時系統(tǒng)會運(yùn)行unmount方法。

  • pageList是文件中包含的頁面列表。

步驟四:配置getPageList.ts和getPageMap.ts文件

配置getPageList.tsgetPageMap.ts文件,以及配置文件和自定義頁面編碼的映射關(guān)系。其中:

  • getPageList.ts文件定義了整個自定義頁面項目包含的自定義頁面編碼。

  • getPageMap.ts文件定義了自定義文件編碼和React組件文件中定義的頁面間的映射關(guān)系。

11

步驟五:本地調(diào)試

在工程根目錄,運(yùn)行npm start,把啟動后日志里的URL粘貼到運(yùn)行態(tài)地址欄后,進(jìn)行調(diào)試操作。

步驟六:打包工程

完成開發(fā)后,您可以通過npm run build命令,將工程打成zip包。

系統(tǒng)默認(rèn)將創(chuàng)建名稱為dist的目錄,并在該目錄下創(chuàng)建名稱為customJsCode的zip包,如下圖所示。1

步驟七:上傳zip包文件到自定義頁面(新增自定義頁面)

  1. 登錄BizWorks,在選擇平臺下拉列表中選中輕應(yīng)用組裝平臺image.png

  2. 單擊頁面右上角a7.png圖標(biāo)或其文本框區(qū)域,在下拉列表中單擊目標(biāo)項目名稱后,單擊應(yīng)用頁簽。在應(yīng)用列表頁面單擊目標(biāo)輕應(yīng)用名稱。image.png

  3. 在目標(biāo)輕應(yīng)用導(dǎo)航欄中,單擊擴(kuò)展管理,在擴(kuò)展管理頁面單擊自定義頁面頁簽。

  4. 擴(kuò)展管理自定義頁面頁簽,單擊新增自定義頁面image.png

  5. 新增自定義頁面面板,單擊虛線框區(qū)域或拖拽文件至虛線框區(qū)域內(nèi),完成文件上傳。1

  6. 填寫自定義頁面名稱編碼描述(可選)。

  7. 單擊確認(rèn)

    自定義頁面頁面,您可查看所新增的定義頁面。

步驟八:創(chuàng)建頁面

  1. 在目標(biāo)輕應(yīng)用導(dǎo)航欄中,選擇應(yīng)用開發(fā) > 頁面編排

  2. 頁面編排頁面,單擊新建頁面

  3. 新建頁面面板,完成下圖所示的配置項設(shè)置后,單擊創(chuàng)建image.png

    說明
    • 編碼需填寫為步驟四中config.json文件中定義的pageId

    • 開發(fā)模式需選擇為前端全代碼

    更多參數(shù)信息,請參見參數(shù)說明

步驟九:創(chuàng)建菜單并添加菜單項到導(dǎo)航

  1. 后續(xù)創(chuàng)建菜單項并指向該頁面,將菜單項添加到菜單配置中,然后部署輕應(yīng)用的流程與普通頁面相同,不再贅述。

  2. 在目標(biāo)輕應(yīng)用導(dǎo)航欄中,選擇應(yīng)用開發(fā) > 頁面編排。在頁面編排頁面,單擊導(dǎo)航與框架配置

  3. 菜單管理頁面的菜單項頁簽,單擊新增菜單項

  4. 新增菜單項對話框中,完成參數(shù)配置后,單擊確定1

    說明

    菜單指向類型需選擇為應(yīng)用內(nèi)頁面目標(biāo)頁面選擇為您所需的目標(biāo)自定義頁面名稱。更多信息,請參見新增和管理菜單項

  5. 添加菜單項到導(dǎo)航。具體操作,請參見新增和管理菜單配置

步驟十:部署輕應(yīng)用

部署輕應(yīng)用。具體操作,請參見部署和管理輕應(yīng)用

開發(fā)說明

開發(fā)React組件時,您可以使用以下Props,并且使用樣式時要遵循以下規(guī)范。

組件Props

開發(fā)自定義組件時,可以獲取系統(tǒng)傳入的兩個Props組件:

  • queryParam:是一個object類型的數(shù)據(jù),格式如下。

    {
      //應(yīng)用編碼
      "applicationCode": "xxx",
      //頁面編碼
      "pageId": "xxx",
      //當(dāng)前選中的菜單唯一標(biāo)識,不是系統(tǒng)中設(shè)置的菜單編碼,不常用
      "selectedKey": "xxx"
    }
  • utils:主要用來提供常用的API。關(guān)于這些API的使用方式,請參見JS API

樣式

為了防止不同樣式文件的類名發(fā)生沖突,對于在規(guī)則文件中設(shè)置了運(yùn)行態(tài)所生成的類名,系統(tǒng)默認(rèn)會在用戶定義的類名后加上一定長度的hash值,如下圖所示。1

在寫樣式類時您可以使用如下方式。1

JS API

開發(fā)React組件時,您可以使用以下JS API。

API列表

序號

API

使用說明

1

utils.my.alert()

顯示警告彈窗

2

utils.my.confirm()

顯示彈窗

3

utils.my.error()

顯示錯誤信息

4

utils.my.loading()

顯示加載信息

5

utils.my.success()

顯示成功信息

6

utils.my.showMessage()

顯示信息,可以指定信息類型

7

utils.my.getVariableValue()

獲取變量

8

utils.my.setVariableValue()

設(shè)置變量

9

utils.my.invokeFunction()

調(diào)用后端服務(wù)方法

10

utils.my.callJsFunction()

調(diào)用JS方法

11

utils.my.log()

打印控制臺日志

12

utils.my.router.getLocationUri()

獲取頁面URI

13

utils.my.router.getUrlQuery()

獲取查詢參數(shù)

14

utils.my.router.goBack()

返回上一頁

15

utils.my.router.openLink()

打開指定鏈接

16

utils.my.router.openPage()

跳轉(zhuǎn)應(yīng)用內(nèi)其他頁面

使用示例

調(diào)用API示例如下。

/**
* 調(diào)用后端服務(wù)方法 
* @param 后端服務(wù)方法編碼
* @param 服務(wù)方法入?yún)ⅲ袇?shù)放在一個對象中傳入
*/
this.my.invokeFunction("functionCode", {})


/**
* 快捷調(diào)用警告對話框
* @param
* https://fusion.alibaba-inc.com/pc/component/dialog?themeid=40463#Dialog%20Alert%20Config%20Dialog%20Confirm%20Config
*/
this.my.alert({
  content: "",
  onOk: () => { },
});

/**
* 快捷調(diào)用確認(rèn)對話框
* @param 同F(xiàn)usion組件的config配置
* https://fusion.alibaba-inc.com/pc/component/dialog?themeid=40463#Dialog%20Alert%20Config%20Dialog%20Confirm%20Config
*/
this.my.confirm({
  content: "",
  onOk: () => { },
  onCancel: () => { },
});

/**
* 快捷調(diào)用消息彈窗
* @param 同F(xiàn)usion組件的config配置
* https://fusion.alibaba-inc.com/pc/component/message?themeid=40463#Message%20Show
*/
this.my.showMessage({
  type: 'error',
  title: '錯誤',
  content: '請聯(lián)系相關(guān)人員反饋!',
  duration: 0, // 永遠(yuǎn)存在
  hasMask: true
});

/**
* 快捷調(diào)用成功消息彈窗
* @param 同F(xiàn)usion組件的config配置
* https://fusion.alibaba-inc.com/pc/component/message?themeid=40463#Message%20Success%20Error%20Notice%20Help%20Loading
*/
this.my.success("demo");

/**
* 快捷調(diào)用錯誤消息彈窗
* @param 同F(xiàn)usion組件的config配置
* https://fusion.alibaba-inc.com/pc/component/message?themeid=40463#Message%20Success%20Error%20Notice%20Help%20Loading
*/
this.my.error("demo");

/**
* 快捷調(diào)用加載消息彈窗
* @param 同F(xiàn)usion組件的config配置
* https://fusion.alibaba-inc.com/pc/component/message?themeid=40463#Message%20Success%20Error%20Notice%20Help%20Loading
*/
this.my.loading("demo");

/**
* 打開外部鏈接
* @param 外部鏈接地址
* @param 外部鏈接地址的queryString
* @param "self"代表在當(dāng)前標(biāo)簽頁下打開新頁面,否則表示打開新的標(biāo)簽頁
*/
this.my.router.openLink("http://www.example.com/a=hello", { a: "world", b: "hello" } "self");

/**
* push方法的封裝版本,打開appPage內(nèi)部頁面
* @param pageId
* @param 內(nèi)部頁面參數(shù)
*/
this.my.router.openPage("pageId", {});

/**
* 獲取當(dāng)前的Url對象
*/
this.my.router.getLocationUri();

/**
* getLocationUri的封裝版本,直接獲取當(dāng)前查詢字符串的Map
*/
this.my.router.getUrlQuery();

/**
* 回退到上一個內(nèi)部頁面,等同于點擊瀏覽器左上角退后按鈕
*/
this.my.router.goBack();

/**
* 獲取變量
* @param 變量名
*/
this.my.getVariableValue("varName");

/**
* 設(shè)置變量
* @param 變量名
* @param 變量值
*/
this.my.setVariableValue("varName", 1234);

/**
* 裸調(diào)ajax
* @param 請求地址
* @param 請求配置,同Axios Request Config
* https://github.com/axios/axios#request-config
*/
this.my.request("/lightAppEngine/metadata/navigation/getNavigation/v1", {method: "post", data: {applicationCode: "qing10"}}).then(res=>console.log(res))

/**
* 對request的post封裝
* @param 請求地址
* @param Request Body
* @param 請求配置,同Axios Request Config
* https://github.com/axios/axios#request-config
*/
this.my.post(url, data?, config?)

/**
* 對request的get封裝
* @param 請求地址
* @param Query String
* @param 請求配置,同Axios Request Config
* https://github.com/axios/axios#request-config
*/
this.my.get(url, params?, config?)
                

編輯自定義頁面

  1. 自定義頁面頁面,單擊目標(biāo)自定義頁面或目標(biāo)自定義頁面右側(cè)操作列下的編輯

  2. 編輯自定義頁面面板,完成自定義頁面名稱描述信息修改后,單擊確認(rèn)

下載自定義頁面

自定義頁面頁面,單擊目標(biāo)自定義頁面名稱右側(cè)操作列下的下載

刪除自定義頁面

  1. 自定義頁面頁面,單擊目標(biāo)自定義頁面名稱右側(cè)操作列下的刪除

  2. 在二次確認(rèn)對話框中,單擊刪除

下載示例代碼

自定義頁面頁面,單擊下載示例代碼