目的:针对一些大型的项目,因为面积太过庞大,功能模块之间存在大量的代码耦合,所以为了让每一个大的业务之间不存在太多的耦合度,采用了组件化的方式来处理。而且这些被分离的业务,可以随时引用到其他的项目中。以前在做“和助理”的时候,就做了这些工作,将该app中的同事圈这一个大功能模块提炼出来,作为组件。
好处:
- 加快编译速度(不用编译主客那一大坨代码了);
- 自由选择开发姿势(MVC / MVVM / FRP);
- 方便 QA 有针对性地测试;
- 提高业务开发效率
蘑菇街的组件化之路
静态库 (Static Library)
- 文件扩展名: .a 或 .framework (当包含资源文件时)
- 链接方式: 在编译时被完整地复制到可执行文件中
- 内存使用: 每个使用静态库的可执行文件都包含一份库的拷贝
- 更新机制: 需要重新编译整个应用才能更新库
动态库 (Dynamic Library)
-
文件扩展名: .dylib 或 .framework (当设置为动态链接时)
-
链接方式: 在运行时被加载,多个进程可以共享同一份内存中的库代码
-
内存使用: 系统内存中只保留一份库的拷贝
-
更新机制: 可以单独更新库文件而不需要重新编译主程序
.a和framework的区别?