ember 中的应用程序初始化程序和服务有什么区别?

What is the difference between application initializer and a service in ember?

由于我是 ember 的新手,我对应用程序初始化程序和服务感到困惑。据我所知,他们都在做同样的工作,并且都拥有应用程序的生命周期。谁能用一个清楚的例子解释一下它们之间的区别?

服务可以注入应用程序的其他区域,而应用程序初始化程序不能。

当您想要跟踪应用程序级别的状态时,服务很有用,例如侧边栏是否 open/closed -- 或者如果您想要管理模式的 open/closed 状态-- 或者如果你想管理一个 websocket 连接。因为服务是可注入的,所以它们允许应用程序的其他区域与服务的功能、属性等进行交互。

Application Initializers 实际上只是 运行 在启动期间,在 _application 的 initialization 期间。这里的一个常见模式是,如果你想将服务注入所有路由或其他东西。

初始化器文档:https://guides.emberjs.com/release/applications/initializers/

服务文档:https://guides.emberjs.com/release/applications/services/

Application Initializer 是我们初始化或注册或注入新工厂 classes 或任何服务的地方。 并且初始化的服务和应用程序初始化器 class(factory) 都可以像单例一样将它们的状态共享到它们使用的每个路由。 使用 applicationInstance.lookup() 方法,我们甚至可以使用任何初始化的应用程序初始化器 class,它们在创建时最初没有被注入,并且也可以共享它们的状态