日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP UI的加载动画效果和幽灵设计(Ghost Design)

發布時間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP UI的加载动画效果和幽灵设计(Ghost Design) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是Jerry 2021年的第 14 篇文章,也是汪子熙公眾號總共第 285 篇原創文章。

在本篇文章之前,Jerry 印象最深的幽靈,應該要算《星際爭霸I》里人族能夠隱形的空中單位 Wraith( 幽靈戰機 ),以及能施放核彈的 Ghost( 幽靈特工).


上周 Jerry 做 SAP Spartacus 開發時,接觸到一個新的和幽靈相關的術語:

Skeleton Design(Ghost Design)

讀了幫助文檔后,發現該名詞對我來說只不過是舊瓶裝新酒罷了。

本文目錄

  • SAP UI5 Busy Dialog
  • 使用代理模式( Proxy Pattern ) 提高 SAP UI5 大尺寸圖片的加載體驗
  • SAP Spartacus Spinner 控件
  • SAP Spartacus 幽靈設計

我對應用軟件的 User Experience 即用戶體驗領域知之甚少。在 SAP 內部,有專門的用戶體驗設計師負責這個領域,因此我也不清楚 Skeleton / Ghost Design 準確的中文翻譯是啥,姑且就直譯成“幽靈設計”吧。

在我看來,無論是幽靈設計,還是之前 SAP UI5 提供的頁面加載動畫效果,都是改善用戶使用體驗的一種手段:提示用戶當前頁面正在加載后臺數據,或是執行一些比較費時的操作。

SAP UI5 Busy Dialog

Jerry 從2014年開始使用 SAP UI5 進行 Fiori 開發,經歷了 Fiori 1.0 到 2.0 的版本迭代。還記得處理的第一個 CRM Fiori 應用 My Opportunities 的 bug,癥狀就是修改了 Opportunity 數據之后,用戶可以短時間內快速點擊下圖的 Save 按鈕,從而產生多個到 CRM 后臺的 OData 保存請求。

當時我的修復該問題的策略就是,在 Save 按鈕點擊之后,設置一個 Busy Dialog,讓其鎖住整個頁面。這樣,用戶沒有機會再點擊 UI 進行任何操作了。直至 OData 請求在后臺成功完成,或者收到錯誤提示,再關閉該 Busy Dialog,頁面就能重新恢復可點擊狀態。

在 Fiori 1.0 時代,Busy Dialog 的外觀是一個由5朵花瓣組成的花朵,具有不斷旋轉的動畫效果。

可以通過這個視頻查看運行時效果:

https://v.qq.com/x/page/y3225pbaqpa.html

Jerry 曾經寫過一篇 SAP 社區博客:Fiori Busy Dialog – when is it opened and closed

該文章介紹了 SAP UI5 Busy Dialog 在 Fiori 應用中的使用場景。

一個典型的例子是,用戶點擊 Fiori Launchpad tile,跳轉到某個具體的 Fiori 應用時,瀏覽器地址欄里的 url 發生變化, sap.ui.controller.doHashChange 會調用 BusyDialog.open 方法,繪制一個花瓣的動畫效果:

如 Jerry 之前的文章 深入學習SAP UI5框架代碼系列之二:UI5 控件的渲染器 所述,這個花瓣效果的實現 位于其渲染器 LoadingDialogRenderer 的方法 renderFioriFlower 內:

5片花瓣的視覺效果,通過5個 div 元素實現:

而花瓣旋轉的動畫效果,通過 div 元素 css 類的 animation 系列屬性實現:

到了 Fiori 3.0 ,Jerry 發現 Busy Dialog 的外觀,已經變成了三個大小不斷變化的圓圈。

使用代理模式( Proxy Pattern ) 提高 SAP UI5 大尺寸圖片的加載體驗

我在 2015 年擔任 一個德國 Fiori 客戶上線的 Dev Angel 時,該客戶有一個自開發需求:其產品主數據的配圖動輒超過 10 MB,客戶希望瀏覽器在成功加載這些尺寸巨大的圖片之前,顯示一些加載動畫效果。待到圖片完全加載結束時,再關閉加載動畫,顯示實際圖片。

先看沒有經過任何優化處理的情況下,如何在 SAP UI5 里使用 Image 控件顯示一個 url 指向的圖片:第10行調用 SAP UI5 控件 Image 實例的 setSrc 方法,加載 BIG_IMAGE 變量指向的圖片。

