4種React Native熱更新方案的比較

来源:https://www.cnblogs.com/html5study-1/archive/2023/08/01/17598607.html
-Advertisement-
Play Games

> [TOC] ## 🎈 為啥要禁止? - 由於前端頁面會調用很多介面,有些介面會被別人爬蟲分析,**破解後獲取數據** - 為了 **杜絕** 這種情況,最簡單的方法就是禁止人家調試自己的前端代碼 禁止調試 ## 🎈 無限 debugger - 前端頁面防止調試的方法主要是通過不斷 `debu ...


轉載自:https://www.jianshu.com/p/8f423e52b5d1

最近剛完成了一個產品的熱更新功能,頗有感慨。趁著有點時間寫點東西,希望能對其他開發者有點幫助吧。

為什麼需要做熱更新?

這個問題不是本文的重點,但既然這篇文章是關於 React Native 熱更新的,就大概說一下吧。

  • 快速發佈新版本。
    或許有人會說,如果不計算打包和提交的工作,一個新包提交到應用商店後,通常在兩三天之內就會通過審核,慢的話通常不會超過一個星期,快的話24小時內就能通過審核,有必要去糾結這點時間麽?
    其實不然。很多開發者應該都遇到過類似這樣的情形:一個新包剛提交或發佈沒多久,就發現了某個地方需要修改,或許僅僅是個樣式,又或者是個小Bug。是不是很頭痛?如果有了熱更新,那就好解決了。
  • 做 A/B 面的產品。
    因為某些原因(或許是某些不可描述的原因),需要讓應用商店的審核人員與真實的用戶看到的是不一樣的內容,以便快速通過審核。

綜上,這就是為什麼絕大部分React Native App都會做熱更新的主要原因。

4種React Native熱更新方案的比較

好吧,前面廢話了一下。現在進入正題。
在React Native項目中,常見的有四種做熱更新的方案。下麵一一對其進行介紹和比較。

1. CodePush

官網:https://appcenter.ms/
由鼎鼎大名的微軟出品,是App Center的一部分。如果不考慮穩定性,這絕對是不二選擇。但是非常可惜,因某些不可言表的原因,其服務在中國非常不穩定。
有人說不選擇CodePush的原因是因為它的伺服器在海外,速度慢。其實慢與快不是考慮的重點(除非慢到極端),一個React Native App的Js bound通常只有幾M,能達到20M的都是罕見的了,在如今的網路環境下,這根本就不是個事。所以考慮的重點其實是穩定性。
經本人在公司的網路環境下測試,發佈新版不成功的概率超過10%,更新不成功(無法連接、中斷、以及不知是何原因)的概率超過20%。這還僅僅是在一個網路環境下和某個時間段內,如果放大到全國和所有時間段,那這個概率應該還會提高。
因此,如果你的產品是面向海外用戶的,那麼就選擇CodePush,不用考慮其它。如果是面向國內用戶的,那麼不建議使用。

2. 中文社區的CodePush

官網:https://code-push.cn/
由CodePush中文社區出品。其實就是微軟的CodePush,將伺服器改在了國內,然後在用法上進行了一些封裝和簡化。我們公司現在用的是這個。之所以選擇它,是因為我最早測試的是微軟的CodePush,然後順理成章就選擇了這個。
其特點是使用簡單。雖然仍然是微軟的CodePush,但經過二次封裝,其用法要比微軟的CodePush更簡單直接。當然,之所以有這種感覺,也有可能是我在折騰微軟的CodePush時是剛開始接觸,而在使用中文社區的CodePush時已經有了前面的積累,所以就感覺上更簡單了。

3. Pushy

官網:https://pushy.reactnative.cn/
由React Native中文社區出品。正是由於微軟的CodePush在中國不穩定,所以促使中文社區的開發者們開發出了一些類似功能的服務。Pushy應該算是其中的佼佼者。
經在公司的網路環境下測試,其服務還算比較穩健。
從用法上來看,其實也能看到一些CodePush的影子。當然,熱更新功能最核心的無外乎就是上傳與更新,也不可能玩出朵花來。
對比中文社區的兩個產品,感覺中文社區的CodePush是在微軟的CodePush上做減法,而Pushy是在微軟的CodePush上做加法。

