ApiCloud開發經驗總結


1、前端框架

盡量不要使用jQuery、AngularJS、BootStrap等重型的框架,擺脫對$的依賴,培養自己動手的習慣,但是可以根據功能需求在特定頁面中使用功能獨立的Mobile First框架

默認樣式設置、DOM操作和字符串處理推薦使用APICloud前端框架(api.js和api.css)
移動端UI框架推薦使用AUI

2、前端框架:

盡量不要使用jQuery、AngularJS、BootStrap等重型的框架,擺脫對$的依賴,培養自己動手的習慣,但是可以根據功能需求在特定頁面中使用功能獨立的Mobile First框架

默認樣式設置、DOM操作和字符串處理推薦使用APICloud前端框架(api.js和api.css)
移動端UI框架推薦使用AUI

3、 屏幕適配:要正確設置viewport,建議使用720*1280尺寸的UI圖,

優先考慮絕對計量類的單位 px,應先在UI效果圖中(如720x1280尺寸圖)量出元素的寬或高對應的 px 值,再除以屏幕倍率(如分辨率為720x1280設備的屏幕倍率通常為 2) 來得到書寫樣式時的確切數值。

!!!注意!!!: APICloud項目驗收時會根據設計提供的UI圖尺寸(如720x1280),在對應屏幕分辨率的手機設備(如720x1280)中安裝運行,
將運行后的頁面與UI效果圖一一進行對比。
!!!注意!!!: H5界面的實現要與UI設計完全一致,精細到0.5px。 !!!注意!!!: openFrame/FrameGroup等時,應使用auto結合margin布局,以動態適應變化無常的android設備屏幕。 推薦文檔:屏幕適配原理及實現
https://docs.apicloud.com/Dev-Guide/screen-adapt-guide

4、窗口關閉處理:開發過程中根據需要處理Android的keyback事件和iOS的回滑手勢。

!!!注意!!!:Android上要在Window中才能監聽到keyback事件,Frame中無法監聽到keyback事件;
在iOS7以上的系統上可以在openWin的時候通過設置slidBackEnabled參數來實現是否支持回滑手勢關閉窗口的功能。
!!!注意!!!:在后台關閉頁面時,應注意在關閉方法中添加animation:{type:"none"},來防止切換動畫的出現影響用戶體驗;

5、窗體背景圖片:避免使用H5來實現body級別的背景圖片,可以使用Window或Frame的bgColor參數以原生的方式來高效實現

!!!注意!!!: 不建議通過給body元素指定background的方式來實現body級別的背景圖片,特別是高清的大背景圖片用H5方式實現會嚴重影響渲染性能。

6、導航切換:切換底部導航或頂部分類菜單的時候,要求切換體驗平滑,切換過程不能出現白屏、閃屏等現象

!!!注意!!!:建議使用FrameGroup來實現Frame的切換,要按需合理配置預加載的Frame數量,每個Frame要有明顯的刷新機制,不能每次切換都進行刷新和重繪。
!!!注意!!!:如果使用模塊來實現底部導航欄推薦使用NVTabBar模塊。

7、列表滾動:滾動效果要平滑流暢,不能使用iscroll等JS的方式來實現滾動

!!!注意!!!:建議使用Window+Frame的UI結構,以Native的方式來實現列表頁面的滾動。
!!!注意!!!:在iOS上要支持點擊狀態欄能自動回到頂部的效果,可以通過在openWin或openFrame的時候配置scrollToTop參數來實現;
此效果在FrameGroup中使用的時候要注意確保只有當前顯示的Frame的scrollToTop屬性為true,其它Frame的scrollToTop屬性為false。

8、交互響應:點擊事件必須處理click事件的300ms延遲問題,優化點擊響應速度,建議通過為可點擊的元素增加tapmode屬性來優化點擊速度。

!!!注意!!!:引擎對具有tapmode屬性的元素點擊事件的優化處理會在apiready事件觸發之前,根據當前的dom樹自動進行優化。
在apiready之后加載的數據使用要顯式的調用api.parseTapmode方法來進行主動的tapmode處理,例如在上拉加載更多數據后,要調用一下api.parseTapmode方法.
!!!注意!!!:要按UE設計確定可點擊區域的大小,可以適當擴大點擊區域來保障點擊反應的靈敏。 !!!注意!!!:api.parseTapmode調用會有性能成本,不需要的情況下不要隨便調用。 !!!注意!!!:要按照需求明確所有按鈕點擊時的交互效果,為tapmode屬性設置正確的樣式值,對於沒有交互效果的點擊實現,可以不為tapmode屬性指定任何樣式,
但是為了優化點擊速度,必須要給元素增加tapmode屬性。

9、網絡請求狀態處理:APP要判斷當前的網絡狀態,請求過程要按UI設計有明顯的狀態提示;網絡超時或網絡請求失敗的時候要進行相關處理並有錯誤提示。

api對象和dialogBox模塊下面封裝了常用的提示對話框方法。
https://docs.apicloud.com/Client-API/UI-Layout/dialogBox

10、數據緩存:要對GET請求進行數據的緩存處理,在用戶沒用網絡的情況下,仍然能夠看到APP的靜態界面布局以及上次已經緩存的服務器端數據。

!!!注意!!!:可以在api.ajax方法中設置cache參數為true來開啟緩存;也可以使用api.writeFile和api.readFile方法,在獲取數據后自己實現簡單的數據緩存,
或使用fs和db模塊來緩存數據。 https:
//docs.apicloud.com/Client-API/api#3

11、 圖片緩存:必須手動進行圖片的緩存處理,需要調用api.imageCache方法實現。

!!注意!!!:Webview默認的緩存機制存在缺陷,在跨窗口時表現不好,並且存在對所緩存圖片的尺寸限制等問題,
所有APICloud應用的圖片緩存不能依賴Webview默認的緩存機制,必須手動實現。

12、圖片處理:要減少由圖片造成的內存占用,減少圖片縮放等耗性能的操作,服務器端要根據產品設計提供合適尺寸的大圖、小圖、縮略圖等

!!!注意!!!:APICloud應用所占用的內存大小由所加載的網頁大小決定,通常圖片過多過大會造成整個應用的內存占用過大,另外在瀏覽器中進行圖片的縮放處理成本也很高。
!!!注意!!!:列表中的頭像等縮略圖,寬高應控制在250-300px之間,小於這個范圍大屏手機容易失真,大於這個范圍消耗更多內存和性能。

13、配置外部字體:可以根據項目的需要引入外部字體,但是要控制外部字體文件的大小,字體文件不宜過大。

!!!注意!!!:Android上默認有3種字體:sans, serif, monospace,在開發人員不指定的情況下,默認為sans,這3種字體在開發過程中都是通過字體名進行引用,
系統會自動對應到內置字體文件。但是,對於外部的字體文件,Android上無法實現通過引擎配置后成為內置的字體文件,只能通過@font-face的方式在每個頁面中重復加載,
每一個要使用外部字體的Window或Frame都要引入一遍,如果字體體積過大會占用大量內存,並且影響頁面的加載速度。
!!!注意!!!:iOS可以在config.xml文件中進行外部字體文件的配置,配置完成后就可以像系統內置字體一樣在頁面中指定了,
無需在每個Window或Frame中通過@font-face的方式引入。 https://docs.apicloud.com/Dev-Guide/app-config-manual#14-1

14、JavaScript模版:建議使用doT模版等輕量級的模版。

!!!注意!!!:要優先選擇使用Mobile First的模版,體量小,生成的文本效率高。https://github.com/apicloudcom/APICloud-JS-Modules

 

 


免責聲明!

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



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