<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                手機現在是互聯網的最大入口。根據《中國互聯網報告》,手機網民已經超過8億,人均每天上網三個多小時。 如果你開始學習手機 App 開發,就一定會聽到 H5 這個詞。它是目前的主流開發技術之一,容易上手,開發周期短、成本低、兼容傳統 Web 開發。但是,很少有文章詳細介紹,H5 到底是什么技術,有什么原理,跟其他技術的差異在哪里。 ## 一、H5 的含義 表面上看,手機 App 都是同樣的東西,就是手機上的應用程序,點擊圖標就能運行,但是它們的底層技術不一樣。按照開發技術,App 可以分成三大類。 > * 原生應用(native application,簡稱 native App) > * Web 應用(web application,簡稱 Web App) > * 混合應用(hybrid application,簡稱 hybrid App) 這三類 App 的技術模型都不一樣,各有優缺點。企業一般會選擇其中一種作為主要技術棧,構建自己的手機 App。 ![](http://cndpic.dodoke.com/55aaabcfa74a8c9b2739bfa4b3821fd2) ## 二、原生應用 ### 2.1 概念 **原生 App 是專門為特定手機平臺開發的應用程序**,無法在其他平臺運行。一個手機軟件如果要同時支持蘋果手機和安卓手機,就需要為它們各寫一個原生 App。 歷史上,原生 App 最早出現,跟智能手機系統一起誕生。2007年6月 iPhone 誕生,2008年9月安卓誕生,就同時發布了自家平臺的原生 App 開發方法。 原生 App 使用與手機操作系統相同的語言。iOS 的原生 App 使用 Objective-C 語言或 Swift 語言,安卓使用 Java 語言或 Kotlin 語言。由于跟底層系統的語言和技術模型一致,所以原生 App 的性能和用戶體驗都很好。 ![](http://cndpic.dodoke.com/47b12821641148ecdd6ee64fb9cf933a) ### 2.2 優點 原生 App 的優點主要是兩個:(1)較好的性能和體驗;(2)可以使用系統的所有硬件和軟件 API,比如 GPS、攝像頭、麥克風、加速計、通知推送等等,能充分發揮系統的潛力。 ### 2.3 缺點 原生 App 的缺點主要是成本,每個手機平臺都要建立一個獨立的開發團隊,大公司一般都有 iOS 和安卓兩個開發團隊。如果出現第三個平臺(以前的 Windows Phone,也許是華為鴻蒙 OS),就要組建第三個團隊,成本就更高。 第二個缺點是,原生 App 使用底層操作系統的語言,都是很重的編譯型語言,開發和調試成本相對較高,時間周期長。 第三個缺點是,原生 App 必須下載安裝才能使用,只要升級版本,就必須重新下載安裝。用戶往往不愿意更新版本,廠商被迫不得不長期支持很久以前的舊版本。 ## 三、Web 應用 ### 3.1 概念 Web App 是使用網頁做的應用程序,必須在瀏覽器中使用。比如,你在瀏覽器中收發郵件,就是在使用 Web App。 Web App 主要使用網頁技術,即 HTML、JavaScript 和 CSS。2008年,w3c 組織發布了 HTML 第5版,簡稱 HTML 5,該版本大大增強了網頁的功能,使得網頁可以當作應用程序使用,而不僅僅是展示文字和圖片,這就是 Web App 的由來。 ### 3.2 優點和缺點 Web App 的優點是:(1)不需要下載安裝,打開瀏覽器就能使用,而且總是使用最新版本;(2)對于開發者來說,Web App 寫起來比較快,調試容易,不需要應用商店的批準就能發布。 Web App 的主要缺點有兩個。首先,瀏覽器提供的 API(即 Web API)很有限(目前只有相機、GPS、電池等少數幾個),大部分系統硬件都不能通過網頁訪問,也無法直接讀取硬盤文件,所以 Web App 無法充分利用平臺的硬件。 第二個缺點是,網頁通過瀏覽器渲染,性能不如原生 App,不適合做性能要求較高的頁面。 ### 3.3 WebApp 的劣勢 Web App 需要打開瀏覽器才能使用,這意味著,用戶必須記住如何導航到它,要么直接輸入網址,要么翻找書簽。這使得進入 Web App,遠不如原生 App 方便。這點很致命,事實表明,用戶偏好原生 App。 谷歌曾經調查了原生 App 和 Web App 各一千個,發現 Web App 可以覆蓋更多的用戶(1100萬 vs 400萬),但是原生 App 的用戶使用時間(188分鐘)遠超 Web App(9分鐘)。 ![](http://cndpic.dodoke.com/4d4d41af939839f93ace731e59f3bd79) ![](http://cndpic.dodoke.com/8861efbac2cce74d1ed52bb5460e384a) 另一項調查發現,用戶87%的時間用在原生 App,13%的時間用在 Web App。由于這個原因,企業很少開發 Web App,都把原生 App 當作首選。 但是,Web App 也不是毫無競爭力。根據調查,普通用戶每月平均使用27個原生 App,但訪問了100多個手機網站。這意味著,用戶的 App 使用時間都被頭部 App 占據了,小公司的 App 使用頻率非常低,獲客成本極高,最終變成僵尸 App。因此,小公司開發 Web App 更劃算,不僅成本低,而且可以服務更多的用戶,以及更好地宣傳自己(可以被搜索引擎收入)。 ### 3.4 PWA 為了推廣 Web App,谷歌公司的 Chrome 瀏覽器團隊做了很多努力。他們認為,Web App 足以滿足大多數 App 的需求,但是三大缺陷阻礙它的推廣。 1. 不能從手機的首屏直接進入。 2. 缺乏手機狀態欄和鎖屏時的通知推送能力。 3. 不支持脫機訪問(即斷網也能使用)。 為了解決這些問題,Chrome 團隊開發了新技術"漸進式 Web App"(Progressive Web App,縮寫 PWA)。它可以把網站緩存在手機里面,供離線時使用,還能在手機首屏生成圖標,直接點擊進入,并且有通知推送能力,也不帶有瀏覽器的地址欄和狀態欄,跟原生 App 的使用體驗非常接近。 但是,PWA 需要瀏覽器訪問一次網站,才能在首屏生成圖標,并且目前 iOS 系統的支持還不夠理想,所以還只是一項探索性質的技術,迄今為止缺乏足夠的成功案例。 ## 四、混合應用 ### 4.1 概念 混合 App (hybrid App)顧名思義就是原生 App 與 Web App 的結合。它的殼是原生 App,但是里面放的是網頁。可以理解成,混合 App 里面隱藏了一個瀏覽器,用戶看到的實際上是這個隱藏瀏覽器渲染出來的網頁。 ![](http://cndpic.dodoke.com/a51108eb9d0ed0a8ea65ac97c7c8ae81) 混合 App 的原生外殼稱為"容器",內部隱藏的瀏覽器,通常使用系統提供的網頁渲染控件(即 WebView 控件),也可以自己內置一個瀏覽器內核。結構上,混合 App 從上到下分成三層:HTML5 網頁層、網頁引擎層(本質上是一個隔離的瀏覽器實例)、容器層。 ### 4.2 API Bridge 混合 App 里面的網頁不同于普通網頁,可以調用底層系統所有的 API。奧秘就在于外層容器提供了 API Bridge,充當底層 API 的中介,允許內部的網頁調用底層。 所謂 API Bridge 就是容器在底層接口和網頁之間,建立一座橋梁,讓雙方通信。容器一旦接到網頁的請求,就根據請求去調用底層系統的 API,然后再返回結果給網頁。API Bridge 往往以 JavaScript 語言提供,方便網頁調用,這時又稱為 JSbridge。 ![](http://cndpic.dodoke.com/9c3a203f005c91d7871e82fc7860e00d) 不同容器的 API Bridge 是不一樣的。為某個容器寫的網頁,不能放在另一個容器使用,也無法在瀏覽器使用,除非網頁腳本做了兼容處理。 容器提供的 API Bridge 必須跟著平臺更新。比如,iOS 發了新版本,有了新的硬件 API,容器也必須跟著推出新版的 API Bridge。如果容器沒有跟上,開發者為了使用新的硬件,就只能想辦法自己來寫缺失的 API Bridge。 ### 4.3 優點 混合 App 同時具有原生 App 和 Web App的優點,又可以避免它們的一些缺點。具體來說,可以總結為三點。 (1)跨平臺 Web 技術是跨平臺的,開發者只寫一次頁面,就能支持多個平臺。也就是說,混合 App 只需要一個團隊就夠了,開發成本較低。 (2)靈活性 混合 App 的靈活性大,很容易集成多種功能。一方面,混合 App 很容易加載外部的 H5 頁面,實現 App 的插件結構;另一方面,Web 頁面可以方便地調用外部的 Web 服務。 (3)開發方便 Web 頁面的調試和構建,遠比原生控件簡單省時。頁面的更新也容易,只要在服務器上發布新版本,觸發容器內更新就可以了。另外,Web 開發人員也比較容易招聘,傳統的前端程序員可以承擔開發任務。 ### 4.4 缺點 混合 App 的主要缺點是,由于存在網頁引擎的中間層,所以性能比較欠缺,不僅不如原生 App,而且由于 WebView 不是全功能瀏覽器,可能比 Web App 都要慢一些。 另一個缺點是,由于頁面跨平臺,就無法使用只有特定平臺提供的功能,導致體驗不如純的原生 App。舉例來說,早期的時候,安卓有物理的后退按鈕,iPhone 沒有,頁面設計不得不考慮這一點。 ### 4.5 小程序 ![](http://cndpic.dodoke.com/e299d060ce5b3de03318a003d4784574) 所謂小程序,可以看作是針對特定容器的 H5 開發。微信本身是一個容器,開放自己的接口(JSbridge),外部開發者使用規定的語法,編寫頁面,容器可以動態加載這些頁面。 小程序對于微信官方的好處是,擴展了功能和應用場景,吸引外部開發者加入,繁榮了生態。對于外部開發者的好處是,有了流量入口,可以直接調用微信的各種功能(比如支付)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看