日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git公有转私有_【IT新手之路】客户端组件化之私有库搭建

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git公有转私有_【IT新手之路】客户端组件化之私有库搭建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

在組件化之前,小花錢包 App 項目代碼,在代碼結構,代碼質量和層級劃分上都處于一個比較亂的狀態。這樣的項目條件在業務發展不是很快的時候,是可以適應需求的,并且能一定程度地保證開發效率。但隨著業務方向的多樣和產品需求的快速迭代要求,這時單一工程開發模式就會顯露出一些弊端:
  • 耦合比較嚴重(因為沒有明確的約束,「組件」間引用的現象會比較多)

  • 容易出現沖突,包括代碼沖突和布局沖突等情況(尤其是使用 Xib和storybord,還有就是 Xcode Project)

  • 項目拓展性不高,復用和可移植性不強

  • 業務方的開發效率不夠高(只關心自己的組件,卻要編譯整個項目,與其他不相干的代碼糅合在一起)

為了解決這些問題,就采取了「組件化」策略,注:這里的組件化,也就是大家說的『模塊化』,不是在主工程中用文件夾來區分模塊,而是指將獨立模塊抽調成 CocoaPods 庫、或者其他形式的庫文件,成為一個獨立工程,每個組件即代表一個 CocoaPods 私有庫。

??一、為什么要組件化?有哪些優勢?

1.組件和組件之間沒有明確的約束;

2.組件化采用cocoapod管理,同屬于git私有庫,便于代碼復用和管理,解決人多(更好的協作)、需求多(更好的功能模塊劃分)的問題;

3.組件單獨開發、單獨測試,不用揉入主項目中開發,測試也可以針對性的測試;

4.解決項目模塊間的代碼耦合問題;

5.自由選擇開發姿勢(MVC / MVVM)

6.提高業務開發效率

?二、怎么劃分組件化?

1.基礎組件

1.按功能分庫,不涉及產品業務需求,跟庫Library類似

2.通過良好的接口供上層業務組件和功能組件調用

3.不寫入產品定制邏輯,通過擴展接口完成定制

2.功能組件

1.App產品內定制通用組件;(各個業務模塊依賴使用,但需要保持好定制擴展的設計)

2.公共通用組件,能夠完成某個功能點,例如輪播器組件;

3.對外暴露數據交互接口,內部實現細節只有組件自己清楚,數據交互方面一般使用代碼、block和屬性來完成,不建議組件中使用通知進行交互,不利于維護管理;

3.業務組件

1.業務功能間相對獨立,相互間沒有Model共享的依賴;

2.業務之間的頁面可以直接進行跳轉;

3.業務之間的邏輯Action調用只通過由當前業務模塊提供,各自與后臺交互;

?三、組件化工程需要解決的問題

資源打包

1.對于 UI 界面,需要做的是資源打包,在模塊拆分中,要非常注意資源分割。因為業務模塊的劃分,不僅僅是是代碼抽出,也有資源抽出。

2.資源庫包括但不僅限于:.xib 文件、聲音資源、圖片資源、純文本文件以及視頻資源

3.所有的資源文件,應當單獨創立 Res 文件夾,放入其中,并在 .podspec 中表明資源文件路徑 s.resources = ["Source/*/.xib", "Source/Res/*.xcassets"]

??四、組件維護問題?

1.gitLab統一管理

2.組件的維護持續更新是需要一直做的,完善組件功能,優化組件性能,提高組件適用范圍

3.組件的管理跟git的tag是一一對應,每個tag版本都要有對應的記錄

實操部分(以網絡庫組件為例說明)

??一、 設計理念

關于網絡通信模塊的設計,我個人認為應該是每一個HTTPS請求都應該獨立互不干擾,就是你封裝的POST/GET方法都會創建一個臨時的對象,而長連接一般只維持一個實例對象采用單例的方式創建。我會為每一個HTTPS 接口請求創建一個API對象,在里面請求數據,當然了為了避免請求代碼的重復編寫可以建立一個BASE API類,子類調用父類的請求方法就行了,不同的只是接口與參數。

? ?二、 終端操作,組件創建

準備工作(中心庫的創建)

1.首先在gitLab上創建一個項目存放私有Repo源,repo地址https://code.xhqb.io/appComponent/XHSpecs.git ,這個地址也叫中心庫,以后私有組件都會存放在這里;

2.本地添加私有源 終端執行命令pod repo add XHSpecs https://code.xhqb.io/appComponent/XHSpecs.git(這個步驟已經完成,后續無需再執行)

3.以上操作完成 進入~/.cocoapods/repos目錄下至少會有2個文件夾XHSpecs和master, master文件下面存放的是公有源文件,XHSpecs目錄下存放我們私有源文件

4.基本準備工作完成 ?#### 創建組件項目(以 XHNetwork 為案例)

1.0 新建項目XHNetwork,并在XHNetwork.xcodeproj同級目錄中添加Classes文件夾,用來存放pod需要導入的文件。

2.0 終端cd至XHNetwork目錄下執行命令pod spec create XHNetwork。

3.0 執行命令vim XHNetwork.podspec編輯podspec文件,具體如何編輯可參考第三部分spec文件寫法說明。

