iOS組件化開發· 什麼是組件化

来源:https://www.cnblogs.com/xujinzhong/archive/2018/02/12/8444810.html
-Advertisement-
Play Games

越來越多公司,開始了組件化,你還要等到什麼時候...... 說到開發模式,我們最熟知的開發模式 MVC 或者最近比較熱門的MVVM。但是我今天說的組件化的開發,其實MVC不是一類的。它其實是····· 在實際工作中,尤其是參與過比較大的項目,同時,參與開發的成員比較多的情況下,隨著時間的不停的開發, ...


越來越多公司,開始了組件化,你還要等到什麼時候......

說到開發模式,我們最熟知的開發模式 MVC 或者最近比較熱門的MVVM。但是我今天說的組件化的開發,其實MVC不是一類的。它其實是·····

在實際工作中,尤其是參與過比較大的項目,同時,參與開發的成員比較多的情況下,隨著時間的不停的開發,業務線不斷複雜,就會遇到下麵一系列的問題。真的好煩哦·····

  • 1、代碼耦合很嚴重。一個控制器的存在需要依賴很多控制器,一個控制器有會被很多控制器依賴。
  • 2、項目逐漸變臃腫,龐大,複雜。每次編譯都會需要很長時間。
  • 3、整個項目要保持一致的開發模式,喜歡MVC的不擅長MVVM,喜歡MVVM的感覺MVC太Low
  • 4、不能進行獨立測試

傳統的團隊開發模式的問題在不斷的迭代中逐漸的暴露出來。所以我們應該瞭解更為先進高效的團隊開發模式,那就是!組件化開發

下麵就為大家詳細的介紹一下組件化或者叫模塊化開發


什麼是組件化開發

組件化開發,就是將一個臃腫,複雜的單一工程的項目, 根據功能或者屬性進行分解,拆分成為各個獨立的功能模塊或者組件 ; 然後根據項目和業務的需求,按照某種方式, 任意組織成一個擁有完整業務邏輯的工程。這就是所謂的組件化開發。

組件化開發的優點

既然針對上述問題提到了組件化開發,那就要必要交代一下組件化模塊化開發的好處。這樣在進行對比的時候,可以更加清楚的定位我們想要解決的問題。開判斷組件化開發是不是我們需要的團隊開發模式。

  • 1、組件之間相互獨立。各組件開發成員之間的代碼想相互獨立編寫的,獨立編譯,獨立運行和獨立測試的。
  • 2、資源的重覆里用,尤其是功能性,工具性的代碼,可以很輕鬆的重覆里用
  • 3、迭代的效率提高。通過迭代進行功能的增減,只需要進行組件的拆分和組合。很方便也很高效

組件化開發需要註意的問題

新項目在進行組件化拆分的時候;或者老項目就行組件化重構的時候需要考慮一下幾個問題。比較對於耦合度很高的老項目,解耦並不是一件容易的事情。

  • 1、 組件拆分的依據,即要把哪些內容劃分成為一個組件?
    可以按照以下幾個方面進行拆分
    • 基礎組件
      全局常量、常用巨集、常用的分類、常用三方框架的隔離封裝、還有一些比較常用的小功能類
    • 功能組件
      圖片輪播器、圖文菜單、視頻中的彈幕、相機、錄像、二維碼、下載功能、個性定製的提示框等等,都可以封裝在一個組件中
    • 業務模塊
      例如電商的購物車,訂單管理、下單流程、個人中心
      再例如視頻或者直播的會員管理、視頻播放全屏,右下角小屏幕,緩存等等
  • 2、組件化存在方式
    一直在說組件化,到底什麼是組件呢。組件的存在方式又是什麼呢?
    組件形式: 每個組件都是以pod庫的形式存在
    組件內部:組件內部按照自己喜歡的開發模式以文件夾的形式進行劃分
    組件測試:每個組件對單獨對應一個demo,用來完成該組件的功能測試,這樣測試機能被解耦開

  • 3、組件的組合方式
    既然組件的存在方式是以每個pod庫的形式存在的。那麼我們組合組件的方法就是通過利用CocoaPods的方式添加安裝各個組件。

組合在一起的組件,根據需求可以用過組件自己提供的API進行通訊,或者有中間件統一進行組件中的通訊,在後面的文章中,我會一一介紹

總結

組件化開發這個專題後面的內容會不斷的更新,歡迎大家關註!



作者:Biharry
鏈接:https://www.jianshu.com/p/c8f49ac9311f
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在編寫腳本的時候經常會遇到這種情況,某些程式的命令執行的之後可能會要求用戶進行輸入,這個時候就需要一些特殊寫法來應對這種問題了。這裡參考 "這篇文章" 提到可以使用 delimiter 分界符來解決。 也就是說在 Shell 將 delimiter 分界符之後的的所有內容都會當做輸入,直到遇到第二個 ...
  • Nagios Check_hp HP 2014年11月18日 下午 08:49 https://IP:2381 [root@nagios ~]# tar zxvf check_hp_bladechassis-1.0.1.tar.gz [root@nagios check_hp_bladechassi ...
  • 註意:修改完(visudo)之後,需要visudo -c檢查一下是否有錯誤。 sudo -l查看用戶擁有的許可權。 1、sudoers配置文件別名介紹 (1)Host Aliases(主機別名) 生產環境中一般不會設置主機別名,一般主機別名不太常用 配置服務 創建日誌保存目錄 [root@localh ...
  • 今天閑下來,試試曾經成功安裝過的Google-chrome的安裝 先加上幾個參考的鏈接: 一個是更改yum配置文件直接用yum install的,沒看他貼出安裝成功的照片,自己也試過,不行 http://www.linuxidc.com/Linux/2016-05/131538.htm 去掉vim ...
  • 位置是從1 開始 substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字元 substr("ABCDEFG", 1); //返回:ABCDEFG,截取所有字元 substr("ABCDEFG", -0); //返回:ABCDEFG,截取所有字元 -0=0,都是從左邊截 su ...
  • 一,assign 代表設置時候直接賦值,而不是複製或者保留它。 二,retain. 會在賦值的時候把新值保留。此屬性只能用於Object-C對象類型。 三,copy 在賦值時,將新值複製一份,複製工作由copy執行,此屬性只對那些實行了NSCopying協議的對象類型有效。 參考資料:《iPhone ...
  • 簡介 在開發過程中,經常會使用到第三框架,我們通過一個pod install命令,很方便的就將第三方框架加到我們自己的項目中。 如果我們也想將自己寫的組件或庫開源出去,讓別人也可以通過pod install命令安裝自己的框架該怎麼做呢?下麵,我就教大家一步一步的將自己的pods發佈到CocoaPod ...
  • iOS開發過程中很大一部分內容就是界面佈局和跳轉,iOS的佈局方式也經歷了 顯式坐標定位方式 --> autoresizingMask --> iOS 6.0推出的自動佈局(Auto Layout)的逐步優化,至於為什麼推出自動佈局,肯定是因為之前的方法不好用(哈哈 簡直是廢話),具體如何不好用以及 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...