SAPUI5 freestyle vs SAP Fiori Elements —— 兩種開發SAPUI5 Apps的方式對比


概述

目前SAPUI5 SDK 提供了兩種方式來開發一個SAPUI5 App。一種方式是傳統的SAPUI5開發方式,一種是利用SAP Fiori Elements通過模板快速構建應用的方式。

本文簡單介紹這兩種方式如何實現,並進行對比,使讀者更清楚這兩種方式的優缺點以及適合的開發場景。

SAPUI5 SDK的官方網站在這里。我采用的開發工具是SAP Web IDE。

 


 

簡介

SAPUI5 freestyle 就是SAPUI5 提供的最普通的最基本的開發方式,之所以給它起名字叫freestyle,就是為了區別於SAP Fiori Elements的開發方式。

freestyle方式的開發,前端由開發人員使用SAPUI5 API提供的控件自行編寫所有頁面View和前端邏輯Controller。自行通過OData Model進行數據綁定。自行通過編碼的方式靈活的與后端進行交互。后端可采用SAP Gateway暴露Odata Service,在Runtime Artifacts中編寫業務邏輯。

Fiori Elements方式的開發,前端只能選擇SAP提供的Template模板生成特定樣式的幾種頁面(模板數量在持續增加以支持更多樣的業務)。這些頁面基本滿足SAP 自有的各種業務的需求。如果頁面有特殊需求超出了模板提供的范圍,可以利用template暴露的接口對模板進行擴展。后端一般采用CDS View自動生成Odata Service。並且通過CDS View生成的BOPF來實現業務邏輯。

不過前后端采用的技術並不是綁定的。freestyle的方式同樣可以訪問CDS View生成的Odata Service,只是不能利用BOPF的一些特性(目前來說)。Fiori Elements一樣可以綁定到普通的SAP Gateway發布的Odata Service,但是要自己寫OData Annotation來綁定數據和UI控件。

 


 

SAPUI5 freestyle App

詳細的基於freestyle開發的基礎教程在這里

freestyle的開發,前后端邏輯分的比較清楚,基本無耦合。前端是典型的MVC框架。我們這里重點關注前端的實現。前端實現主要包括View,Controller和Model的實現。

基本步驟

1. 創建project。

2. 項目結構如下。

3. 項目的配置主要在manifest.json文件,組件的配置(model,router之類)在Component.js文件。

4. 在View中需要注意幾點:配置controller控制頁面邏輯,引入需要用到的lib的命名空間,使用model進行數據展示,注冊事件觸發controller邏輯。

5. Controller中,采用AMD的方式進行模塊定義,並且注意利用onInit(),onExit()等7個基本方法,注意利用console.log()debug。

6. 前端可以自己mock數據,構建JSONModel進行測試,也可以配置OData數據源,通過OData JSONModel與后端進行數據交互。

7. 在SAP Gateway server上,使用T-code SEGW 進入SAP Gateway Service Builder界面,構建后端服務。關於后端OData Service的構建本文不做討論。

8. 一個freestyle的project最簡單也需要以上的操作。


 

SAP Fiori Elements

詳細的基於Fiori Elements開發的基礎教程在這里這里(這個鏈接可能需要SAP內部員工權限)。

基於Fiori Elements的開發,前后端概念比較模糊,前端是模板化的,而模板的渲染需要很多后端注解的支持,前后端耦合較高,且對CDS View有一定要求。如果不使用CDS View和注解,就需要使用OData注解,我個人並不推薦這種方式。

我花了一個粗淺的個人理解架構圖。

基本步驟

1. 創建CDS View。CDS View中既要包含你要展示的數據,也要包含這些數據關於UI的注解。這些注解將告訴UI Template的組件如何展示你的數據。關於UI的注解推薦采用annotation extension的方式實現。

@ODate.publish: true注解將自動生成OData Service。

2. 創建project。

這里的project類型選擇SAP Fiori Elements。目前提供了五種,基本SAP的界面類型都包含了,還可以寫自己的擴展。

創建project的時候需要選用第一步中發布的OData Service作為數據源。

 3. 創建好的project就可以直接訪問了,Fiori Elements會自動根據你CDS View中的UI注解去渲染和展示數據。

項目的目錄結構如下。

4. 可以通過在本地覆蓋external Annotations的方式來overwirte CDS View的UI注解。注意這里注解都已經轉化成了OData Annotation。

5. 如有需要,可以增加自己的擴展。但是只能是在template暴露的API范圍內。在manifest.json中配置擴展信息。

6. 一個Fiori Elements的project,最復雜的部分就是CDS View的實現,而前端只需要選擇合適的Template,連接到數據源就好了。如果沒有自己的樣式調整和擴展,基本不需要任何代碼工作。


 

關於Smart Control

Smart Control是一些能夠根據注解自動生成完成很多工作的組件,比如用Smart Field根據注解能自動生成value help,Smart Filter Bar + Smart Table生成的帶有Filter Bar的Data Table

能省去很多配置和編碼工作就能展示后端數據,完成search,filter,sort等很多功能。使用SAP Fiori Elements的限制在於,Templates只有五種,並且里邊的組件都是封裝好的,我們能做的擴展也很有限。

如果在freestyle的project中,使用各種Smart Control控件配合注解,我們能享受到一些UI注解帶來的方便,類似於Fiori Elements的局部快速構建。但是不知道出於何種原因,SAP不再推薦使用Smart Control,

雖然我們依然能使用,但是在SAP的一些文檔中已經把Smart Control的使用方法部分刪除了。

 


 

總結

這兩種開發方式各有優缺點。

freestyle的方式,是典型的MVC架構,開發既需要懂JavaScript的前端工程師,也需要懂ABAP的后端工程師。

優點:

  • 靈活,可配置
  • 基於SAPUI5的強大組件庫,基本能滿足所有UI需求
  • MVC架構,前后端分工明確,可並行開發

缺點:

  • 同時需要前端和后端開發人員
  • SAPUI5對於沒接觸過JavaScript的Abap開發人員來說,學習成本高
  • 開發周期長
  • 測試復雜

SAP Fiori Elements的方式,是SAP為了讓ABAP開發人員能快速構建Fiori應用而開發的一種方式。

優點:

  • 開發速度快且易於維護
  • 在不同developer之間交接容易
  • 前端幾乎無代碼和測試工作
  • 測試簡單。

缺點:

  • 靈活性差
  • 只能支持特定模板樣式,擴展性差
  • 對復雜的增刪改支持較差

如果你開發的App比較簡單,有SAP Fiori Elements對應的模板,並且項目上沒有熟悉JavaScript的工程師,那么SAP Fiori ELements無疑是一個好的選擇。

如果你要開發一個UI復雜,業務邏輯和UI交互邏輯都需要大量定制化的App,那么還是選擇freestyle的更為保險。

總體來說,SAP公司的風格是喜歡把所有的東西都封裝進ABAP的開發范圍。不管是Webdynpro也好,SAP Fiori Elements也好,SAP都是希望工程師能在ABAP范圍內就完成工作,只關注ABAP技術和業務邏輯即可。

這對ABAP工程師來說是一件好事。但是請注意,最好在項目一開始就對所有的頁面有一個大概了解,並確定是否能采用SAP Fiori ELements,避免采用了Fiori Elements進行到一半突然發現有很多不支持的界面,

不得不推倒使用freestyle重來的情況。

 

本文為欣欣念念原創並首發於博客園,轉載請注明出處。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM