组件化,模块化以及插件化 && 动态库和静态库的区别

41 阅读1分钟

目的:针对一些大型的项目,因为面积太过庞大,功能模块之间存在大量的代码耦合,所以为了让每一个大的业务之间不存在太多的耦合度,采用了组件化的方式来处理。而且这些被分离的业务,可以随时引用到其他的项目中。以前在做“和助理”的时候,就做了这些工作,将该app中的同事圈这一个大功能模块提炼出来,作为组件。

 好处:

  • 加快编译速度(不用编译主客那一大坨代码了);
  • 自由选择开发姿势(MVC / MVVM / FRP);
  • 方便 QA 有针对性地测试;
  • 提高业务开发效率

蘑菇街的组件化之路

www.jianshu.com/p/67a6004f6…

www.jianshu.com/p/afb9b5214…

www.jianshu.com/p/06e9aa0da…

静态库 (Static Library)

  • 文件扩展名: .a 或 .framework (当包含资源文件时)
  • 链接方式: 在编译时被完整地复制到可执行文件中
  • 内存使用: 每个使用静态库的可执行文件都包含一份库的拷贝
  • 更新机制: 需要重新编译整个应用才能更新库

动态库 (Dynamic Library)

  • 文件扩展名: .dylib 或 .framework (当设置为动态链接时)

  • 链接方式: 在运行时被加载,多个进程可以共享同一份内存中的库代码

  • 内存使用: 系统内存中只保留一份库的拷贝

  • 更新机制: 可以单独更新库文件而不需要重新编译主程序

.a和framework的区别?