4.0 編輯完成XHNetwork.podspec文件之后,執行pod lib lint --allow-warnings命令,進行本地驗證,驗證通過執行以下步驟。

5.0 執行git操作:

5.1 git add .

5.2 git commit -m 'log'

5.3 git remote (如果沒有分支origin,執行5.3.1命令)

5.3.1?git remote add origin https://code.xhqb.io/appComponent/XHNetwork.git

5.4 git push origin master

5.5 git tag -a 'version' -m 'log' tag一定要和podspec中的version一致

5.6 git push --tags --tags為了把剛才添加的tag提交上去

6.0 執行命令 pod spec lint --allow-warnings 此步驟同步驟4操作一致,步驟4為本地驗證,步驟6為spec文件驗證,會注冊驗證結果

6.1 如果此私有組件依賴于其他私有組件,那么執行命令改為 pod spec lint --allow-warnings --source=https://code.xhqb.io/appComponent/XHSpecs.git,命令后面跟上私有源地址

7.0 執行命令pod repo push XHSpecs XHNetwork.podspec --verbose --allow-warnings 注:XHSpecs即私有源中心倉庫,此步驟為將驗證成功的podspec索引文件上傳到中心庫

7.1 如果步驟6命令有跟私有源地址,那么此命令也應該加上私有源地址

8.0 除了步驟6和步驟7這種驗證上傳方式,另外提供trunk驗證方式;

8.1 pod trunk register 郵箱地址 ‘用戶名’ —verbose //郵箱注冊trunk

8.2 進入郵箱,點擊trunk鏈接驗證

8.3 驗證成功之后,執行 pod trunk push XHNetwork.podspec ?####?

?三、spec文件寫法說明 ?

?Pod::Spec.new do |s|?

  • ?name: 組件名稱 s.name = "XHNetwork"?

  • ?version : 組件版本,和項目tag一致,install命令會根據這個版本號去下載指定tag版本的代碼 s.version = "0.0.7"?

  • summary : 摘要,長度一般比description短 s.summary = "XHNetwork"

  • description : 組件描述,文本長度必須比summary文本長度長 s.description = "A short description of XHNetwork lib" ?

  • ?homepage : 組件主頁地址 s.homepage = "https://code.xhqb.io/appComponent/XHNetwork" ?

  • license : 授權協議,默認填寫為MIT` s.license = "MIT" # s.license = { :type => "MIT", :file => "FILELICENSE" } ?

  • author : 作者、郵箱 s.author = { "趙正華" => "zhaozhenghua@xhqb.com" }?

  • ?source : 項目git地址,tag值與s.verison版本一致 s.source = { :git => "https://code.xhqb.io/appComponent/XHNetwork.git", :tag => "#{s.version}" } ?

  • 源文件 Classes文件夾必須放在根目錄下才能被找到 s.sourcefiles = "Classes/.{h,m}" #spec.source_files = 'Classes//.{h,m}', 'MoreClasses/*/.{h,m}' ?

  • 公有頭文件 #s.publicheader_files = "Classes/*/.h"

匹配規則如下:

1.*匹配所有文件

2.c*匹配以名字C開頭的文件

3.*c匹配以名字c結尾的文件

4.c匹配所有名字包含c的文件

5.**文件夾以及遞歸子文件夾

6.?任意一個字符(注意是一個字符)

7.[set] 匹配多個字符,支持取反

8.{p,q} 匹配名字包括p 或者 q的文件?

  • 圖片及音頻資源文件的加載方式 #spec.resource = 'Resources/HockeySDK.bundle' #spec.resources = ['Images/.png', 'Sounds/'] ?

  • 是否是ARC,默認true,如果不是,會自動添加-fno-objc-arc compiler flag s.requiresarc = true ?支持的平臺,如果不寫默認支持所有平臺,以下表示只支持ios平臺,系統版本8.0以上 s.platform = :ios, "8.0" ?

  • 依賴的系統的框架 s.frameworks = 'QuartzCore', 'CoreData' ?

  • 如果在高版本的OS中調用新增的功能,并且在低版本的OS中依然能夠運行,那么就要用到weakframeworks.如果引用的某些類或 者接口在低版本中并不支持,對于不支持的接口,可以在運行的時候判斷,這樣程序不會出錯,如果不weak引用,程序在低版本下啟動的時候就會崩潰掉 s.weakframework = 'MessageUI' ?

  • 配置信息,根據個人需要填寫 # s.xcconfig = { "HEADERSEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } ?

  • 依賴的第三方, 沒有指定第三方依賴庫,默認去下載最新的庫版本 s.dependency 'XHAFNetworking' ?

? ?四、私有組件配置用法

結尾

上面就是在小花錢包項目中進行 模塊化/組件化 的搭架操作流程,希望這篇文章能對有同樣需求的人有所幫助。如果各位在看了這篇文章之后還有什么疑問或者是發現有什么問題都可以在文后面留言。?共同進步,Best wishes!

總結

以上是生活随笔為你收集整理的git公有转私有_【IT新手之路】客户端组件化之私有库搭建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。