组件化遇到的问题

一、设置gitignore文件

上传文件的时候,我们git导入的第三方库完全可以忽略上传。当然还有一些其他你用不到上传的文件,都可以通过设置gitignore来避免这些文件的上传。

# macOS
.DS_Store

# Xcode
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa

# Bundler
.bundle

# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
# 
# Note: if you ignore the Pods directory, make sure to uncomment
# `pod install` in .travis.yml
#
Example/Pods/
Pods/

Example:就是你的项目名。

二、组件更新

业务组件更新的时候,需要先更新依赖的基础组件,否则在校验的时候会报错,找不到相关的文件或者方法。所以,流程如下:
1、我们需要先给修改的基础组件打个正式的tag,然后校验&push组件的xxx.podspec文件。
2、更新本地repo源,pod repo update xxx
3、校验我们的业务组件,通过后上传podspec文件。
具体的更新流程见:iOS组件化的创建、tag、提交到远端

三、modulemap

1、Module

Module(模块)-最小的代码单元。
一个Module是机器代码和数据的最小单位,可以独立于其他代码单位进行链接。通常,Module是通过编译单个源文件生成的目标文件。例如:前的test.m被编译成目标文件test.o时,当前的目标文件就代表了一个Module。

2、modulemap的作用

modulemap定义:用来描述头文件与module之间映射的关系的文件。

  • 提高编译时可扩展性,只编译或 include 一次。避免头文件多次引用,只解析一次头文件甚至不需要解析(类似预编译头文件)
  • 减少碎片化,每个 module 只处理一次,环境的变化不会导致不一致
  • 对工具友好,工具(语言编译器)可以获取更多关于 module 的信息,比如链接库,比如语言是 C++ 还是 C等等
umbrella作用

它是框架的“主”头文件

四、组件化架构

分为三个层级:
1、基础服务组件
三方库和项目基础类
2、中间服务件
打点、地图、共用类
3、业务组件
项目的各项业务拆分成组件。且相互之间没有关联,通过中间服务件相互调用,包含传参,代理、block的处理。


组件架构
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容