APP開發選擇什麼框架好? 請看這裡!

来源:https://www.cnblogs.com/weikefangan/archive/2018/01/02/8170196.html
-Advertisement-
Play Games

背景 App的開發一般都需要滿足Android和iOS兩個系統環境,也就意味著一個App需要定製兩套實現方案,造成開發成本和維護成本都很高。為瞭解決這個問題,最好的辦法就是實現一套代碼跨端運行,所以Hybrid App混合應用模式應運而生。在Hybrid App整個開發框架上,有各種各樣的框架,各種 ...


背景

App的開發一般都需要滿足Android和iOS兩個系統環境,也就意味著一個App需要定製兩套實現方案,造成開發成本和維護成本都很高。為瞭解決這個問題,最好的辦法就是實現一套代碼跨端運行,所以Hybrid App混合應用模式應運而生。在Hybrid App整個開發框架上,有各種各樣的框架,各種各樣的技術選型,而現在主要的技術就是Web技術,不僅簡單,更容易實現UI,開發者人數也比較多。目前市面上的大多數App都是採用Web+Native的混合技術來實現的。

隨著移動互聯網的發展和普及,越來越多的業務都有了移動App版本的實現,單個App的規模也越來越大。這也就造成App的開發不再是三兩個人就能夠完成,需要更多的人來開發。大型項目開發所面對的依賴管理、溝通成本問題,也出現在App開發的過程中,如果不解決好這兩個問題,很可能會引起項目缺陷增多、開發效率降低,進而導致項目延期,並且也會造成項目後期維護的難度增大。

綜上,對於中大型的App開發項目,需要一個既支持混合開發模式、又能夠解決依賴和溝通問題的開發框架來有效的指導和規範開發。

核心需求

一個好的App開發框架,要能在框架層面解決中大型App開發中Hybrid開發框架選型、模塊間解耦的問題,同時也要提供模塊動態變更、動態升級的解決方案。

除了App開發框架之外,還應包括以下三部分內容:

Ÿ   後臺發佈管理平臺

支持模塊動態變更、動態升級,後臺發佈管理平臺是與之想配套的後臺管理功能,包括數據管理和App介面兩部分。

Ÿ   持續集成方案

提供配套的持續集成方案,用於項目開發過程中自動打包。

Ÿ   H5模塊開發規範

提供H5模塊開發的規範,用於實現動態模塊功能。

解決“規模變大”問題思路

分而治之

模塊化,將業務功能劃分成多個獨立的模塊;

模塊間做到高內聚低耦合,互不幹擾、並行開發

依賴統一管理

依賴不可避免;

對依賴進行統一規劃管理;

模塊間的依賴可以歸納為:

  • 頁面間跳轉

  • API調用

解決“跨平臺”問題思路

Cordova (PhoneGap)

  • 業界最主流的開源移動跨端框架

  • HTML + CSS + JS +原生插件

  • 開放式的原生插件框架

  • 強大的社區力量

解決“動態升級”問題思路

App發佈到應用市場後,往往需要一個比較長的審核周期,特別是蘋果商店;當App的重要功能出現Bug時,需要有快速的應對方案,重新發版本到應用市場肯定是慢了。為了快速的應對業務需求的變化和緊急Bug的處理,App對動態升級的需求越來越頻繁。所以實現一套動態升級方案,主要以模塊為單位展開。

從動態模塊的角度,將模塊分為三種:NA模塊、H5-offline模塊、H5-online模塊。

NA模塊的頁面都需要預置在App中,H5-offline模塊的頁面可以預置在應用中、也可以在應用安裝後再下載,H5-online模塊的頁面部署在伺服器端。

模塊的動態性主要體現有以下幾方面:

1、模塊的icon、名字可以動態修改;

2、模塊的三種類型之間可以互相切換,比如:某個模塊本來是NA實現,上線後發現有重大Bug,可以切換到H5-offine或者H5-online的實現,如果沒有這兩種實現,可以切換到一個“敬請期待”的線上頁面;

3、H5-offline模塊支持版本升級。

對於模塊動態升級,主要指的是H5-offline模塊,對H5-offline模塊的安全性要做充分的考慮:對模塊的離線包有進行加密處理,也要對離線包里的文件進行哈希校驗,防止被篡改。

技術架構

App開發框架應以模塊化設計為基礎,同時打通NA與H5兩種不同技術實現的業務。模塊主要分為兩種形態:

Ÿ   NA模塊

主要由NA頁面組成,也可以是NA容器載入的H5頁面,NA模塊可以對外提供api;

Ÿ   H5模塊

由H5頁面組成,可以是離線頁面也可以是線上頁面,H5模塊無法對外提供api,但是可以調用其他NA模塊提供的api;

實現模塊間的完全解耦,推薦模塊代碼不僅要邏輯上獨立,最好是採用子工程的方式實現物理上的分離。通過三條匯流排機制來實現模塊間的解耦:

Ÿ   API匯流排

主要提供模塊api註冊和調用兩個能力;

Ÿ   頁面導航匯流排

不區分NA和H5的融合頁面設計,頁面的打開和返回由頁面導航匯流排統一調度;

Ÿ   模塊匯流排

模塊匯流排從邏輯上確定了模塊的概念,同時支持模塊的遠程變更和動態升級;