再看我給客戶推薦的基于圖片代理的解決方案。

這是運行時的效果:

https://v.qq.com/x/page/n32257vdvui.html

這個方案實現源代碼如下:

上圖代碼按照運行時執行的先后順序,有4個關鍵點,分別用序號1~4表示:

  • 第10行代碼,創建一個新的 Image 實例,充當圖片代理的角色。

  • 第15行代碼,UI5 應用里原始的 Image 實例,調用 setSrc 方法,傳入的不是實際的大圖片地址,而是一個存儲在本地的,表示圖片正在加載的 gif 文件( 客戶自己準備,一個該企業 Logo 旋轉的動畫效果). 這樣,用戶打開頁面時,首先映入眼簾的,是該本地 gif 文件 loading.gif 實現的不斷旋轉的動畫效果。

  • 第16行代碼,將待加載大尺寸圖片的 url 通過輸入參數,傳遞給代理 Image 控件的 setSrc 方法。這會觸發瀏覽器發起對大尺寸圖片的加載。

  • 第13行代碼,當代理 Image 控件觸發的大尺寸圖片加載完成后,觸發其 load 回調函數。該回調函數觸發,說明大尺寸圖片的數據已經完全加載到本地,此時在回調函數里,將大尺寸圖片的 url 設置給原始 Image 控件的 src 屬性,即可將該圖片顯示出來。

  • SAP Spartacus Spinner 控件

    Spartacus 里的 Spinner 控件作用類似 SAP UI5 Busy Dialog,下面是一個例子:當第九行代碼的組件屬性 supportedDeliveryModes$.length 可用時,說明當前訂單支持的商品遞貨模式的相關配置信息,已經從后臺取到前臺了,此時顯示遞貨模式的選擇頁面;否則,則顯示 ID 為 loading 標識的模板頁面,里面只包含一個 Spinner 控件:

    這個 Spinner 控件的外觀及實現細節,請參考 Jerry 的視頻:

    https://v.qq.com/x/page/w3160fich85.html

    最后來說說 SAP Spartacus 的幽靈設計。

    Spartacus B2B 功能模塊里,正常的 Cost Centers 列表顯示如下:

    在這些 Cost Center 的數據從后臺取回來之前,頁面顯示如下,這種設計在 SAP Spartacus的幫助文檔里,被稱為 Skeleton 或者 Ghost Design:

    這些在真實數據尚未從后臺加載完畢之前,以“占位符”的方式顯示在前臺的灰色矩形條,綁定在 Angular Component 里的數據,就稱為幽靈數據( Ghost Data ).

    從Spartacus list.service.ts 的實現源代碼能看出,幽靈數據就是一個 length 屬性值為10的空數組。

    在 Chrome 開發者工具里,能觀察到這些幽靈數據具有對應的 CSS class,這使得它們具有灰色矩形的視覺外觀:

    Cost Center 表格顯示的數據最終通過 list.service.ts 從 SAP Commerce Cloud 后臺取出,取數邏輯通過 Angular 響應式編程庫 RxJS的 pipe 方法驅動:第101行 switchMap 操作符里的箭頭函數,輸入參數 pagination 包含了去 Commerce Cloud 取數據使用的分頁設置,函數體 this.load 發送 HTTP 請求,消費 Commerce Cloud 的 OCC API. 而第102行的 startWith操作符,語義上相當于給 pipe 驅動的 Observable 流賦上一個初始值,該初始值即為 length 屬性為10的空數組。

    這樣,從運行時序來說,任何消費 getData 函數返回的 Observable 對象的 Angular UI 組件,都會先顯示 startWith 設置的初始值,即幽靈數據。待從 Commerce Cloud 后臺加載的真實數據返回給瀏覽器之后,組件自動刷新并顯示這些真實的業務數據。

    本文介紹了 Jerry 工作過的 SAP 產品里,當用戶操作 UI 觸發了某些后臺數據加載時,為了提升用戶體驗而引入的一些頁面效果的技術實現,希望對大家有所幫助,感謝閱讀。

    更多閱讀

    • SAP UI和Salesforce UI開發漫談

    • SAP UI 搜索分頁技術

    • Jerry在2020 SAP全球技術大會的分享:SAP Spartacus技術介紹的文字版

    • SAP UI5應用開發人員了解UI5框架代碼的意義

    • SAP UI5 module懶加載機制

    • SAP UI5 控件渲染機制

    • HTML原生事件 VS SAP UI5 Semantic事件

    • SAP UI5控件元數據的元數據實現

    • SAP UI5控件的實例數據修改和讀取邏輯

    • SAP UI5控件數據綁定的實現原理

    • SAP UI5控件數據綁定的三種模式:One Way, Two Way和OneTime實現原理比較

    • SAP UI5控件ID的生成邏輯

    • SAP UI5控件的多語言(國際化,Internationalization,i18n)支持的實現原理

    • XML視圖里的button控件

    • button控件和它背后的DOM元素

    • SAP UI5 OData謠言粉碎機:極短時間內發送兩個Odata request,前一個會自動被cancel掉嗎

    • 漫談SAP產品里頁面上的Checkbox設計與實現系列之一

    • SAP UI渲染模式:客戶端渲染 VS 服務器端渲染

    更多Jerry的原創文章,盡在:“汪子熙”:

    總結

    以上是生活随笔為你收集整理的SAP UI的加载动画效果和幽灵设计(Ghost Design)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩欧美在线看 | 欧美三级特黄 | 国产一级片自拍 | 午夜影院一区二区 | 日韩精品视频免费播放 | а√天堂8资源在线官网 | 东京av男人的天堂 | 少妇诱惑av | 荒野求生21天去码版网站 | 在线中文字幕日韩 | 久久久久久免费视频 | 国产网址在线观看 | 精品二区在线观看 | 热久久最新 | 免费超碰在线 | 日韩精品――中文字幕 | 蜜桃网av | 在线视频免费观看一区 | 欧美成人手机视频 | 三级精品在线 | 狠狠澡| 五月天黄色网址 | 熟女肥臀白浆大屁股一区二区 | 性v天堂| 国产成人精品一区二区在线观看 | 一级片免费观看视频 | 国产69视频在线观看 | 天天操夜夜操视频 | 国产91绿帽单男绿奴 | 国产一区二区三区精品在线 | 色阁av| 久久精品一区二区在线观看 | 亚洲精品一区二区三区四区五区 | 欧美一级淫片免费视频黄 | 不卡一二三 | 一二区在线观看 | 夜夜狠狠 | 欧美寡妇性猛交ⅹxxx | 免费黄色网址大全 | 精品资源在线 | 天天色天天 | 黑鬼巨鞭白妞冒白浆 | 国产人妻人伦精品1国产丝袜 | 捆绑束缚调教 | 播色屋 | 国产伊人av| 日本三级韩国三级三级a级按摩 | 午夜免费福利视频 | 熟女av一区二区三区 | 久久艹国产 | 台湾少妇xxxx做受 | 69精品视频 | 超碰在线人人 | 91精品视频观看 | 精品人体无码一区二区三区 | 一级黄色在线视频 | 国精产品一区一区三区mba下载 | 国产精品美女久久久网av | 正在播放一区二区 | 亚欧洲精品在线视频 | 九九九在线 | 污污网站免费 | www男人的天堂 | 日本网站在线播放 | 国产二级一片内射视频播放 | 日本大尺度做爰呻吟 | 伊人久久精品一区二区三区 | 欧美日韩免费做爰视频 | 国产精品一区二区不卡 | aaa在线视频 | 九九热在线免费观看 | 日本中文字幕在线看 | 久久艹在线视频 | 日本一区二区三区在线看 | 黑人3p波多野结衣在线观看 | 床戏高潮做进去大尺度视频网站 | 91视频播放| 日韩经典一区二区三区 | 不卡的av在线免费观看 | 自拍偷拍亚洲一区 | 国产激情免费视频 | 九草影院 | 黄色成年视频 | 天天色婷婷 | 青青草一区 | 少妇视频网站 | 国产精品无码专区av在线播放 | 动漫涩涩免费网站在线看 | 日本中文字幕在线观看视频 | 久久精品66 | www.69av.com | 午夜香蕉网 | 国产精品久久婷婷 | 91资源站 | 一区二区三区欧美 | 成人aⅴ视频 | 粉嫩av蜜桃av蜜臀av | 污污视频网站免费观看 | 人妻在线日韩免费视频 |