pilgrim.ph
Pilgrim 是一个 Swift 依赖注入库,具有以下特性
- 最小运行时库,与纯 Swift(结构体、类、协议)以及必要时的基础 Objective-C 类一起工作。
- 易于安装。支持 iOS、Mac 和 Linux。无需编译时织入。
- 类型安全。因为它是纯 Swift(使用高阶函数),所以不需要反射或 Objective-C 运行时。
- 生命周期管理:
shared
、weakShared
、objectGraph
(由 Typhoon 引入的 DI 构念,适用于桌面和桌面应用)和unshared
。 - 可用于 SwiftUI、UIKit 和 Cocoa 应用。
- 简单灵活。例如,它可以轻松地让两个符合同一协议的可注入实例存在。
- 提供 组合根 的概念,其中应用程序架构中的关键角色及其交互被定义为图。这是您的应用程序架构故事之处。这些组装的实例可以使用属性包装器注入到顶级类中,如 UIKit 应用中的视图控制器。
- 运行时参数。可以作为基于运行时参数和关键架构角色的组合生成新实例的工厂使用。
- 是 Typhoon 的官方继承者,基于 jkolb 的优秀作品 FieryCrucible。
您可以在采用面向对象编程范例或混合面向对象和函数式风格的的应用程序中使用 Pilgrim。
快速入门
您想在两分钟内开始将依赖注入应用于代码吗?请遵循 快速入门 指南!
class AppDelegate: UIResponder, UIApplicationDelegate {
@Assembled var assembly: ApplicationAssembly
@Assembled var cityRepo: CityRepository
@Assembled var rootViewController: RootViewController
var window: UIWindow?
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
window = assembly.window()
window?.makeKeyAndVisible()
if (cityRepo.loadSelectedCity() == nil) {
rootViewController.showCitiesListController()
}
return true
}
}
以下是完成 快速入门 后您的代码可能的样子。
安装
CocoaPods
pod 'Pilgrim-DI'
其他安装方法(Swift Package Manager等)即将推出!
示例应用
这是一个示例应用 / 快速启动模板,让您快速开始。
用户指南
最好快速上手方法是尝试快速启动和示例应用。之后,用户指南将是您的参考。
什么是依赖注入?
不清楚?请访问pilgrim.ph网站上的介绍。然后回到这里。
反馈
我不确定 how to do [xyz]
如果你在快速入门或用户指南中找不到需要的内容,请在StackOverflow上提问,使用pilgrim标签。
想贡献代码吗?
太好了!贡献指南以及详细的文档将在接下来的几天内发布。
我发现了bug,或者有功能请求
请在GitHub上提出一个issue。
谁在使用它?
你在使用Pilgrim,想支持免费和开源软件吗?给我们发送邮件或PR,把你的标志加到这里。
你已经看到了光?
Pilgrim是一个非营利性、社区驱动的项目。我们只要求如果你觉得它有用,请在Github上star我们或者在推特中提及我们(@doctor_cerulean)。如果你已经编写了与Pilgrim相关的博客或教程,或者发布了新的由Pilgrim支持的应用程序,我们也非常愿意听到这些。
Pilgrim由AppsQuick.ly赞助并主导,全世界各地的贡献者提供了贡献。
许可证
版权所有 (c) 2020 Pilgrim 贡献者