採用業界最流行的Cordova框架來充當JS Bridge,Cordova擁有大量的社區插件可以使用,同時也提供了完整的插件開發規範,非常容易自定義開發插件。

開發框架應對API匯流排、頁面導航匯流排、模塊匯流排這些核心能力提供了cordova插件的實現,使H5頁面也能夠輕鬆的調用這些api,並且做到NA與H5調用無差異化。

開發框架發佈件

App開發框架庫:

framework(android&ios)

plugins(js)

App工程Demo(android&ios)

server:

發佈管理平臺的部署包、介面文檔、部署手冊等文件

產品白皮書:

對開發框架的使用進行詳細的講解

開發框架集成

  • 使用Cordova命令行創建項目工程;

  • 向工程中導入開發框架庫framework(android&ios);

  • 為主工程和子工程創建開發框架統一約定的配置文件;

  • 在App啟動的時候調用開發框架的初始化方法,進行初始化;

  • 集成完畢,可以在項目中正常使用開發框架的API

開發框架配置文件

在使用開發框架前,需要將api、page、module註冊到開發框架對應的匯流排中,除了調用對應的註冊外,開發框架推薦採用配置文件的註冊方式,只需要將數據配在配置文件中,開發框架會自動完成註冊。

開發框架的配置文件的命名約定為:開發框架名稱-子工程名.xml,其中主工程為開發框架名稱-main.xml,配置文件的約定放置的位置為:

Android放在主工程和子工程的assets的根目錄下;

iOS放在主工程和子工程的bundle文件中。

例子如下:

開發框架模塊匯流排

模塊匯流排主要有兩方面的功能:

在邏輯上,以模塊為基礎在開發框架配置文件中組織頁面和API,使得邏輯更清晰;

在功能上,模塊匯流排主要實現動態模塊的功能,對外提供兩個核心的API類:

ModuleBus提供模塊的原子化操作方法;

ModuleHelper封裝了ModuleBus提供的原子方法,實現了業務的串聯,是一個快捷使用API的輔助類

註:模塊匯流排將模塊的狀態分為:正常、未安裝、有新版本(分強制升級和非強制升級)、已下載、模塊數據被篡改。

開發框架頁面導航匯流排

主要功能:

對NA頁面和H5頁面的跳轉進行統一的調度,通過維護一個頁面的棧來實現。

核心API:

開發框架頁面API匯流排

API匯流排主要的作用是解耦模塊間的方法調用,提供的核心API只有兩個:

register

模塊實現API後,向匯流排註冊(一般由框架在解析配置文件時自動調用);

call

調用API,調用方通過API匯流排調用需要調用的API

使用舉例

登錄成功後,賬戶模塊保存登錄token,其他的模塊需要獲取token時,要調用賬戶模塊提供的API獲取。實現步驟如下:

1、賬戶模塊實現GetTokenAPI,調用APIBus.register(“m_account”, “getToken”,GetTokenAPI.class)註冊到API匯流排;

2、A模塊需要獲取token時,調用APIBus.call(“m_account”, “getToken”,“入參”)獲取token,返回值是APIResult對象(

對象主要包含狀態碼和業務字元串)。

開發框架擴展

提供模塊級別的開發框架:

  • NA模塊提供MVC、MVP、MVVM等開發框架;

  • H5模塊提供MVVM、SPA等開發框架;

  • H5模塊提供微信的相容支持



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • http://www.cnblogs.com/targethero/p/5080499.html https://www.cnblogs.com/xiaojiang1025/p/6131381.html interrupts 一個電腦系統中大量設備都是通過中斷請求CPU服務的,所以設備節點就需要在 ...
  • 實驗材料準備 1,下載實驗材料hit-oslab-linux-20110823.tar.gz(包含linux-0.11源碼,bochs模擬器等) 網址:http://www.ritchiehuang.cn/ 2,下載安裝gcc-3.4(編譯linux-0.11需要用到低版本gcc) 網址:old-r ...
  • 進程線程及其狀態 進程 進程的概念 進程就是執行中的程式。 進程的狀態 進程有五種狀態,分別是: 新建:進程正在被創建 運行:進程正在被執行 阻塞:進程等待某個事件(如I/O操作) 就緒:進程等待分配處理器 終止:進程完成執行 進程調度流程圖 線程 線程的概念 線程是程式執行流的最小單元,線程早期也 ...
  • 以童話的方式深入淺出地講述了 Cortex M7 核心 MCU 的 ITCM 和 ICache 的原理、優勢和用法。 ...
  • Mysql中函數和存儲過程的區別 存儲過程: 1、 可以寫sql語句 2、 inout,out構造返回值 3、 調用:call:存儲過程名稱 4、 可以返回結果集 函數: 1、 不可以寫sql語句 2、 使用return 返回值 3、 調用時,使用函數名()即可 4、 不能獲取結果集 ...
  • 2.Orders訂單表 ...
  • ...
  • 資料庫設計範式是一個很重要的概念,但是這個重要程度只是適合於參考。使用資料庫設計範式,可以讓數據表更好的進行數據的保存,因為在合理的設計,如果數據量一大也肯定會存在性能上的問題,所以在開發中,唯一可以稱為設計的寶典——設計的時候儘量避免日後的程式出現多表關聯查詢。 第一範式 所謂的第一範式指的是數據... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...