4. 自建CodePush伺服器

先說結論:自己玩玩可以,但如果要用在公司的產品上,強烈不建議。
還是由於微軟的CodePush在中國不穩定,所以網上有些文章介紹用一些開源項目搭建自己的CodePush伺服器。講真,我還真試過。下麵說說本人的一個小故事。
本人從參考網上的各種文章、自己動手嘗試、到最後選定方案並實現在公司的產品中,共用了約三天時間,所有這些工作由本人一個人完成,並得到了項目老大的表揚。後來我想,既然可以用開源項目自己搭CodePush伺服器,幹嘛不自己搭一個呢?於是在網上搜各種文章並照著做,感覺差不多了後,興衝衝地跑去找老大,本以為會再次得到表揚,沒想到老大說:自己公司的業務都忙不過來,幹嘛要花時間搞這個?幹這種事的都是閑得Q疼的。你能保障服務的穩健性麽?能承受多少用戶同時更新?。。。。。然後吧啦吧啦說了一大推,說得我直冒冷汗,感覺老大是感覺我太閑了。~_^
後來想想,確實如此。先不說網上那些開源項目是否經歷過商業產品的驗證,以及代碼質量如何,就算這些都沒問題,也不是放到伺服器上跑起來就行的。保障服務的穩健和大訪問量的可靠性也是一項專門的運維技術活。
開發成本、時間成本、運維成本、帶寬成本,這些都是開發中需要重點考慮的。
有些人(比如我們老大)下意識就能想到這些,而有些人(比如我)卻不一定。或許這就是一個開發人員成熟度的體現吧。

 


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

-Advertisement-
Play Games
更多相關文章
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • # 當我們想要體驗體驗不同類型的Linux的使用技巧,節省個人開銷,可以在Windows系統上創建其他系統的虛擬機,可以創建虛擬機常用的應用有: VMware Station VirtualBox 此篇文章使用VirtualBox,結合Vagrant來實現Linux虛擬機的創建。使用這兩種應用結合的 ...
  • ### 企業現狀 **目前絕大多數企業運維人員的工作環境都是Windows下通過SSH工具(如XShell等)遠程連接千百裡外的伺服器進行管理和維護的。** 而且學Linux運維,99.9%知識與硬體無關,用虛擬機足矣。 08年以前沒有虛擬化概念。買伺服器,放機房。 > 類似點蠟燭 **現在80%中 ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230801154428674-66504638.png) # 1. 分組 ## 1.1. 把相似的行數據聚集在一起 # 2. SQL分組的定義 ## 2.1. 數學上的“群” ...
  • 2016年證監會《證券公司全面風險管理規範》提出建立健全[數據治理](https://www.dtstack.com/?src=szsm)和質量控制機制。 2018年證監會發佈《證券數據治理操作指引(征求意見稿)》及《證券期貨業數據分類分級指引》。同年,國家工信部發佈[DCMM數據管理能力成熟度評估 ...
  • Oracle資料庫是一款全球領先的關係型資料庫管理系統,NineData發佈對Oracle資料庫的SQL開發支持。開發者可以使用NineData便捷查詢雲端、本地、多個版本的Oracle資料庫。NineData在近期的迭代中提供了對Oracle資料庫的支持。具有可視化工具、AI智能優化、SQL智能提... ...
  • # 1 搭建準備 | HostName | IP | 記憶體 | CPU | 磁碟 | | | | | | | | cdp01 | 172.29.0.110 | 16G | 4核 | 100G | | cdp02 | 172.29.0.111 | 16G | 4核 | 100G | | cdp03 | ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 你不會還不知道iframe不能嵌入百度首頁吧?為了豐富用戶體驗,我們常常會將其他網站的內容嵌入到自己的網頁中。然而,隨之而來的是一個常見的問題:Iframe 嵌入網站無法正常使用。你是否也曾遇到過這個困擾,不知道該如何解決呢?文將深入探討 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...